brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.7 KiB · ade4322 Raw
764 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=1 %s -o - | FileCheck %s3 4--- |5  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"6 7  define void @store_s64_gpr(ptr %addr) { ret void }8  define void @store_s32_gpr(ptr %addr) { ret void }9  define void @store_s16_gpr(ptr %addr) { ret void }10  define void @store_s8_gpr(ptr %addr) { ret void }11 12  define void @store_zero_s64_gpr(ptr %addr) { ret void }13  define void @store_zero_s32_gpr(ptr %addr) { ret void }14  define void @store_zero_s16(ptr %addr) { ret void }15  define void @store_zero_s8(ptr %addr) { ret void }16  define void @store_zero_look_through_cst(ptr %addr) { ret void }17 18  define void @store_fi_s64_gpr() {19    %ptr0 = alloca i6420    ret void21  }22 23  define void @store_gep_128_s64_gpr(ptr %addr) { ret void }24  define void @store_gep_512_s32_gpr(ptr %addr) { ret void }25  define void @store_gep_64_s16_gpr(ptr %addr) { ret void }26  define void @store_gep_1_s8_gpr(ptr %addr) { ret void }27 28  define void @store_s64_fpr(ptr %addr) { ret void }29  define void @store_s32_fpr(ptr %addr) { ret void }30 31  define void @store_gep_8_s64_fpr(ptr %addr) { ret void }32  define void @store_gep_8_s32_fpr(ptr %addr) { ret void }33 34  define void @store_v2s32(ptr %addr) { ret void }35  define void @store_v2s64(ptr %addr) { ret void }36 37  define void @store_4xi16(<4 x i16> %v, ptr %ptr) { ret void }38  define void @store_4xi32(<4 x i32> %v, ptr %ptr) { ret void }39  define void @store_8xi16(<8 x i16> %v, ptr %ptr) { ret void }40  define void @store_16xi8(<16 x i8> %v, ptr %ptr) { ret void }41 42  @x = external hidden local_unnamed_addr global ptr, align 843  define void @store_adrp_add_low() { ret void }44  define void @store_adrp_add_low_foldable_offset() { ret void }45  define void @store_adrp_add_low_unfoldable_offset() { ret void }46 47  define void @truncstores(ptr %addr) { ret void }48...49 50---51name:            store_s64_gpr52legalized:       true53regBankSelected: true54 55registers:56  - { id: 0, class: gpr }57  - { id: 1, class: gpr }58 59body:             |60  bb.0:61    liveins: $x0, $x162 63    ; CHECK-LABEL: name: store_s64_gpr64    ; CHECK: liveins: $x0, $x165    ; CHECK-NEXT: {{  $}}66    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x067    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x168    ; CHECK-NEXT: STRXui [[COPY1]], [[COPY]], 0 :: (store (s64) into %ir.addr)69    %0(p0) = COPY $x070    %1(s64) = COPY $x171    G_STORE  %1, %0 :: (store (s64) into %ir.addr)72 73...74 75---76name:            store_s32_gpr77legalized:       true78regBankSelected: true79 80registers:81  - { id: 0, class: gpr }82  - { id: 1, class: gpr }83 84body:             |85  bb.0:86    liveins: $x0, $w187 88    ; CHECK-LABEL: name: store_s32_gpr89    ; CHECK: liveins: $x0, $w190    ; CHECK-NEXT: {{  $}}91    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x092    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w193    ; CHECK-NEXT: STRWui [[COPY1]], [[COPY]], 0 :: (store (s32) into %ir.addr)94    %0(p0) = COPY $x095    %1(s32) = COPY $w196    G_STORE  %1, %0 :: (store (s32) into %ir.addr)97 98...99 100---101name:            store_s16_gpr102legalized:       true103regBankSelected: true104 105registers:106  - { id: 0, class: gpr }107  - { id: 1, class: gpr }108 109body:             |110  bb.0:111    liveins: $x0, $w1112 113    ; CHECK-LABEL: name: store_s16_gpr114    ; CHECK: liveins: $x0, $w1115    ; CHECK-NEXT: {{  $}}116    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0117    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1118    ; CHECK-NEXT: STRHHui [[COPY1]], [[COPY]], 0 :: (store (s16) into %ir.addr)119    %0(p0) = COPY $x0120    %2:gpr(s32) = COPY $w1121    %1(s16) = G_TRUNC %2122    G_STORE  %1, %0 :: (store (s16) into %ir.addr)123 124...125 126---127name:            store_s8_gpr128legalized:       true129regBankSelected: true130 131registers:132  - { id: 0, class: gpr }133  - { id: 1, class: gpr }134 135body:             |136  bb.0:137    liveins: $x0, $w1138 139    ; CHECK-LABEL: name: store_s8_gpr140    ; CHECK: liveins: $x0, $w1141    ; CHECK-NEXT: {{  $}}142    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0143    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1144    ; CHECK-NEXT: STRBBui [[COPY1]], [[COPY]], 0 :: (store (s8) into %ir.addr)145    %0(p0) = COPY $x0146    %2:gpr(s32) = COPY $w1147    %1(s8) = G_TRUNC %2148    G_STORE  %1, %0 :: (store (s8) into %ir.addr)149 150...151 152---153name:            store_zero_s64_gpr154legalized:       true155regBankSelected: true156 157registers:158  - { id: 0, class: gpr }159  - { id: 1, class: gpr }160 161body:             |162  bb.0:163    liveins: $x0, $x1164 165    ; CHECK-LABEL: name: store_zero_s64_gpr166    ; CHECK: liveins: $x0, $x1167    ; CHECK-NEXT: {{  $}}168    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0169    ; CHECK-NEXT: STRXui $xzr, [[COPY]], 0 :: (store (s64) into %ir.addr)170    %0(p0) = COPY $x0171    %1(s64) = G_CONSTANT i64 0172    G_STORE  %1, %0 :: (store (s64) into %ir.addr)173 174...175 176---177name:            store_zero_s32_gpr178legalized:       true179regBankSelected: true180 181registers:182  - { id: 0, class: gpr }183  - { id: 1, class: gpr }184 185body:             |186  bb.0:187    liveins: $x0188 189    ; CHECK-LABEL: name: store_zero_s32_gpr190    ; CHECK: liveins: $x0191    ; CHECK-NEXT: {{  $}}192    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0193    ; CHECK-NEXT: STRWui $wzr, [[COPY]], 0 :: (store (s32) into %ir.addr)194    %0(p0) = COPY $x0195    %1(s32) = G_CONSTANT i32 0196    G_STORE  %1, %0 :: (store (s32) into %ir.addr)197 198...199 200---201name:            store_zero_s16202legalized:       true203regBankSelected: true204body:             |205  bb.0:206    liveins: $x0207    ; CHECK-LABEL: name: store_zero_s16208    ; CHECK: liveins: $x0209    ; CHECK-NEXT: {{  $}}210    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0211    ; CHECK-NEXT: STRHHui $wzr, [[COPY]], 0 :: (store (s16))212    %0:gpr(p0) = COPY $x0213    %1:gpr(s16) = G_CONSTANT i16 0214    G_STORE %1(s16), %0(p0) :: (store (s16))215 216...217 218---219name:            store_zero_s8220legalized:       true221regBankSelected: true222body:             |223  bb.0:224    liveins: $x0225    ; CHECK-LABEL: name: store_zero_s8226    ; CHECK: liveins: $x0227    ; CHECK-NEXT: {{  $}}228    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0229    ; CHECK-NEXT: STRBBui $wzr, [[COPY]], 0 :: (store (s8))230    %0:gpr(p0) = COPY $x0231    %1:gpr(s8) = G_CONSTANT i8 0232    G_STORE %1(s8), %0(p0) :: (store (s8))233...234 235---236name:            store_zero_look_through_cst237legalized:       true238regBankSelected: true239body:             |240  bb.0:241    liveins: $x0242    ; CHECK-LABEL: name: store_zero_look_through_cst243    ; CHECK: liveins: $x0244    ; CHECK-NEXT: {{  $}}245    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0246    ; CHECK-NEXT: STRXui $xzr, [[COPY]], 0 :: (store (s64) into %ir.addr)247    %0:gpr(p0) = COPY $x0248    %1:gpr(s32) = G_CONSTANT i32 0249    %2:gpr(s64) = G_ZEXT %1250    G_STORE %2, %0 :: (store (s64) into %ir.addr)251...252 253---254name:            store_fi_s64_gpr255legalized:       true256regBankSelected: true257 258registers:259  - { id: 0, class: gpr }260  - { id: 1, class: gpr }261 262stack:263  - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }264 265body:             |266  bb.0:267    liveins: $x0268 269    ; CHECK-LABEL: name: store_fi_s64_gpr270    ; CHECK: liveins: $x0271    ; CHECK-NEXT: {{  $}}272    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64all = COPY $x0273    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY [[COPY]]274    ; CHECK-NEXT: STRXui [[COPY1]], %stack.0.ptr0, 0 :: (store (p0))275    %0(p0) = COPY $x0276    %1(p0) = G_FRAME_INDEX %stack.0.ptr0277    G_STORE  %0, %1 :: (store (p0))278...279 280---281name:            store_gep_128_s64_gpr282legalized:       true283regBankSelected: true284 285registers:286  - { id: 0, class: gpr }287  - { id: 1, class: gpr }288  - { id: 2, class: gpr }289  - { id: 3, class: gpr }290 291body:             |292  bb.0:293    liveins: $x0, $x1294 295    ; CHECK-LABEL: name: store_gep_128_s64_gpr296    ; CHECK: liveins: $x0, $x1297    ; CHECK-NEXT: {{  $}}298    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0299    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1300    ; CHECK-NEXT: STRXui [[COPY1]], [[COPY]], 16 :: (store (s64) into %ir.addr)301    %0(p0) = COPY $x0302    %1(s64) = COPY $x1303    %2(s64) = G_CONSTANT i64 128304    %3(p0) = G_PTR_ADD %0, %2305    G_STORE %1, %3 :: (store (s64) into %ir.addr)306...307 308---309name:            store_gep_512_s32_gpr310legalized:       true311regBankSelected: true312 313registers:314  - { id: 0, class: gpr }315  - { id: 1, class: gpr }316  - { id: 2, class: gpr }317  - { id: 3, class: gpr }318 319body:             |320  bb.0:321    liveins: $x0, $w1322 323    ; CHECK-LABEL: name: store_gep_512_s32_gpr324    ; CHECK: liveins: $x0, $w1325    ; CHECK-NEXT: {{  $}}326    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0327    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1328    ; CHECK-NEXT: STRWui [[COPY1]], [[COPY]], 128 :: (store (s32) into %ir.addr)329    %0(p0) = COPY $x0330    %1(s32) = COPY $w1331    %2(s64) = G_CONSTANT i64 512332    %3(p0) = G_PTR_ADD %0, %2333    G_STORE %1, %3 :: (store (s32) into %ir.addr)334...335 336---337name:            store_gep_64_s16_gpr338legalized:       true339regBankSelected: true340 341registers:342  - { id: 0, class: gpr }343  - { id: 1, class: gpr }344  - { id: 2, class: gpr }345  - { id: 3, class: gpr }346 347body:             |348  bb.0:349    liveins: $x0, $w1350 351    ; CHECK-LABEL: name: store_gep_64_s16_gpr352    ; CHECK: liveins: $x0, $w1353    ; CHECK-NEXT: {{  $}}354    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0355    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1356    ; CHECK-NEXT: STRHHui [[COPY1]], [[COPY]], 32 :: (store (s16) into %ir.addr)357    %0(p0) = COPY $x0358    %4:gpr(s32) = COPY $w1359    %1(s16) = G_TRUNC %4360    %2(s64) = G_CONSTANT i64 64361    %3(p0) = G_PTR_ADD %0, %2362    G_STORE %1, %3 :: (store (s16) into %ir.addr)363...364 365---366name:            store_gep_1_s8_gpr367legalized:       true368regBankSelected: true369 370registers:371  - { id: 0, class: gpr }372  - { id: 1, class: gpr }373  - { id: 2, class: gpr }374  - { id: 3, class: gpr }375 376body:             |377  bb.0:378    liveins: $x0, $w1379 380    ; CHECK-LABEL: name: store_gep_1_s8_gpr381    ; CHECK: liveins: $x0, $w1382    ; CHECK-NEXT: {{  $}}383    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0384    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1385    ; CHECK-NEXT: STRBBui [[COPY1]], [[COPY]], 1 :: (store (s8) into %ir.addr)386    %0(p0) = COPY $x0387    %4:gpr(s32) = COPY $w1388    %1(s8) = G_TRUNC %4389    %2(s64) = G_CONSTANT i64 1390    %3(p0) = G_PTR_ADD %0, %2391    G_STORE %1, %3 :: (store (s8) into %ir.addr)392...393 394---395name:            store_s64_fpr396legalized:       true397regBankSelected: true398 399registers:400  - { id: 0, class: gpr }401  - { id: 1, class: fpr }402 403body:             |404  bb.0:405    liveins: $x0, $d1406 407    ; CHECK-LABEL: name: store_s64_fpr408    ; CHECK: liveins: $x0, $d1409    ; CHECK-NEXT: {{  $}}410    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0411    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1412    ; CHECK-NEXT: STRDui [[COPY1]], [[COPY]], 0 :: (store (s64) into %ir.addr)413    %0(p0) = COPY $x0414    %1(s64) = COPY $d1415    G_STORE %1, %0 :: (store (s64) into %ir.addr)416 417...418 419---420name:            store_s32_fpr421legalized:       true422regBankSelected: true423 424registers:425  - { id: 0, class: gpr }426  - { id: 1, class: fpr }427 428body:             |429  bb.0:430    liveins: $x0, $s1431 432    ; CHECK-LABEL: name: store_s32_fpr433    ; CHECK: liveins: $x0, $s1434    ; CHECK-NEXT: {{  $}}435    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0436    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1437    ; CHECK-NEXT: STRSui [[COPY1]], [[COPY]], 0 :: (store (s32) into %ir.addr)438    %0(p0) = COPY $x0439    %1(s32) = COPY $s1440    G_STORE %1, %0 :: (store (s32) into %ir.addr)441 442...443 444---445name:            store_gep_8_s64_fpr446legalized:       true447regBankSelected: true448 449registers:450  - { id: 0, class: gpr }451  - { id: 1, class: fpr }452  - { id: 2, class: gpr }453  - { id: 3, class: gpr }454 455body:             |456  bb.0:457    liveins: $x0, $d1458 459    ; CHECK-LABEL: name: store_gep_8_s64_fpr460    ; CHECK: liveins: $x0, $d1461    ; CHECK-NEXT: {{  $}}462    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0463    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1464    ; CHECK-NEXT: STRDui [[COPY1]], [[COPY]], 1 :: (store (s64) into %ir.addr)465    %0(p0) = COPY $x0466    %1(s64) = COPY $d1467    %2(s64) = G_CONSTANT i64 8468    %3(p0) = G_PTR_ADD %0, %2469    G_STORE %1, %3 :: (store (s64) into %ir.addr)470...471 472---473name:            store_gep_8_s32_fpr474legalized:       true475regBankSelected: true476 477registers:478  - { id: 0, class: gpr }479  - { id: 1, class: fpr }480  - { id: 2, class: gpr }481  - { id: 3, class: gpr }482 483body:             |484  bb.0:485    liveins: $x0, $s1486 487    ; CHECK-LABEL: name: store_gep_8_s32_fpr488    ; CHECK: liveins: $x0, $s1489    ; CHECK-NEXT: {{  $}}490    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0491    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr32 = COPY $s1492    ; CHECK-NEXT: STRSui [[COPY1]], [[COPY]], 2 :: (store (s32) into %ir.addr)493    %0(p0) = COPY $x0494    %1(s32) = COPY $s1495    %2(s64) = G_CONSTANT i64 8496    %3(p0) = G_PTR_ADD %0, %2497    G_STORE %1, %3 :: (store (s32) into %ir.addr)498...499---500name:            store_v2s32501legalized:       true502regBankSelected: true503 504registers:505  - { id: 0, class: gpr }506  - { id: 1, class: fpr }507 508body:             |509  bb.0:510    liveins: $x0, $d1511 512    ; CHECK-LABEL: name: store_v2s32513    ; CHECK: liveins: $x0, $d1514    ; CHECK-NEXT: {{  $}}515    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0516    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1517    ; CHECK-NEXT: STRDui [[COPY1]], [[COPY]], 0 :: (store (<2 x s32>) into %ir.addr)518    %0(p0) = COPY $x0519    %1(<2 x s32>) = COPY $d1520    G_STORE  %1, %0 :: (store (<2 x s32>) into %ir.addr)521 522...523---524name:            store_v2s64525legalized:       true526regBankSelected: true527 528registers:529  - { id: 0, class: gpr }530  - { id: 1, class: fpr }531 532body:             |533  bb.0:534    liveins: $x0, $d1535    ; CHECK-LABEL: name: store_v2s64536    ; CHECK: liveins: $x0, $d1537    ; CHECK-NEXT: {{  $}}538    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0539    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q1540    ; CHECK-NEXT: STRQui [[COPY1]], [[COPY]], 0 :: (store (<2 x s64>) into %ir.addr, align 8)541    %0(p0) = COPY $x0542    %1(<2 x s64>) = COPY $q1543    G_STORE %1, %0 :: (store (<2 x s64>) into %ir.addr, align 8)544 545...546---547name:            store_4xi16548alignment:       4549legalized:       true550regBankSelected: true551tracksRegLiveness: true552registers:553  - { id: 0, class: fpr }554  - { id: 1, class: gpr }555machineFunctionInfo: {}556body:             |557  bb.1 (%ir-block.0):558    liveins: $d0, $x0559 560    ; CHECK-LABEL: name: store_4xi16561    ; CHECK: liveins: $d0, $x0562    ; CHECK-NEXT: {{  $}}563    ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0564    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x0565    ; CHECK-NEXT: STRDui [[COPY]], [[COPY1]], 0 :: (store (<4 x s16>) into %ir.ptr)566    ; CHECK-NEXT: RET_ReallyLR567    %0:fpr(<4 x s16>) = COPY $d0568    %1:gpr(p0) = COPY $x0569    G_STORE %0(<4 x s16>), %1(p0) :: (store (<4 x s16>) into %ir.ptr)570    RET_ReallyLR571 572...573---574name:            store_4xi32575alignment:       4576legalized:       true577regBankSelected: true578tracksRegLiveness: true579registers:580  - { id: 0, class: fpr }581  - { id: 1, class: gpr }582machineFunctionInfo: {}583body:             |584  bb.1 (%ir-block.0):585    liveins: $q0, $x0586 587    ; CHECK-LABEL: name: store_4xi32588    ; CHECK: liveins: $q0, $x0589    ; CHECK-NEXT: {{  $}}590    ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0591    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x0592    ; CHECK-NEXT: STRQui [[COPY]], [[COPY1]], 0 :: (store (<4 x s32>) into %ir.ptr)593    ; CHECK-NEXT: RET_ReallyLR594    %0:fpr(<4 x s32>) = COPY $q0595    %1:gpr(p0) = COPY $x0596    G_STORE %0(<4 x s32>), %1(p0) :: (store (<4 x s32>) into %ir.ptr)597    RET_ReallyLR598 599...600---601name:            store_8xi16602alignment:       4603legalized:       true604regBankSelected: true605tracksRegLiveness: true606registers:607  - { id: 0, class: fpr }608  - { id: 1, class: gpr }609machineFunctionInfo: {}610body:             |611  bb.1 (%ir-block.0):612    liveins: $q0, $x0613 614    ; CHECK-LABEL: name: store_8xi16615    ; CHECK: liveins: $q0, $x0616    ; CHECK-NEXT: {{  $}}617    ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0618    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x0619    ; CHECK-NEXT: STRQui [[COPY]], [[COPY1]], 0 :: (store (<8 x s16>) into %ir.ptr)620    ; CHECK-NEXT: RET_ReallyLR621    %0:fpr(<8 x s16>) = COPY $q0622    %1:gpr(p0) = COPY $x0623    G_STORE %0(<8 x s16>), %1(p0) :: (store (<8 x s16>) into %ir.ptr)624    RET_ReallyLR625 626...627---628name:            store_16xi8629alignment:       4630legalized:       true631regBankSelected: true632tracksRegLiveness: true633registers:634  - { id: 0, class: fpr }635  - { id: 1, class: gpr }636machineFunctionInfo: {}637body:             |638  bb.1 (%ir-block.0):639    liveins: $q0, $x0640 641    ; CHECK-LABEL: name: store_16xi8642    ; CHECK: liveins: $q0, $x0643    ; CHECK-NEXT: {{  $}}644    ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0645    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64sp = COPY $x0646    ; CHECK-NEXT: STRQui [[COPY]], [[COPY1]], 0 :: (store (<16 x s8>) into %ir.ptr)647    ; CHECK-NEXT: RET_ReallyLR648    %0:fpr(<16 x s8>) = COPY $q0649    %1:gpr(p0) = COPY $x0650    G_STORE %0(<16 x s8>), %1(p0) :: (store (<16 x s8>) into %ir.ptr)651    RET_ReallyLR652 653...654---655name:            store_adrp_add_low656legalized:       true657regBankSelected: true658tracksRegLiveness: true659body:             |660  bb.0:661    liveins: $x0662    ; CHECK-LABEL: name: store_adrp_add_low663    ; CHECK: liveins: $x0664    ; CHECK-NEXT: {{  $}}665    ; CHECK-NEXT: %copy:gpr64all = COPY $x0666    ; CHECK-NEXT: %adrp:gpr64common = ADRP target-flags(aarch64-page) @x667    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY %copy668    ; CHECK-NEXT: STRXui [[COPY]], %adrp, target-flags(aarch64-pageoff, aarch64-nc) @x :: (store (p0) into @x)669    %copy:gpr(p0) = COPY $x0670    %adrp:gpr64(p0) = ADRP target-flags(aarch64-page) @x671    %add_low:gpr(p0) = G_ADD_LOW %adrp(p0), target-flags(aarch64-pageoff, aarch64-nc) @x672    G_STORE %copy(p0), %add_low(p0) :: (store (p0) into @x)673 674...675---676name:            store_adrp_add_low_foldable_offset677legalized:       true678regBankSelected: true679tracksRegLiveness: true680body:             |681  bb.0:682    liveins: $x0683    ; CHECK-LABEL: name: store_adrp_add_low_foldable_offset684    ; CHECK: liveins: $x0685    ; CHECK-NEXT: {{  $}}686    ; CHECK-NEXT: %copy:gpr64all = COPY $x0687    ; CHECK-NEXT: %adrp:gpr64common = ADRP target-flags(aarch64-page) @x + 8688    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY %copy689    ; CHECK-NEXT: STRXui [[COPY]], %adrp, target-flags(aarch64-pageoff, aarch64-nc) @x + 8 :: (store (p0) into @x)690    %copy:gpr(p0) = COPY $x0691    %adrp:gpr64(p0) = ADRP target-flags(aarch64-page) @x + 8692    %add_low:gpr(p0) = G_ADD_LOW %adrp(p0), target-flags(aarch64-pageoff, aarch64-nc) @x + 8693    G_STORE %copy(p0), %add_low(p0) :: (store (p0) into @x)694 695...696---697name:            store_adrp_add_low_unfoldable_offset698legalized:       true699regBankSelected: true700tracksRegLiveness: true701body:             |702  bb.0:703    liveins: $x0704    ; CHECK-LABEL: name: store_adrp_add_low_unfoldable_offset705    ; CHECK: liveins: $x0706    ; CHECK-NEXT: {{  $}}707    ; CHECK-NEXT: %copy:gpr64all = COPY $x0708    ; CHECK-NEXT: %add_low:gpr64common = MOVaddr target-flags(aarch64-page) @x + 3, target-flags(aarch64-pageoff, aarch64-nc) @x + 3709    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY %copy710    ; CHECK-NEXT: STRXui [[COPY]], %add_low, 0 :: (store (p0) into @x)711    %copy:gpr(p0) = COPY $x0712    %adrp:gpr64(p0) = ADRP target-flags(aarch64-page) @x + 3713    %add_low:gpr(p0) = G_ADD_LOW %adrp(p0), target-flags(aarch64-pageoff, aarch64-nc) @x + 3714    G_STORE %copy(p0), %add_low(p0) :: (store (p0) into @x)715...716 717---718name:            truncstores719legalized:       true720regBankSelected: true721body:             |722  bb.0:723    liveins: $x0, $w1, $x2724 725    ; CHECK-LABEL: name: truncstores726    ; CHECK: liveins: $x0, $w1, $x2727    ; CHECK-NEXT: {{  $}}728    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0729    ; CHECK-NEXT: %val32:gpr32 = COPY $w1730    ; CHECK-NEXT: %val64:gpr64 = COPY $x2731    ; CHECK-NEXT: STRBBui %val32, [[COPY]], 0 :: (store (s8))732    ; CHECK-NEXT: STRBBui %val32, [[COPY]], 43 :: (store (s8))733    ; CHECK-NEXT: STRHHui %val32, [[COPY]], 0 :: (store (s16))734    ; CHECK-NEXT: STURHHi %val32, [[COPY]], 43 :: (store (s16))735    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY %val64.sub_32736    ; CHECK-NEXT: STRHHui [[COPY1]], [[COPY]], 0 :: (store (s16))737    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY %val64.sub_32738    ; CHECK-NEXT: STURHHi [[COPY2]], [[COPY]], 43 :: (store (s16))739    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY %val64.sub_32740    ; CHECK-NEXT: STRWui [[COPY3]], [[COPY]], 0 :: (store (s32))741    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr32 = COPY %val64.sub_32742    ; CHECK-NEXT: STURWi [[COPY4]], [[COPY]], 43 :: (store (s32))743    %0:gpr(p0) = COPY $x0744    %val32:gpr(s32) = COPY $w1745    %val64:gpr(s64) = COPY $x2746    G_STORE %val32, %0 :: (store (s8))747    ; unscaled offset:748    %cst:gpr(s64) = G_CONSTANT i64 43749    %newptr:gpr(p0) = G_PTR_ADD %0, %cst750    G_STORE %val32, %newptr :: (store (s8))751 752    G_STORE %val32, %0 :: (store (s16))753    ; unscaled offset:754    G_STORE %val32, %newptr :: (store (s16))755 756    G_STORE %val64, %0 :: (store (s16))757    ; unscaled offset:758    G_STORE %val64, %newptr :: (store (s16))759 760    G_STORE %val64, %0 :: (store (s32))761    ; unscaled offset:762    G_STORE %val64, %newptr :: (store (s32))763...764