318 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -run-pass=instruction-select %s -o - \3# RUN: -disable-gisel-legality-check | FileCheck %s4 5---6name: store_i8_i647legalized: true8regBankSelected: true9tracksRegLiveness: true10body: |11 bb.0:12 liveins: $x10, $x1113 14 ; CHECK-LABEL: name: store_i8_i6415 ; CHECK: liveins: $x10, $x1116 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1018 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x1119 ; CHECK-NEXT: SB [[COPY]], [[COPY1]], 0 :: (store (s8))20 ; CHECK-NEXT: PseudoRET21 %0:gprb(s64) = COPY $x1022 %1:gprb(p0) = COPY $x1123 G_STORE %0(s64), %1(p0) :: (store (s8))24 PseudoRET25 26...27---28name: store_i16_i6429legalized: true30regBankSelected: true31tracksRegLiveness: true32body: |33 bb.0:34 liveins: $x10, $x1135 36 ; CHECK-LABEL: name: store_i16_i6437 ; CHECK: liveins: $x10, $x1138 ; CHECK-NEXT: {{ $}}39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1040 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x1141 ; CHECK-NEXT: SH [[COPY]], [[COPY1]], 0 :: (store (s16))42 ; CHECK-NEXT: PseudoRET43 %0:gprb(s64) = COPY $x1044 %1:gprb(p0) = COPY $x1145 G_STORE %0(s64), %1(p0) :: (store (s16))46 PseudoRET47 48...49---50name: store_i8_i1651legalized: true52regBankSelected: true53tracksRegLiveness: true54body: |55 bb.0:56 liveins: $x10, $x1157 58 ; CHECK-LABEL: name: store_i8_i1659 ; CHECK: liveins: $x10, $x1160 ; CHECK-NEXT: {{ $}}61 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1062 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x1163 ; CHECK-NEXT: SB [[COPY]], [[COPY1]], 0 :: (store (s8))64 ; CHECK-NEXT: PseudoRET65 %0:gprb(s64) = COPY $x1066 %1:gprb(p0) = COPY $x1167 %2:gprb(s16) = G_TRUNC %068 G_STORE %2(s16), %1(p0) :: (store (s8))69 PseudoRET70 71...72---73name: store_i16_i1674legalized: true75regBankSelected: true76tracksRegLiveness: true77body: |78 bb.0:79 liveins: $x10, $x1180 81 ; CHECK-LABEL: name: store_i16_i1682 ; CHECK: liveins: $x10, $x1183 ; CHECK-NEXT: {{ $}}84 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x1085 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x1186 ; CHECK-NEXT: SH [[COPY]], [[COPY1]], 0 :: (store (s16))87 ; CHECK-NEXT: PseudoRET88 %0:gprb(s64) = COPY $x1089 %1:gprb(p0) = COPY $x1190 %2:gprb(s16) = G_TRUNC %091 G_STORE %2(s16), %1(p0) :: (store (s16))92 PseudoRET93 94...95---96name: store_i32_i6497legalized: true98regBankSelected: true99tracksRegLiveness: true100body: |101 bb.0:102 liveins: $x10, $x11103 104 ; CHECK-LABEL: name: store_i32_i64105 ; CHECK: liveins: $x10, $x11106 ; CHECK-NEXT: {{ $}}107 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10108 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11109 ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 0 :: (store (s32))110 ; CHECK-NEXT: PseudoRET111 %0:gprb(s64) = COPY $x10112 %1:gprb(p0) = COPY $x11113 G_STORE %0(s64), %1(p0) :: (store (s32))114 PseudoRET115 116...117---118name: store_i64_i64119legalized: true120regBankSelected: true121tracksRegLiveness: true122body: |123 bb.0:124 liveins: $x10, $x11125 126 ; CHECK-LABEL: name: store_i64_i64127 ; CHECK: liveins: $x10, $x11128 ; CHECK-NEXT: {{ $}}129 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10130 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11131 ; CHECK-NEXT: SD [[COPY]], [[COPY1]], 0 :: (store (s64))132 ; CHECK-NEXT: PseudoRET133 %0:gprb(s64) = COPY $x10134 %1:gprb(p0) = COPY $x11135 G_STORE %0(s64), %1(p0) :: (store (s64))136 PseudoRET137 138...139---140name: store_p0141legalized: true142regBankSelected: true143tracksRegLiveness: true144body: |145 bb.0:146 liveins: $x10, $x11147 148 ; CHECK-LABEL: name: store_p0149 ; CHECK: liveins: $x10, $x11150 ; CHECK-NEXT: {{ $}}151 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10152 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11153 ; CHECK-NEXT: SD [[COPY]], [[COPY1]], 0 :: (store (p0))154 ; CHECK-NEXT: PseudoRET155 %0:gprb(p0) = COPY $x10156 %1:gprb(p0) = COPY $x11157 G_STORE %0(p0), %1(p0) :: (store (p0))158 PseudoRET159 160...161---162name: truncstore_i8_i32163legalized: true164regBankSelected: true165tracksRegLiveness: true166body: |167 bb.0:168 liveins: $x10, $x11169 170 ; CHECK-LABEL: name: truncstore_i8_i32171 ; CHECK: liveins: $x10, $x11172 ; CHECK-NEXT: {{ $}}173 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10174 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11175 ; CHECK-NEXT: SB [[COPY1]], [[COPY]], 0 :: (store (s8))176 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0177 ; CHECK-NEXT: $x10 = COPY [[COPY2]]178 ; CHECK-NEXT: PseudoRET implicit $x10179 %0:gprb(p0) = COPY $x10180 %3:gprb(s64) = COPY $x11181 %9:gprb(s32) = G_TRUNC %3(s64)182 G_STORE %9(s32), %0(p0) :: (store (s8))183 %7:gprb(s64) = G_CONSTANT i64 0184 $x10 = COPY %7(s64)185 PseudoRET implicit $x10186 187...188---189name: truncstore_i16_i32190legalized: true191regBankSelected: true192tracksRegLiveness: true193body: |194 bb.0:195 liveins: $x10, $x11196 197 ; CHECK-LABEL: name: truncstore_i16_i32198 ; CHECK: liveins: $x10, $x11199 ; CHECK-NEXT: {{ $}}200 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10201 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11202 ; CHECK-NEXT: SH [[COPY1]], [[COPY]], 0 :: (store (s16))203 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0204 ; CHECK-NEXT: $x10 = COPY [[COPY2]]205 ; CHECK-NEXT: PseudoRET implicit $x10206 %0:gprb(p0) = COPY $x10207 %3:gprb(s64) = COPY $x11208 %9:gprb(s32) = G_TRUNC %3(s64)209 G_STORE %9(s32), %0(p0) :: (store (s16))210 %7:gprb(s64) = G_CONSTANT i64 0211 $x10 = COPY %7(s64)212 PseudoRET implicit $x10213 214...215---216name: store_i32_i32217legalized: true218regBankSelected: true219tracksRegLiveness: true220body: |221 bb.0:222 liveins: $x10, $x11223 224 ; CHECK-LABEL: name: store_i32_i32225 ; CHECK: liveins: $x10, $x11226 ; CHECK-NEXT: {{ $}}227 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10228 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11229 ; CHECK-NEXT: SW [[COPY1]], [[COPY]], 0 :: (store (s32))230 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x0231 ; CHECK-NEXT: $x10 = COPY [[COPY2]]232 ; CHECK-NEXT: PseudoRET implicit $x10233 %0:gprb(p0) = COPY $x10234 %3:gprb(s64) = COPY $x11235 %9:gprb(s32) = G_TRUNC %3(s64)236 G_STORE %9(s32), %0(p0) :: (store (s32))237 %7:gprb(s64) = G_CONSTANT i64 0238 $x10 = COPY %7(s64)239 PseudoRET implicit $x10240 241...242---243name: store_fi_i64_i64244legalized: true245regBankSelected: true246tracksRegLiveness: true247 248stack:249 - { id: 0, offset: 0, size: 8, alignment: 8 }250 251body: |252 bb.0:253 liveins: $x10254 255 ; CHECK-LABEL: name: store_fi_i64_i64256 ; CHECK: liveins: $x10257 ; CHECK-NEXT: {{ $}}258 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10259 ; CHECK-NEXT: SD [[COPY]], %stack.0, 0 :: (store (s64))260 ; CHECK-NEXT: PseudoRET261 %0:gprb(s64) = COPY $x10262 %1:gprb(p0) = G_FRAME_INDEX %stack.0263 G_STORE %0(s64), %1(p0) :: (store (s64))264 PseudoRET265 266...267---268name: store_fi_gep_i64_i64269legalized: true270regBankSelected: true271tracksRegLiveness: true272 273stack:274 - { id: 0, offset: 0, size: 16, alignment: 8 }275 276body: |277 bb.0:278 liveins: $x10279 280 ; CHECK-LABEL: name: store_fi_gep_i64_i64281 ; CHECK: liveins: $x10282 ; CHECK-NEXT: {{ $}}283 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10284 ; CHECK-NEXT: SD [[COPY]], %stack.0, 8 :: (store (s64))285 ; CHECK-NEXT: PseudoRET286 %0:gprb(s64) = COPY $x10287 %1:gprb(p0) = G_FRAME_INDEX %stack.0288 %2:gprb(s64) = G_CONSTANT i64 8289 %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s64)290 G_STORE %0(s64), %3(p0) :: (store (s64))291 PseudoRET292 293...294---295name: store_gep_i64_i64296legalized: true297regBankSelected: true298tracksRegLiveness: true299body: |300 bb.0:301 liveins: $x10, $x11302 303 ; CHECK-LABEL: name: store_gep_i64_i64304 ; CHECK: liveins: $x10, $x11305 ; CHECK-NEXT: {{ $}}306 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10307 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11308 ; CHECK-NEXT: SD [[COPY]], [[COPY1]], 8 :: (store (s64))309 ; CHECK-NEXT: PseudoRET310 %0:gprb(s64) = COPY $x10311 %1:gprb(p0) = COPY $x11312 %2:gprb(s64) = G_CONSTANT i64 8313 %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s64)314 G_STORE %0(s64), %3(p0) :: (store (s64))315 PseudoRET316 317...318