1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=riscv32 -run-pass=instruction-select %s -o - \ 3# RUN: -disable-gisel-legality-check | FileCheck %s 4# 5--- 6name: store_i8 7legalized: true 8regBankSelected: true 9tracksRegLiveness: true 10body: | 11 bb.0: 12 liveins: $x10, $x11, $x11 13 14 ; CHECK-LABEL: name: store_i8 15 ; CHECK: liveins: $x10, $x11, $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: SB [[COPY]], [[COPY1]], 0 :: (store (s8)) 20 ; CHECK-NEXT: PseudoRET 21 %0:gprb(s32) = COPY $x10 22 %1:gprb(p0) = COPY $x11 23 G_STORE %0(s32), %1(p0) :: (store (s8)) 24 PseudoRET 25 26... 27--- 28name: store_i16 29legalized: true 30regBankSelected: true 31tracksRegLiveness: true 32body: | 33 bb.0: 34 liveins: $x10, $x11 35 36 ; CHECK-LABEL: name: store_i16 37 ; CHECK: liveins: $x10, $x11 38 ; CHECK-NEXT: {{ $}} 39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 40 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 41 ; CHECK-NEXT: SH [[COPY]], [[COPY1]], 0 :: (store (s16)) 42 ; CHECK-NEXT: PseudoRET 43 %0:gprb(s32) = COPY $x10 44 %1:gprb(p0) = COPY $x11 45 G_STORE %0(s32), %1(p0) :: (store (s16)) 46 PseudoRET 47 48... 49--- 50name: store_i8_i16 51legalized: true 52regBankSelected: true 53tracksRegLiveness: true 54body: | 55 bb.0: 56 liveins: $x10, $x11 57 58 ; CHECK-LABEL: name: store_i8_i16 59 ; CHECK: liveins: $x10, $x11 60 ; CHECK-NEXT: {{ $}} 61 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 62 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 63 ; CHECK-NEXT: SB [[COPY]], [[COPY1]], 0 :: (store (s8)) 64 ; CHECK-NEXT: PseudoRET 65 %0:gprb(s32) = COPY $x10 66 %1:gprb(p0) = COPY $x11 67 %2:gprb(s16) = G_TRUNC %0 68 G_STORE %2(s16), %1(p0) :: (store (s8)) 69 PseudoRET 70 71... 72--- 73name: store_i16_i16 74legalized: true 75regBankSelected: true 76tracksRegLiveness: true 77body: | 78 bb.0: 79 liveins: $x10, $x11 80 81 ; CHECK-LABEL: name: store_i16_i16 82 ; CHECK: liveins: $x10, $x11 83 ; CHECK-NEXT: {{ $}} 84 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 85 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 86 ; CHECK-NEXT: SH [[COPY]], [[COPY1]], 0 :: (store (s16)) 87 ; CHECK-NEXT: PseudoRET 88 %0:gprb(s32) = COPY $x10 89 %1:gprb(p0) = COPY $x11 90 %2:gprb(s16) = G_TRUNC %0 91 G_STORE %2(s16), %1(p0) :: (store (s16)) 92 PseudoRET 93 94... 95--- 96name: store_i32 97legalized: true 98regBankSelected: true 99tracksRegLiveness: true 100body: | 101 bb.0: 102 liveins: $x10, $x11 103 104 ; CHECK-LABEL: name: store_i32 105 ; CHECK: liveins: $x10, $x11 106 ; CHECK-NEXT: {{ $}} 107 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 108 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 109 ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 0 :: (store (s32)) 110 ; CHECK-NEXT: PseudoRET 111 %0:gprb(s32) = COPY $x10 112 %1:gprb(p0) = COPY $x11 113 G_STORE %0(s32), %1(p0) :: (store (s32)) 114 PseudoRET 115 116... 117--- 118name: store_p0 119legalized: true 120regBankSelected: true 121tracksRegLiveness: true 122body: | 123 bb.0: 124 liveins: $x10, $x11 125 126 ; CHECK-LABEL: name: store_p0 127 ; CHECK: liveins: $x10, $x11 128 ; CHECK-NEXT: {{ $}} 129 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 130 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 131 ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 0 :: (store (p0)) 132 ; CHECK-NEXT: PseudoRET 133 %0:gprb(p0) = COPY $x10 134 %1:gprb(p0) = COPY $x11 135 G_STORE %0(p0), %1(p0) :: (store (p0)) 136 PseudoRET 137 138... 139--- 140name: store_fi_i32 141legalized: true 142regBankSelected: true 143tracksRegLiveness: true 144 145stack: 146 - { id: 0, offset: 0, size: 4, alignment: 4 } 147 148body: | 149 bb.0: 150 liveins: $x10 151 152 ; CHECK-LABEL: name: store_fi_i32 153 ; CHECK: liveins: $x10 154 ; CHECK-NEXT: {{ $}} 155 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 156 ; CHECK-NEXT: SW [[COPY]], %stack.0, 0 :: (store (s32)) 157 ; CHECK-NEXT: PseudoRET 158 %0:gprb(s32) = COPY $x10 159 %1:gprb(p0) = G_FRAME_INDEX %stack.0 160 G_STORE %0(s32), %1(p0) :: (store (s32)) 161 PseudoRET 162 163... 164--- 165name: store_fi_gep_i32 166legalized: true 167regBankSelected: true 168tracksRegLiveness: true 169 170stack: 171 - { id: 0, offset: 0, size: 8, alignment: 4 } 172 173body: | 174 bb.0: 175 liveins: $x10 176 177 ; CHECK-LABEL: name: store_fi_gep_i32 178 ; CHECK: liveins: $x10 179 ; CHECK-NEXT: {{ $}} 180 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 181 ; CHECK-NEXT: SW [[COPY]], %stack.0, 4 :: (store (s32)) 182 ; CHECK-NEXT: PseudoRET 183 %0:gprb(s32) = COPY $x10 184 %1:gprb(p0) = G_FRAME_INDEX %stack.0 185 %2:gprb(s32) = G_CONSTANT i32 4 186 %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s32) 187 G_STORE %0(s32), %3(p0) :: (store (s32)) 188 PseudoRET 189 190... 191--- 192name: store_gep_i32 193legalized: true 194regBankSelected: true 195tracksRegLiveness: true 196body: | 197 bb.0: 198 liveins: $x10, $x11 199 200 ; CHECK-LABEL: name: store_gep_i32 201 ; CHECK: liveins: $x10, $x11 202 ; CHECK-NEXT: {{ $}} 203 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 204 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 205 ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 4 :: (store (s32)) 206 ; CHECK-NEXT: PseudoRET 207 %0:gprb(s32) = COPY $x10 208 %1:gprb(p0) = COPY $x11 209 %2:gprb(s32) = G_CONSTANT i32 4 210 %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s32) 211 G_STORE %0(s32), %3(p0) :: (store (s32)) 212 PseudoRET 213 214... 215