brintos

brintos / llvm-project-archived public Read only

0
0
Text · 28.5 KiB · eb30581 Raw
736 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=aarch64 -run-pass=legalizer -global-isel-abort=1 %s -o - | FileCheck %s3---4name:            test_load5body: |6  bb.0:7    liveins: $x08 9    ; CHECK-LABEL: name: test_load10    ; CHECK: liveins: $x011    ; CHECK-NEXT: {{  $}}12    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x013    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p0) :: (load (s8))14    ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s8) = G_ASSERT_ZEXT [[LOAD]], 115    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ASSERT_ZEXT]](s8)16    ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)17    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s8) = G_LOAD [[COPY]](p0) :: (load (s8))18    ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD1]](s8)19    ; CHECK-NEXT: $w0 = COPY [[ANYEXT1]](s32)20    ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))21    ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD2]](s16)22    ; CHECK-NEXT: $w0 = COPY [[ANYEXT2]](s32)23    ; CHECK-NEXT: $w0 = COPY [[ANYEXT1]](s32)24    ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64))25    ; CHECK-NEXT: $x0 = COPY [[LOAD3]](s64)26    ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(p0) = G_LOAD [[COPY]](p0) :: (load (p0))27    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[LOAD4]](p0)28    ; CHECK-NEXT: $x0 = COPY [[PTRTOINT]](s64)29    ; CHECK-NEXT: [[LOAD5:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[COPY]](p0) :: (load (<2 x s32>))30    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s64) = G_BITCAST [[LOAD5]](<2 x s32>)31    ; CHECK-NEXT: $x0 = COPY [[BITCAST]](s64)32    ; CHECK-NEXT: [[LOAD6:%[0-9]+]]:_(s128) = G_LOAD [[COPY]](p0) :: (load (s128))33    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[LOAD6]](s128)34    ; CHECK-NEXT: $x0 = COPY [[TRUNC]](s64)35    %0:_(p0) = COPY $x036    %1:_(s1) = G_LOAD %0(p0) :: (load (s1))37    %2:_(s32) = G_ANYEXT %1(s1)38    $w0 = COPY %2(s32)39    %3:_(s8) = G_LOAD %0(p0) :: (load (s8))40    %4:_(s32) = G_ANYEXT %3(s8)41    $w0 = COPY %4(s32)42    %5:_(s16) = G_LOAD %0(p0) :: (load (s16))43    %6:_(s32) = G_ANYEXT %5(s16)44    $w0 = COPY %6(s32)45    %7:_(s32) = G_LOAD %0(p0) :: (load (s32))46    $w0 = COPY %4(s32)47    %8:_(s64) = G_LOAD %0(p0) :: (load (s64))48    $x0 = COPY %8(s64)49    %9:_(p0) = G_LOAD %0(p0) :: (load (p0))50    %10:_(s64) = G_PTRTOINT %9(p0)51    $x0 = COPY %10(s64)52    %11:_(<2 x s32>) = G_LOAD %0(p0) :: (load (<2 x s32>))53    %12:_(s64) = G_BITCAST %11(<2 x s32>)54    $x0 = COPY %12(s64)55    %13:_(s128) = G_LOAD %0(p0) :: (load (s128))56    %14:_(s64) = G_TRUNC %13(s128)57    $x0 = COPY %14(s64)58...59 60---61name:            test_store62body: |63  bb.0:64    liveins: $x0, $w165 66    ; CHECK-LABEL: name: test_store67    ; CHECK: liveins: $x0, $w168    ; CHECK-NEXT: {{  $}}69    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x070    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w171    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 172    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]73    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]74    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[AND1]](s32)75    ; CHECK-NEXT: G_STORE [[TRUNC]](s8), [[COPY]](p0) :: (store (s8))76    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY1]](s32)77    ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[COPY]](p0) :: (store (s8))78    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)79    ; CHECK-NEXT: G_STORE [[TRUNC2]](s16), [[COPY]](p0) :: (store (s16))80    ; CHECK-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p0) :: (store (s32))81    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)82    ; CHECK-NEXT: G_STORE [[PTRTOINT]](s64), [[COPY]](p0) :: (store (s64))83    ; CHECK-NEXT: G_STORE [[COPY]](p0), [[COPY]](p0) :: (store (p0))84    ; CHECK-NEXT: [[PTRTOINT1:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)85    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[PTRTOINT1]](s64), [[PTRTOINT1]](s64)86    ; CHECK-NEXT: G_STORE [[MV]](s128), [[COPY]](p0) :: (store (s128))87    %0:_(p0) = COPY $x088    %1:_(s32) = COPY $w189    %2:_(s1) = G_TRUNC %1(s32)90    G_STORE %2(s1), %0(p0) :: (store (s1))91    %3:_(s8) = G_TRUNC %1(s32)92    G_STORE %3(s8), %0(p0) :: (store (s8))93    %4:_(s16) = G_TRUNC %1(s32)94    G_STORE %4(s16), %0(p0) :: (store (s16))95    G_STORE %1(s32), %0(p0) :: (store (s32))96    %5:_(s64) = G_PTRTOINT %0(p0)97    G_STORE %5(s64), %0(p0) :: (store (s64))98    G_STORE %0(p0), %0(p0) :: (store (p0))99    %6:_(s64) = G_PTRTOINT %0(p0)100    %7:_(s128) = G_MERGE_VALUES %6(s64), %6101    G_STORE %7(s128), %0(p0) :: (store (s128))102...103---104name:            store_4xi16105alignment:       4106tracksRegLiveness: true107machineFunctionInfo: {}108body:             |109  bb.1:110    liveins: $d0, $x0111 112    ; CHECK-LABEL: name: store_4xi16113    ; CHECK: liveins: $d0, $x0114    ; CHECK-NEXT: {{  $}}115    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0116    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0117    ; CHECK-NEXT: G_STORE [[COPY]](<4 x s16>), [[COPY1]](p0) :: (store (<4 x s16>))118    ; CHECK-NEXT: RET_ReallyLR119    %0:_(<4 x s16>) = COPY $d0120    %1:_(p0) = COPY $x0121    G_STORE %0(<4 x s16>), %1(p0) :: (store (<4 x s16>))122    RET_ReallyLR123 124...125---126name:            store_4xi32127alignment:       4128tracksRegLiveness: true129machineFunctionInfo: {}130body:             |131  bb.1:132    liveins: $q0, $x0133 134    ; CHECK-LABEL: name: store_4xi32135    ; CHECK: liveins: $q0, $x0136    ; CHECK-NEXT: {{  $}}137    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0138    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0139    ; CHECK-NEXT: G_STORE [[COPY]](<4 x s32>), [[COPY1]](p0) :: (store (<4 x s32>))140    ; CHECK-NEXT: RET_ReallyLR141    %0:_(<4 x s32>) = COPY $q0142    %1:_(p0) = COPY $x0143    G_STORE %0(<4 x s32>), %1(p0) :: (store (<4 x s32>))144    RET_ReallyLR145 146...147---148name:            store_8xi16149alignment:       4150tracksRegLiveness: true151machineFunctionInfo: {}152body:             |153  bb.1:154    liveins: $q0, $x0155 156    ; CHECK-LABEL: name: store_8xi16157    ; CHECK: liveins: $q0, $x0158    ; CHECK-NEXT: {{  $}}159    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0160    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0161    ; CHECK-NEXT: G_STORE [[COPY]](<8 x s16>), [[COPY1]](p0) :: (store (<8 x s16>))162    ; CHECK-NEXT: RET_ReallyLR163    %0:_(<8 x s16>) = COPY $q0164    %1:_(p0) = COPY $x0165    G_STORE %0(<8 x s16>), %1(p0) :: (store (<8 x s16>))166    RET_ReallyLR167 168...169---170name:            store_16xi8171alignment:       4172tracksRegLiveness: true173machineFunctionInfo: {}174body:             |175  bb.1:176    liveins: $q0, $x0177 178    ; CHECK-LABEL: name: store_16xi8179    ; CHECK: liveins: $q0, $x0180    ; CHECK-NEXT: {{  $}}181    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0182    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0183    ; CHECK-NEXT: G_STORE [[COPY]](<16 x s8>), [[COPY1]](p0) :: (store (<16 x s8>))184    ; CHECK-NEXT: RET_ReallyLR185    %0:_(<16 x s8>) = COPY $q0186    %1:_(p0) = COPY $x0187    G_STORE %0(<16 x s8>), %1(p0) :: (store (<16 x s8>))188    RET_ReallyLR189 190...191---192name:            load_4xi16193alignment:       4194tracksRegLiveness: true195machineFunctionInfo: {}196body:             |197  bb.1:198    liveins: $x0199 200    ; CHECK-LABEL: name: load_4xi16201    ; CHECK: liveins: $x0202    ; CHECK-NEXT: {{  $}}203    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0204    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<4 x s16>) = G_LOAD [[COPY]](p0) :: (load (<4 x s16>))205    ; CHECK-NEXT: $d0 = COPY [[LOAD]](<4 x s16>)206    ; CHECK-NEXT: RET_ReallyLR implicit $d0207    %0:_(p0) = COPY $x0208    %1:_(<4 x s16>) = G_LOAD %0(p0) :: (load (<4 x s16>))209    $d0 = COPY %1(<4 x s16>)210    RET_ReallyLR implicit $d0211 212...213---214name:            load_4xi32215alignment:       4216tracksRegLiveness: true217machineFunctionInfo: {}218body:             |219  bb.1:220    liveins: $x0221 222    ; CHECK-LABEL: name: load_4xi32223    ; CHECK: liveins: $x0224    ; CHECK-NEXT: {{  $}}225    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0226    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>))227    ; CHECK-NEXT: $q0 = COPY [[LOAD]](<4 x s32>)228    ; CHECK-NEXT: RET_ReallyLR implicit $q0229    %0:_(p0) = COPY $x0230    %1:_(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>))231    $q0 = COPY %1(<4 x s32>)232    RET_ReallyLR implicit $q0233 234...235---236name:            load_8xi16237alignment:       4238tracksRegLiveness: true239machineFunctionInfo: {}240body:             |241  bb.1:242    liveins: $x0243 244    ; CHECK-LABEL: name: load_8xi16245    ; CHECK: liveins: $x0246    ; CHECK-NEXT: {{  $}}247    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0248    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load (<8 x s16>))249    ; CHECK-NEXT: $q0 = COPY [[LOAD]](<8 x s16>)250    ; CHECK-NEXT: RET_ReallyLR implicit $q0251    %0:_(p0) = COPY $x0252    %1:_(<8 x s16>) = G_LOAD %0(p0) :: (load (<8 x s16>))253    $q0 = COPY %1(<8 x s16>)254    RET_ReallyLR implicit $q0255 256...257---258name:            load_16xi8259alignment:       4260tracksRegLiveness: true261machineFunctionInfo: {}262body:             |263  bb.1:264    liveins: $x0265 266    ; CHECK-LABEL: name: load_16xi8267    ; CHECK: liveins: $x0268    ; CHECK-NEXT: {{  $}}269    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0270    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load (<16 x s8>))271    ; CHECK-NEXT: $q0 = COPY [[LOAD]](<16 x s8>)272    ; CHECK-NEXT: RET_ReallyLR implicit $q0273    %0:_(p0) = COPY $x0274    %1:_(<16 x s8>) = G_LOAD %0(p0) :: (load (<16 x s8>))275    $q0 = COPY %1(<16 x s8>)276    RET_ReallyLR implicit $q0277 278...279---280name:            load_8xi8281alignment:       4282tracksRegLiveness: true283machineFunctionInfo: {}284body:             |285  bb.1:286    liveins: $x0287    ; CHECK-LABEL: name: load_8xi8288    ; CHECK: liveins: $x0289    ; CHECK-NEXT: {{  $}}290    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0291    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<8 x s8>) = G_LOAD [[COPY]](p0) :: (load (<8 x s8>))292    ; CHECK-NEXT: $d0 = COPY [[LOAD]](<8 x s8>)293    ; CHECK-NEXT: RET_ReallyLR implicit $d0294    %0:_(p0) = COPY $x0295    %1:_(<8 x s8>) = G_LOAD %0(p0) :: (load (<8 x s8>))296    $d0 = COPY %1(<8 x s8>)297    RET_ReallyLR implicit $d0298 299...300---301name:            store_8xi8302alignment:       4303tracksRegLiveness: true304machineFunctionInfo: {}305body:             |306  bb.1:307    liveins: $x0, $d0308    ; CHECK-LABEL: name: store_8xi8309    ; CHECK: liveins: $x0, $d0310    ; CHECK-NEXT: {{  $}}311    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0312    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d0313    ; CHECK-NEXT: G_STORE [[COPY1]](<8 x s8>), [[COPY]](p0) :: (store (<8 x s8>))314    ; CHECK-NEXT: RET_ReallyLR315    %0:_(p0) = COPY $x0316    %1:_(<8 x s8>) = COPY $d0317    G_STORE %1(<8 x s8>), %0(p0) :: (store (<8 x s8>))318    RET_ReallyLR319...320---321name:            store_32xs8322alignment:       4323tracksRegLiveness: true324machineFunctionInfo: {}325body:             |326  bb.1:327    liveins: $x0328    ; CHECK-LABEL: name: store_32xs8329    ; CHECK: liveins: $x0330    ; CHECK-NEXT: {{  $}}331    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<16 x s8>) = G_IMPLICIT_DEF332    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0333    ; CHECK-NEXT: G_STORE [[DEF]](<16 x s8>), %ptr(p0) :: (store (<16 x s8>), align 32)334    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16335    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)336    ; CHECK-NEXT: G_STORE [[DEF]](<16 x s8>), [[PTR_ADD]](p0) :: (store (<16 x s8>) into unknown-address + 16)337    ; CHECK-NEXT: RET_ReallyLR338    %val:_(<32 x s8>) = G_IMPLICIT_DEF339    %ptr:_(p0) = COPY $x0340    G_STORE %val(<32 x s8>), %ptr(p0) :: (store (<32 x s8>))341    RET_ReallyLR342...343---344name:            store_16xs16345alignment:       4346tracksRegLiveness: true347machineFunctionInfo: {}348body:             |349  bb.1:350    liveins: $x0351    ; CHECK-LABEL: name: store_16xs16352    ; CHECK: liveins: $x0353    ; CHECK-NEXT: {{  $}}354    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF355    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0356    ; CHECK-NEXT: G_STORE [[DEF]](<8 x s16>), %ptr(p0) :: (store (<8 x s16>), align 32)357    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16358    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)359    ; CHECK-NEXT: G_STORE [[DEF]](<8 x s16>), [[PTR_ADD]](p0) :: (store (<8 x s16>) into unknown-address + 16)360    ; CHECK-NEXT: RET_ReallyLR361    %val:_(<16 x s16>) = G_IMPLICIT_DEF362    %ptr:_(p0) = COPY $x0363    G_STORE %val(<16 x s16>), %ptr(p0) :: (store (<16 x s16>))364    RET_ReallyLR365...366---367name:            store_8xs32368alignment:       4369tracksRegLiveness: true370machineFunctionInfo: {}371body:             |372  bb.1:373    liveins: $x0374    ; CHECK-LABEL: name: store_8xs32375    ; CHECK: liveins: $x0376    ; CHECK-NEXT: {{  $}}377    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF378    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0379    ; CHECK-NEXT: G_STORE [[DEF]](<4 x s32>), %ptr(p0) :: (store (<4 x s32>), align 32)380    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16381    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)382    ; CHECK-NEXT: G_STORE [[DEF]](<4 x s32>), [[PTR_ADD]](p0) :: (store (<4 x s32>) into unknown-address + 16)383    ; CHECK-NEXT: RET_ReallyLR384    %val:_(<8 x s32>) = G_IMPLICIT_DEF385    %ptr:_(p0) = COPY $x0386    G_STORE %val(<8 x s32>), %ptr(p0) :: (store (<8 x s32>))387    RET_ReallyLR388...389---390name:            store_4xs64391alignment:       4392tracksRegLiveness: true393machineFunctionInfo: {}394body:             |395  bb.1:396    liveins: $x0397    ; CHECK-LABEL: name: store_4xs64398    ; CHECK: liveins: $x0399    ; CHECK-NEXT: {{  $}}400    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF401    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0402    ; CHECK-NEXT: G_STORE [[DEF]](<2 x s64>), %ptr(p0) :: (store (<2 x s64>), align 32)403    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16404    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)405    ; CHECK-NEXT: G_STORE [[DEF]](<2 x s64>), [[PTR_ADD]](p0) :: (store (<2 x s64>) into unknown-address + 16)406    ; CHECK-NEXT: RET_ReallyLR407    %val:_(<4 x s64>) = G_IMPLICIT_DEF408    %ptr:_(p0) = COPY $x0409    G_STORE %val(<4 x s64>), %ptr(p0) :: (store (<4 x s64>))410    RET_ReallyLR411...412---413name:            load_32xs8414alignment:       4415tracksRegLiveness: true416machineFunctionInfo: {}417body:             |418  bb.1:419    liveins: $x0420    ; CHECK-LABEL: name: load_32xs8421    ; CHECK: liveins: $x0422    ; CHECK-NEXT: {{  $}}423    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0424    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<16 x s8>) = G_LOAD %ptr(p0) :: (load (<16 x s8>), align 32)425    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16426    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)427    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(<16 x s8>) = G_LOAD [[PTR_ADD]](p0) :: (load (<16 x s8>) from unknown-address + 16)428    ; CHECK-NEXT: G_STORE [[LOAD]](<16 x s8>), %ptr(p0) :: (store (<16 x s8>), align 32)429    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)430    ; CHECK-NEXT: G_STORE [[LOAD1]](<16 x s8>), [[PTR_ADD1]](p0) :: (store (<16 x s8>) into unknown-address + 16)431    ; CHECK-NEXT: RET_ReallyLR432    %ptr:_(p0) = COPY $x0433    %val:_(<32 x s8>) = G_LOAD %ptr(p0) :: (load (<32 x s8>))434    G_STORE %val(<32 x s8>), %ptr(p0) :: (store (<32 x s8>))435    RET_ReallyLR436...437---438name:            load_16xs16439alignment:       4440tracksRegLiveness: true441machineFunctionInfo: {}442body:             |443  bb.1:444    liveins: $x0445    ; CHECK-LABEL: name: load_16xs16446    ; CHECK: liveins: $x0447    ; CHECK-NEXT: {{  $}}448    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0449    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<8 x s16>) = G_LOAD %ptr(p0) :: (load (<8 x s16>), align 32)450    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16451    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)452    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(<8 x s16>) = G_LOAD [[PTR_ADD]](p0) :: (load (<8 x s16>) from unknown-address + 16)453    ; CHECK-NEXT: G_STORE [[LOAD]](<8 x s16>), %ptr(p0) :: (store (<8 x s16>), align 32)454    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)455    ; CHECK-NEXT: G_STORE [[LOAD1]](<8 x s16>), [[PTR_ADD1]](p0) :: (store (<8 x s16>) into unknown-address + 16)456    ; CHECK-NEXT: RET_ReallyLR457    %ptr:_(p0) = COPY $x0458    %val:_(<16 x s16>) = G_LOAD %ptr(p0) :: (load (<16 x s16>))459    G_STORE %val(<16 x s16>), %ptr(p0) :: (store (<16 x s16>))460    RET_ReallyLR461...462---463name:            load_8xs32464alignment:       4465tracksRegLiveness: true466machineFunctionInfo: {}467body:             |468  bb.1:469    liveins: $x0470    ; CHECK-LABEL: name: load_8xs32471    ; CHECK: liveins: $x0472    ; CHECK-NEXT: {{  $}}473    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0474    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD %ptr(p0) :: (load (<4 x s32>), align 32)475    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16476    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)477    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p0) :: (load (<4 x s32>) from unknown-address + 16)478    ; CHECK-NEXT: G_STORE [[LOAD]](<4 x s32>), %ptr(p0) :: (store (<4 x s32>), align 32)479    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)480    ; CHECK-NEXT: G_STORE [[LOAD1]](<4 x s32>), [[PTR_ADD1]](p0) :: (store (<4 x s32>) into unknown-address + 16)481    ; CHECK-NEXT: RET_ReallyLR482    %ptr:_(p0) = COPY $x0483    %val:_(<8 x s32>) = G_LOAD %ptr(p0) :: (load (<8 x s32>))484    G_STORE %val(<8 x s32>), %ptr(p0) :: (store (<8 x s32>))485    RET_ReallyLR486...487---488name:            load_4xs64489alignment:       4490tracksRegLiveness: true491machineFunctionInfo: {}492body:             |493  bb.1:494    liveins: $x0495    ; CHECK-LABEL: name: load_4xs64496    ; CHECK: liveins: $x0497    ; CHECK-NEXT: {{  $}}498    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0499    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD %ptr(p0) :: (load (<2 x s64>), align 32)500    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16501    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)502    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[PTR_ADD]](p0) :: (load (<2 x s64>) from unknown-address + 16)503    ; CHECK-NEXT: G_STORE [[LOAD]](<2 x s64>), %ptr(p0) :: (store (<2 x s64>), align 32)504    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)505    ; CHECK-NEXT: G_STORE [[LOAD1]](<2 x s64>), [[PTR_ADD1]](p0) :: (store (<2 x s64>) into unknown-address + 16)506    ; CHECK-NEXT: RET_ReallyLR507    %ptr:_(p0) = COPY $x0508    %val:_(<4 x s64>) = G_LOAD %ptr(p0) :: (load (<4 x s64>))509    G_STORE %val(<4 x s64>), %ptr(p0) :: (store (<4 x s64>))510    RET_ReallyLR511...512---513name:            test_trunc_store514body: |515  bb.0:516    liveins: $x0, $w1517 518    ; CHECK-LABEL: name: test_trunc_store519    ; CHECK: liveins: $x0, $w1520    ; CHECK-NEXT: {{  $}}521    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0522    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1523    ; CHECK-NEXT: %val64:_(s64) = COPY $x2524    ; CHECK-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p0) :: (store (s8))525    ; CHECK-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p0) :: (store (s16))526    ; CHECK-NEXT: G_STORE %val64(s64), [[COPY]](p0) :: (store (s8))527    ; CHECK-NEXT: G_STORE %val64(s64), [[COPY]](p0) :: (store (s16))528    ; CHECK-NEXT: G_STORE %val64(s64), [[COPY]](p0) :: (store (s32))529    %0:_(p0) = COPY $x0530    %1:_(s32) = COPY $w1531    %2:_(s8) = G_TRUNC %1(s32)532    %val64:_(s64) = COPY $x2533    G_STORE %1(s32), %0(p0) :: (store (s8))534    G_STORE %1(s32), %0(p0) :: (store (s16))535    G_STORE %val64(s64), %0(p0) :: (store (s8))536    G_STORE %val64(s64), %0(p0) :: (store (s16))537    G_STORE %val64(s64), %0(p0) :: (store (s32))538...539---540name:            store_6xs64541tracksRegLiveness: true542body:             |543  bb.1:544    liveins: $x0545    ; CHECK-LABEL: name: store_6xs64546    ; CHECK: liveins: $x0547    ; CHECK-NEXT: {{  $}}548    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF549    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[DEF]](s64), [[DEF]](s64)550    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[DEF]](s64), [[DEF]](s64)551    ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[DEF]](s64), [[DEF]](s64)552    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0553    ; CHECK-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s64>), %ptr(p0) :: (store (<2 x s64>))554    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16555    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)556    ; CHECK-NEXT: G_STORE [[BUILD_VECTOR1]](<2 x s64>), [[PTR_ADD]](p0) :: (store (<2 x s64>) into unknown-address + 16)557    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 32558    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C1]](s64)559    ; CHECK-NEXT: G_STORE [[BUILD_VECTOR2]](<2 x s64>), [[PTR_ADD1]](p0) :: (store (<2 x s64>) into unknown-address + 32)560    ; CHECK-NEXT: RET_ReallyLR561    %val:_(<6 x s64>) = G_IMPLICIT_DEF562    %ptr:_(p0) = COPY $x0563    G_STORE %val(<6 x s64>), %ptr(p0) :: (store (<6 x s64>), align 16)564    RET_ReallyLR565...566---567name:            store_2xi16568tracksRegLiveness: true569body:             |570  bb.1:571    liveins: $s0, $x0572 573    ; CHECK-LABEL: name: store_2xi16574    ; CHECK: liveins: $s0, $x0575    ; CHECK-NEXT: {{  $}}576    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0577    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $s0578    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](<2 x s16>)579    ; CHECK-NEXT: G_STORE [[UV]](s16), [[COPY]](p0) :: (store (s16), align 4)580    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2581    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)582    ; CHECK-NEXT: G_STORE [[UV1]](s16), [[PTR_ADD]](p0) :: (store (s16) into unknown-address + 2)583    ; CHECK-NEXT: RET_ReallyLR584    %0:_(p0) = COPY $x0585    %1:_(<2 x s16>) = COPY $s0586    G_STORE %1(<2 x s16>), %0(p0) :: (store (<2 x s16>))587    RET_ReallyLR588 589...590---591name:            load_2xi16592tracksRegLiveness: true593body:             |594  bb.1:595    liveins: $s0, $x0596 597    ; CHECK-LABEL: name: load_2xi16598    ; CHECK: liveins: $s0, $x0599    ; CHECK-NEXT: {{  $}}600    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0601    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16), align 4)602    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2603    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)604    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s16) = G_LOAD [[PTR_ADD]](p0) :: (load (s16) from unknown-address + 2)605    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)606    ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD1]](s16)607    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF608    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[DEF]](s32), [[DEF]](s32)609    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[BUILD_VECTOR]](<4 x s32>)610    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[TRUNC]](<4 x s16>)611    ; CHECK-NEXT: $s0 = COPY [[UV]](<2 x s16>)612    ; CHECK-NEXT: RET_ReallyLR613    %0:_(p0) = COPY $x0614    %1(<2 x s16>) = G_LOAD %0(p0) :: (load (<2 x s16>))615    $s0 = COPY %1:_(<2 x s16>)616    RET_ReallyLR617 618...619---620name:            load_store_s88_s88_mem_size621tracksRegLiveness: true622body:             |623  bb.0:624    liveins: $x0625    ; CHECK-LABEL: name: load_store_s88_s88_mem_size626    ; CHECK: liveins: $x0627    ; CHECK-NEXT: {{  $}}628    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0629    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD %ptr(p0) :: (load (s64), align 16)630    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0631    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8632    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C1]](s64)633    ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD]](p0) :: (load (s16) from unknown-address + 8, align 8)634    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2635    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD]], [[C2]](s64)636    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8) from unknown-address + 10, align 2)637    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF638    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[LOAD1]](s32), [[DEF]](s32)639    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16640    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[MV]], [[C3]](s64)641    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]642    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[C]], [[LOAD]]643    ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s64) = G_OR [[OR]], [[C]]644    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY [[OR1]](s64)645    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[OR2]](s64)646    ; CHECK-NEXT: G_STORE [[COPY]](s64), %ptr(p0) :: (store (s64), align 16)647    ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C1]](s64)648    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[TRUNC]], [[C3]](s64)649    ; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD2]], [[C2]](s64)650    ; CHECK-NEXT: G_STORE [[TRUNC]](s32), [[PTR_ADD2]](p0) :: (store (s16) into unknown-address + 8, align 8)651    ; CHECK-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD3]](p0) :: (store (s8) into unknown-address + 10, align 2)652    ; CHECK-NEXT: RET_ReallyLR653    %ptr:_(p0) = COPY $x0654    %load:_(s88) = G_LOAD %ptr(p0) :: (load (s88))655    G_STORE %load(s88), %ptr(p0) :: (store (s88))656    RET_ReallyLR657...658---659name:            load_store_s88_s64_mem_size660tracksRegLiveness: true661body:             |662  bb.0:663    liveins: $x0664    ; CHECK-LABEL: name: load_store_s88_s64_mem_size665    ; CHECK: liveins: $x0666    ; CHECK-NEXT: {{  $}}667    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0668    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD %ptr(p0) :: (load (s64))669    ; CHECK-NEXT: G_STORE [[LOAD]](s64), %ptr(p0) :: (store (s64))670    ; CHECK-NEXT: RET_ReallyLR671    %ptr:_(p0) = COPY $x0672    %load:_(s88) = G_LOAD %ptr(p0) :: (load (s64))673    G_STORE %load(s88), %ptr(p0) :: (store (s64))674    RET_ReallyLR675...676---677name:            load_s1678alignment:       4679tracksRegLiveness: true680machineFunctionInfo: {}681body:             |682  bb.1:683    liveins: $x0684    ; CHECK-LABEL: name: load_s1685    ; CHECK: liveins: $x0686    ; CHECK-NEXT: {{  $}}687    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0688    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD %ptr(p0) :: (load (s8))689    ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s8) = G_ASSERT_ZEXT [[LOAD]], 1690    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ASSERT_ZEXT]](s8)691    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1692    ; CHECK-NEXT: %ext:_(s64) = G_AND [[ANYEXT]], [[C]]693    ; CHECK-NEXT: $x0 = COPY %ext(s64)694    ; CHECK-NEXT: RET_ReallyLR implicit $x0695    %ptr:_(p0) = COPY $x0696    %load:_(s1) = G_LOAD %ptr(p0) :: (load (s1))697    %ext:_(s64) = G_ZEXT %load698    $x0 = COPY %ext699    RET_ReallyLR implicit $x0700...701---702name:            load_store_6xp0703alignment:       4704tracksRegLiveness: true705machineFunctionInfo: {}706body:             |707  bb.1:708    liveins: $x0709    ; CHECK-LABEL: name: load_store_6xp0710    ; CHECK: liveins: $x0711    ; CHECK-NEXT: {{  $}}712    ; CHECK-NEXT: %ptr:_(p0) = COPY $x0713    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s64>) = G_LOAD %ptr(p0) :: (load (<2 x s64>), align 64)714    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x p0>) = G_BITCAST [[LOAD]](<2 x s64>)715    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16716    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)717    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[PTR_ADD]](p0) :: (load (<2 x s64>) from unknown-address + 16)718    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x p0>) = G_BITCAST [[LOAD1]](<2 x s64>)719    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 32720    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C1]](s64)721    ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(<2 x s64>) = G_LOAD [[PTR_ADD1]](p0) :: (load (<2 x s64>) from unknown-address + 32, align 32)722    ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x p0>) = G_BITCAST [[LOAD2]](<2 x s64>)723    ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s64>) = G_BITCAST [[BITCAST]](<2 x p0>)724    ; CHECK-NEXT: G_STORE [[BITCAST3]](<2 x s64>), %ptr(p0) :: (store (<2 x s64>), align 64)725    ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C]](s64)726    ; CHECK-NEXT: [[BITCAST4:%[0-9]+]]:_(<2 x s64>) = G_BITCAST [[BITCAST1]](<2 x p0>)727    ; CHECK-NEXT: G_STORE [[BITCAST4]](<2 x s64>), [[PTR_ADD2]](p0) :: (store (<2 x s64>) into unknown-address + 16)728    ; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD %ptr, [[C1]](s64)729    ; CHECK-NEXT: [[BITCAST5:%[0-9]+]]:_(<2 x s64>) = G_BITCAST [[BITCAST2]](<2 x p0>)730    ; CHECK-NEXT: G_STORE [[BITCAST5]](<2 x s64>), [[PTR_ADD3]](p0) :: (store (<2 x s64>) into unknown-address + 32, align 32)731    ; CHECK-NEXT: RET_ReallyLR732    %ptr:_(p0) = COPY $x0733    %val:_(<6 x p0>) = G_LOAD %ptr(p0) :: (load (<6 x p0>))734    G_STORE %val(<6 x p0>), %ptr(p0) :: (store (<6 x p0>))735    RET_ReallyLR736