1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3 2# RUN: llc -mtriple=riscv32 -mattr='+zba' -run-pass=instruction-select -simplify-mir -verify-machineinstrs %s -o - \ 3# RUN: | FileCheck %s 4 5--- 6name: sh1add 7legalized: true 8regBankSelected: true 9tracksRegLiveness: true 10body: | 11 bb.0.entry: 12 liveins: $x10, $x11 13 14 ; CHECK-LABEL: name: sh1add 15 ; CHECK: liveins: $x10, $x11 16 ; CHECK-NEXT: {{ $}} 17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 18 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 19 ; CHECK-NEXT: [[SH1ADD:%[0-9]+]]:gpr = SH1ADD [[COPY]], [[COPY1]] 20 ; CHECK-NEXT: $x10 = COPY [[SH1ADD]] 21 %0:gprb(s32) = COPY $x10 22 %1:gprb(s32) = COPY $x11 23 %2:gprb(s32) = G_CONSTANT i32 1 24 %3:gprb(s32) = G_SHL %0, %2 25 %4:gprb(s32) = G_ADD %3, %1 26 $x10 = COPY %4(s32) 27... 28--- 29name: sh2add 30legalized: true 31regBankSelected: true 32tracksRegLiveness: true 33body: | 34 bb.0.entry: 35 liveins: $x10, $x11 36 37 ; CHECK-LABEL: name: sh2add 38 ; CHECK: liveins: $x10, $x11 39 ; CHECK-NEXT: {{ $}} 40 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 41 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 42 ; CHECK-NEXT: [[SH2ADD:%[0-9]+]]:gpr = SH2ADD [[COPY]], [[COPY1]] 43 ; CHECK-NEXT: $x10 = COPY [[SH2ADD]] 44 %0:gprb(s32) = COPY $x10 45 %1:gprb(s32) = COPY $x11 46 %2:gprb(s32) = G_CONSTANT i32 2 47 %3:gprb(s32) = G_SHL %0, %2 48 %4:gprb(s32) = G_ADD %3, %1 49 $x10 = COPY %4(s32) 50... 51--- 52name: sh3add 53legalized: true 54regBankSelected: true 55tracksRegLiveness: true 56body: | 57 bb.0.entry: 58 liveins: $x10, $x11 59 60 ; CHECK-LABEL: name: sh3add 61 ; CHECK: liveins: $x10, $x11 62 ; CHECK-NEXT: {{ $}} 63 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 64 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 65 ; CHECK-NEXT: [[SH3ADD:%[0-9]+]]:gpr = SH3ADD [[COPY]], [[COPY1]] 66 ; CHECK-NEXT: $x10 = COPY [[SH3ADD]] 67 %0:gprb(s32) = COPY $x10 68 %1:gprb(s32) = COPY $x11 69 %2:gprb(s32) = G_CONSTANT i32 3 70 %3:gprb(s32) = G_SHL %0, %2 71 %4:gprb(s32) = G_ADD %3, %1 72 $x10 = COPY %4(s32) 73... 74--- 75name: no_sh1add 76legalized: true 77regBankSelected: true 78tracksRegLiveness: true 79body: | 80 bb.0.entry: 81 liveins: $x10, $x11 82 83 ; CHECK-LABEL: name: no_sh1add 84 ; CHECK: liveins: $x10, $x11 85 ; CHECK-NEXT: {{ $}} 86 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 87 ; CHECK-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 1 88 ; CHECK-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[SLLI]], 37 89 ; CHECK-NEXT: $x10 = COPY [[ADDI]] 90 %0:gprb(s32) = COPY $x10 91 %1:gprb(s32) = G_CONSTANT i32 37 92 %2:gprb(s32) = G_CONSTANT i32 1 93 %3:gprb(s32) = G_SHL %0, %2 94 %4:gprb(s32) = G_ADD %3, %1 95 $x10 = COPY %4(s32) 96... 97--- 98name: shXadd_complex_shl_and 99legalized: true 100regBankSelected: true 101tracksRegLiveness: true 102body: | 103 bb.0.entry: 104 liveins: $x10, $x11 105 106 ; CHECK-LABEL: name: shXadd_complex_shl_and 107 ; CHECK: liveins: $x10, $x11 108 ; CHECK-NEXT: {{ $}} 109 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 110 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 111 ; CHECK-NEXT: [[SRLI:%[0-9]+]]:gpr = SRLI [[COPY]], 1 112 ; CHECK-NEXT: [[SH2ADD:%[0-9]+]]:gpr = SH2ADD [[SRLI]], [[COPY1]] 113 ; CHECK-NEXT: $x10 = COPY [[SH2ADD]] 114 %0:gprb(s32) = COPY $x10 115 %1:gprb(s32) = COPY $x11 116 117 %2:gprb(s32) = G_CONSTANT i32 1 118 %3:gprb(s32) = G_SHL %0, %2 119 %4:gprb(s32) = G_CONSTANT i32 4294967292 120 %5:gprb(s32) = G_AND %3, %4 121 122 %6:gprb(s32) = G_ADD %5, %1 123 $x10 = COPY %6(s32) 124... 125--- 126name: shXadd_complex_lshr_and 127legalized: true 128regBankSelected: true 129tracksRegLiveness: true 130body: | 131 bb.0.entry: 132 liveins: $x10, $x11 133 134 ; CHECK-LABEL: name: shXadd_complex_lshr_and 135 ; CHECK: liveins: $x10, $x11 136 ; CHECK-NEXT: {{ $}} 137 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 138 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 139 ; CHECK-NEXT: [[SRLI:%[0-9]+]]:gpr = SRLI [[COPY]], 29 140 ; CHECK-NEXT: [[SH2ADD:%[0-9]+]]:gpr = SH2ADD [[SRLI]], [[COPY1]] 141 ; CHECK-NEXT: $x10 = COPY [[SH2ADD]] 142 %0:gprb(s32) = COPY $x10 143 %1:gprb(s32) = COPY $x11 144 145 %2:gprb(s32) = G_CONSTANT i32 27 146 %3:gprb(s32) = G_LSHR %0, %2 147 %4:gprb(s32) = G_CONSTANT i32 60 148 %5:gprb(s32) = G_AND %3, %4 149 150 %6:gprb(s32) = G_ADD %5, %1 151 $x10 = COPY %6(s32) 152... 153