blob: b832b89bb0c1d6222cd6a9cc50f1ac653b4a9ab1 [file] [edit]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
# RUN: llc -mtriple=riscv64 -mattr=+experimental-p -verify-machineinstrs -run-pass=riscv-opt-w-instrs %s -o - | FileCheck %s
---
name: merge_sextw_removed
tracksRegLiveness: true
body: |
bb.0.entry:
liveins: $x10, $x11, $x12
; CHECK-LABEL: name: merge_sextw_removed
; CHECK: liveins: $x10, $x11, $x12
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
; CHECK-NEXT: [[ADDW:%[0-9]+]]:gpr = ADDW [[COPY]], [[COPY1]]
; CHECK-NEXT: [[ADDW1:%[0-9]+]]:gpr = ADDW [[COPY1]], [[COPY2]]
; CHECK-NEXT: [[ADDW2:%[0-9]+]]:gpr = ADDW [[COPY]], [[COPY2]]
; CHECK-NEXT: [[MERGE:%[0-9]+]]:gpr = MERGE [[ADDW]], [[ADDW1]], [[ADDW2]]
; CHECK-NEXT: $x10 = COPY [[MERGE]]
; CHECK-NEXT: PseudoRET
%0:gpr = COPY $x10
%1:gpr = COPY $x11
%2:gpr = COPY $x12
; ADDW produces sign-extended results
%3:gpr = ADDW %0, %1
%4:gpr = ADDW %1, %2
%5:gpr = ADDW %0, %2
%6:gpr = MERGE %3, %4, %5
%7:gpr = ADDIW %6, 0
$x10 = COPY %7
PseudoRET
...
---
name: mvm_sextw_removed
tracksRegLiveness: true
body: |
bb.0.entry:
liveins: $x10, $x11, $x12
; CHECK-LABEL: name: mvm_sextw_removed
; CHECK: liveins: $x10, $x11, $x12
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
; CHECK-NEXT: [[ADDW:%[0-9]+]]:gpr = ADDW [[COPY]], [[COPY1]]
; CHECK-NEXT: [[ADDW1:%[0-9]+]]:gpr = ADDW [[COPY1]], [[COPY2]]
; CHECK-NEXT: [[ADDW2:%[0-9]+]]:gpr = ADDW [[COPY]], [[COPY2]]
; CHECK-NEXT: [[MVM:%[0-9]+]]:gpr = MVM [[ADDW]], [[ADDW1]], [[ADDW2]]
; CHECK-NEXT: $x10 = COPY [[MVM]]
; CHECK-NEXT: PseudoRET
%0:gpr = COPY $x10
%1:gpr = COPY $x11
%2:gpr = COPY $x12
%3:gpr = ADDW %0, %1
%4:gpr = ADDW %1, %2
%5:gpr = ADDW %0, %2
%6:gpr = MVM %3, %4, %5
%7:gpr = ADDIW %6, 0
$x10 = COPY %7
PseudoRET
...
---
name: mvmn_sextw_removed
tracksRegLiveness: true
body: |
bb.0.entry:
liveins: $x10, $x11, $x12
; CHECK-LABEL: name: mvmn_sextw_removed
; CHECK: liveins: $x10, $x11, $x12
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
; CHECK-NEXT: [[ADDW:%[0-9]+]]:gpr = ADDW [[COPY]], [[COPY1]]
; CHECK-NEXT: [[ADDW1:%[0-9]+]]:gpr = ADDW [[COPY1]], [[COPY2]]
; CHECK-NEXT: [[ADDW2:%[0-9]+]]:gpr = ADDW [[COPY]], [[COPY2]]
; CHECK-NEXT: [[MVMN:%[0-9]+]]:gpr = MVMN [[ADDW]], [[ADDW1]], [[ADDW2]]
; CHECK-NEXT: $x10 = COPY [[MVMN]]
; CHECK-NEXT: PseudoRET
%0:gpr = COPY $x10
%1:gpr = COPY $x11
%2:gpr = COPY $x12
%3:gpr = ADDW %0, %1
%4:gpr = ADDW %1, %2
%5:gpr = ADDW %0, %2
%6:gpr = MVMN %3, %4, %5
%7:gpr = ADDIW %6, 0
$x10 = COPY %7
PseudoRET
...
---
name: merge_sextw_not_removed
tracksRegLiveness: true
body: |
bb.0.entry:
liveins: $x10, $x11, $x12
; CHECK-LABEL: name: merge_sextw_not_removed
; CHECK: liveins: $x10, $x11, $x12
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
; CHECK-NEXT: [[MERGE:%[0-9]+]]:gpr = MERGE [[COPY]], [[COPY1]], [[COPY2]]
; CHECK-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[MERGE]], 0
; CHECK-NEXT: $x10 = COPY [[ADDIW]]
; CHECK-NEXT: PseudoRET
%0:gpr = COPY $x10
%1:gpr = COPY $x11
%2:gpr = COPY $x12
%3:gpr = MERGE %0, %1, %2
%4:gpr = ADDIW %3, 0
$x10 = COPY %4
PseudoRET
...