1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=riscv64 -run-pass=instruction-select %s -o - \ 3# RUN: -disable-gisel-legality-check | FileCheck %s 4 5--- 6name: store_i8_i64 7legalized: true 8regBankSelected: true 9tracksRegLiveness: true 10body: | 11 bb.0: 12 liveins: $x10, $x11 13 14 ; CHECK-LABEL: name: store_i8_i64 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: SB [[COPY]], [[COPY1]], 0 :: (store (s8)) 20 ; CHECK-NEXT: PseudoRET 21 %0:gprb(s64) = COPY $x10 22 %1:gprb(p0) = COPY $x11 23 G_STORE %0(s64), %1(p0) :: (store (s8)) 24 PseudoRET 25 26... 27--- 28name: store_i16_i64 29legalized: true 30regBankSelected: true 31tracksRegLiveness: true 32body: | 33 bb.0: 34 liveins: $x10, $x11 35 36 ; CHECK-LABEL: name: store_i16_i64 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(s64) = COPY $x10 44 %1:gprb(p0) = COPY $x11 45 G_STORE %0(s64), %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(s64) = 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(s64) = 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_i64 97legalized: true 98regBankSelected: true 99tracksRegLiveness: true 100body: | 101 bb.0: 102 liveins: $x10, $x11 103 104 ; CHECK-LABEL: name: store_i32_i64 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(s64) = COPY $x10 112 %1:gprb(p0) = COPY $x11 113 G_STORE %0(s64), %1(p0) :: (store (s32)) 114 PseudoRET 115 116... 117--- 118name: store_i64_i64 119legalized: true 120regBankSelected: true 121tracksRegLiveness: true 122body: | 123 bb.0: 124 liveins: $x10, $x11 125 126 ; CHECK-LABEL: name: store_i64_i64 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: SD [[COPY]], [[COPY1]], 0 :: (store (s64)) 132 ; CHECK-NEXT: PseudoRET 133 %0:gprb(s64) = COPY $x10 134 %1:gprb(p0) = COPY $x11 135 G_STORE %0(s64), %1(p0) :: (store (s64)) 136 PseudoRET 137 138... 139--- 140name: store_p0 141legalized: true 142regBankSelected: true 143tracksRegLiveness: true 144body: | 145 bb.0: 146 liveins: $x10, $x11 147 148 ; CHECK-LABEL: name: store_p0 149 ; CHECK: liveins: $x10, $x11 150 ; CHECK-NEXT: {{ $}} 151 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 152 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 153 ; CHECK-NEXT: SD [[COPY]], [[COPY1]], 0 :: (store (p0)) 154 ; CHECK-NEXT: PseudoRET 155 %0:gprb(p0) = COPY $x10 156 %1:gprb(p0) = COPY $x11 157 G_STORE %0(p0), %1(p0) :: (store (p0)) 158 PseudoRET 159 160... 161--- 162name: truncstore_i8_i32 163legalized: true 164regBankSelected: true 165tracksRegLiveness: true 166body: | 167 bb.0: 168 liveins: $x10, $x11 169 170 ; CHECK-LABEL: name: truncstore_i8_i32 171 ; CHECK: liveins: $x10, $x11 172 ; CHECK-NEXT: {{ $}} 173 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 174 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 175 ; CHECK-NEXT: SB [[COPY1]], [[COPY]], 0 :: (store (s8)) 176 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0 177 ; CHECK-NEXT: $x10 = COPY [[COPY2]] 178 ; CHECK-NEXT: PseudoRET implicit $x10 179 %0:gprb(p0) = COPY $x10 180 %3:gprb(s64) = COPY $x11 181 %9:gprb(s32) = G_TRUNC %3(s64) 182 G_STORE %9(s32), %0(p0) :: (store (s8)) 183 %7:gprb(s64) = G_CONSTANT i64 0 184 $x10 = COPY %7(s64) 185 PseudoRET implicit $x10 186 187... 188--- 189name: truncstore_i16_i32 190legalized: true 191regBankSelected: true 192tracksRegLiveness: true 193body: | 194 bb.0: 195 liveins: $x10, $x11 196 197 ; CHECK-LABEL: name: truncstore_i16_i32 198 ; CHECK: liveins: $x10, $x11 199 ; CHECK-NEXT: {{ $}} 200 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 201 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 202 ; CHECK-NEXT: SH [[COPY1]], [[COPY]], 0 :: (store (s16)) 203 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0 204 ; CHECK-NEXT: $x10 = COPY [[COPY2]] 205 ; CHECK-NEXT: PseudoRET implicit $x10 206 %0:gprb(p0) = COPY $x10 207 %3:gprb(s64) = COPY $x11 208 %9:gprb(s32) = G_TRUNC %3(s64) 209 G_STORE %9(s32), %0(p0) :: (store (s16)) 210 %7:gprb(s64) = G_CONSTANT i64 0 211 $x10 = COPY %7(s64) 212 PseudoRET implicit $x10 213 214... 215--- 216name: store_i32_i32 217legalized: true 218regBankSelected: true 219tracksRegLiveness: true 220body: | 221 bb.0: 222 liveins: $x10, $x11 223 224 ; CHECK-LABEL: name: store_i32_i32 225 ; CHECK: liveins: $x10, $x11 226 ; CHECK-NEXT: {{ $}} 227 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 228 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 229 ; CHECK-NEXT: SW [[COPY1]], [[COPY]], 0 :: (store (s32)) 230 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0 231 ; CHECK-NEXT: $x10 = COPY [[COPY2]] 232 ; CHECK-NEXT: PseudoRET implicit $x10 233 %0:gprb(p0) = COPY $x10 234 %3:gprb(s64) = COPY $x11 235 %9:gprb(s32) = G_TRUNC %3(s64) 236 G_STORE %9(s32), %0(p0) :: (store (s32)) 237 %7:gprb(s64) = G_CONSTANT i64 0 238 $x10 = COPY %7(s64) 239 PseudoRET implicit $x10 240 241... 242--- 243name: store_fi_i64_i64 244legalized: true 245regBankSelected: true 246tracksRegLiveness: true 247 248stack: 249 - { id: 0, offset: 0, size: 8, alignment: 8 } 250 251body: | 252 bb.0: 253 liveins: $x10 254 255 ; CHECK-LABEL: name: store_fi_i64_i64 256 ; CHECK: liveins: $x10 257 ; CHECK-NEXT: {{ $}} 258 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 259 ; CHECK-NEXT: SD [[COPY]], %stack.0, 0 :: (store (s64)) 260 ; CHECK-NEXT: PseudoRET 261 %0:gprb(s64) = COPY $x10 262 %1:gprb(p0) = G_FRAME_INDEX %stack.0 263 G_STORE %0(s64), %1(p0) :: (store (s64)) 264 PseudoRET 265 266... 267--- 268name: store_fi_gep_i64_i64 269legalized: true 270regBankSelected: true 271tracksRegLiveness: true 272 273stack: 274 - { id: 0, offset: 0, size: 16, alignment: 8 } 275 276body: | 277 bb.0: 278 liveins: $x10 279 280 ; CHECK-LABEL: name: store_fi_gep_i64_i64 281 ; CHECK: liveins: $x10 282 ; CHECK-NEXT: {{ $}} 283 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 284 ; CHECK-NEXT: SD [[COPY]], %stack.0, 8 :: (store (s64)) 285 ; CHECK-NEXT: PseudoRET 286 %0:gprb(s64) = COPY $x10 287 %1:gprb(p0) = G_FRAME_INDEX %stack.0 288 %2:gprb(s64) = G_CONSTANT i64 8 289 %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s64) 290 G_STORE %0(s64), %3(p0) :: (store (s64)) 291 PseudoRET 292 293... 294--- 295name: store_gep_i64_i64 296legalized: true 297regBankSelected: true 298tracksRegLiveness: true 299body: | 300 bb.0: 301 liveins: $x10, $x11 302 303 ; CHECK-LABEL: name: store_gep_i64_i64 304 ; CHECK: liveins: $x10, $x11 305 ; CHECK-NEXT: {{ $}} 306 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 307 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 308 ; CHECK-NEXT: SD [[COPY]], [[COPY1]], 8 :: (store (s64)) 309 ; CHECK-NEXT: PseudoRET 310 %0:gprb(s64) = COPY $x10 311 %1:gprb(p0) = COPY $x11 312 %2:gprb(s64) = G_CONSTANT i64 8 313 %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s64) 314 G_STORE %0(s64), %3(p0) :: (store (s64)) 315 PseudoRET 316 317... 318