brintos

brintos / llvm-project-archived public Read only

0
0
Text · 25.2 KiB · 62c1529 Raw
783 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=loadstore-opt -verify-machineinstrs %s -o - | FileCheck %s3---4name:            trunc_i16_to_i85alignment:       46tracksRegLiveness: true7liveins:8  - { reg: '$w0' }9  - { reg: '$x1' }10body:             |11  bb.1:12    liveins: $w0, $x113 14    ; CHECK-LABEL: name: trunc_i16_to_i815    ; CHECK: liveins: $w0, $x116    ; CHECK-NEXT: {{  $}}17    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w018    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)19    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x120    ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[COPY1]](p0) :: (store (s16), align 1)21    ; CHECK-NEXT: RET_ReallyLR22    %2:_(s32) = COPY $w023    %0:_(s16) = G_TRUNC %2(s32)24    %1:_(p0) = COPY $x125    %4:_(s16) = G_CONSTANT i16 826    %3:_(s8) = G_TRUNC %0(s16)27    %5:_(s16) = G_LSHR %0, %4(s16)28    %6:_(s8) = G_TRUNC %5(s16)29    G_STORE %3(s8), %1(p0) :: (store (s8))30    %7:_(s64) = G_CONSTANT i64 131    %8:_(p0) = G_PTR_ADD %1, %7(s64)32    G_STORE %6(s8), %8(p0) :: (store (s8))33    RET_ReallyLR34 35...36---37name:            trunc_i32_to_i838alignment:       439tracksRegLiveness: true40liveins:41  - { reg: '$w0' }42  - { reg: '$x1' }43body:             |44  bb.1:45    liveins: $w0, $x146 47    ; CHECK-LABEL: name: trunc_i32_to_i848    ; CHECK: liveins: $w0, $x149    ; CHECK-NEXT: {{  $}}50    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w051    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x152    ; CHECK-NEXT: G_STORE [[COPY]](s32), [[COPY1]](p0) :: (store (s32), align 1)53    ; CHECK-NEXT: RET_ReallyLR54    %0:_(s32) = COPY $w055    %1:_(p0) = COPY $x156    %3:_(s32) = G_CONSTANT i32 857    %6:_(s32) = G_CONSTANT i32 1658    %9:_(s32) = G_CONSTANT i32 2459    %2:_(s8) = G_TRUNC %0(s32)60    %4:_(s32) = G_LSHR %0, %3(s32)61    %5:_(s8) = G_TRUNC %4(s32)62    %7:_(s32) = G_LSHR %0, %6(s32)63    %8:_(s8) = G_TRUNC %7(s32)64    %10:_(s32) = G_LSHR %0, %9(s32)65    %11:_(s8) = G_TRUNC %10(s32)66    G_STORE %2(s8), %1(p0) :: (store (s8))67    %12:_(s64) = G_CONSTANT i64 168    %13:_(p0) = G_PTR_ADD %1, %12(s64)69    G_STORE %5(s8), %13(p0) :: (store (s8))70    %14:_(s64) = G_CONSTANT i64 271    %15:_(p0) = G_PTR_ADD %1, %14(s64)72    G_STORE %8(s8), %15(p0) :: (store (s8))73    %16:_(s64) = G_CONSTANT i64 374    %17:_(p0) = G_PTR_ADD %1, %16(s64)75    G_STORE %11(s8), %17(p0) :: (store (s8))76    RET_ReallyLR77 78...79---80name:            trunc_i32_to_i1681alignment:       482tracksRegLiveness: true83liveins:84  - { reg: '$w0' }85  - { reg: '$x1' }86body:             |87  bb.1:88    liveins: $w0, $x189 90    ; CHECK-LABEL: name: trunc_i32_to_i1691    ; CHECK: liveins: $w0, $x192    ; CHECK-NEXT: {{  $}}93    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w094    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x195    ; CHECK-NEXT: G_STORE [[COPY]](s32), [[COPY1]](p0) :: (store (s32), align 2)96    ; CHECK-NEXT: RET_ReallyLR97    %0:_(s32) = COPY $w098    %1:_(p0) = COPY $x199    %3:_(s32) = G_CONSTANT i32 16100    %2:_(s16) = G_TRUNC %0(s32)101    %4:_(s32) = G_LSHR %0, %3(s32)102    %5:_(s16) = G_TRUNC %4(s32)103    G_STORE %2(s16), %1(p0) :: (store (s16))104    %6:_(s64) = G_CONSTANT i64 2105    %7:_(p0) = G_PTR_ADD %1, %6(s64)106    G_STORE %5(s16), %7(p0) :: (store (s16))107    RET_ReallyLR108 109...110---111name:            be_i32_to_i16112alignment:       4113tracksRegLiveness: true114liveins:115  - { reg: '$w0' }116  - { reg: '$x1' }117body:             |118  bb.1:119    liveins: $w0, $x1120 121    ; CHECK-LABEL: name: be_i32_to_i16122    ; CHECK: liveins: $w0, $x1123    ; CHECK-NEXT: {{  $}}124    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0125    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1126    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16127    ; CHECK-NEXT: [[ROTR:%[0-9]+]]:_(s32) = G_ROTR [[COPY]], [[C]](s32)128    ; CHECK-NEXT: G_STORE [[ROTR]](s32), [[COPY1]](p0) :: (store (s32), align 2)129    ; CHECK-NEXT: RET_ReallyLR130    %0:_(s32) = COPY $w0131    %1:_(p0) = COPY $x1132    %2:_(s32) = G_CONSTANT i32 16133    %3:_(s32) = G_LSHR %0, %2(s32)134    %4:_(s16) = G_TRUNC %0(s32)135    %5:_(s16) = G_TRUNC %3(s32)136    %6:_(s64) = G_CONSTANT i64 2137    %7:_(p0) = G_PTR_ADD %1, %6(s64)138    G_STORE %4(s16), %7(p0) :: (store (s16))139    G_STORE %5(s16), %1(p0) :: (store (s16))140    RET_ReallyLR141 142...143---144name:            be_i32_to_i16_order145alignment:       4146tracksRegLiveness: true147liveins:148  - { reg: '$w0' }149  - { reg: '$x1' }150body:             |151  bb.1:152    liveins: $w0, $x1153 154    ; CHECK-LABEL: name: be_i32_to_i16_order155    ; CHECK: liveins: $w0, $x1156    ; CHECK-NEXT: {{  $}}157    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0158    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1159    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16160    ; CHECK-NEXT: [[ROTR:%[0-9]+]]:_(s32) = G_ROTR [[COPY]], [[C]](s32)161    ; CHECK-NEXT: G_STORE [[ROTR]](s32), [[COPY1]](p0) :: (store (s32), align 2)162    ; CHECK-NEXT: RET_ReallyLR163    %0:_(s32) = COPY $w0164    %1:_(p0) = COPY $x1165    %2:_(s32) = G_CONSTANT i32 16166    %3:_(s32) = G_LSHR %0, %2(s32)167    %4:_(s16) = G_TRUNC %0(s32)168    %5:_(s16) = G_TRUNC %3(s32)169    %6:_(s64) = G_CONSTANT i64 2170    %7:_(p0) = G_PTR_ADD %1, %6(s64)171    G_STORE %5(s16), %1(p0) :: (store (s16))172    G_STORE %4(s16), %7(p0) :: (store (s16))173    RET_ReallyLR174 175...176---177name:            trunc_i64_to_i8178alignment:       4179tracksRegLiveness: true180liveins:181  - { reg: '$x0' }182  - { reg: '$x1' }183body:             |184  bb.1:185    liveins: $x0, $x1186 187    ; CHECK-LABEL: name: trunc_i64_to_i8188    ; CHECK: liveins: $x0, $x1189    ; CHECK-NEXT: {{  $}}190    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0191    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1192    ; CHECK-NEXT: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64), align 1)193    ; CHECK-NEXT: RET_ReallyLR194    %0:_(s64) = COPY $x0195    %1:_(p0) = COPY $x1196    %3:_(s64) = G_CONSTANT i64 8197    %6:_(s64) = G_CONSTANT i64 16198    %9:_(s64) = G_CONSTANT i64 24199    %12:_(s64) = G_CONSTANT i64 32200    %15:_(s64) = G_CONSTANT i64 40201    %18:_(s64) = G_CONSTANT i64 48202    %21:_(s64) = G_CONSTANT i64 56203    %2:_(s8) = G_TRUNC %0(s64)204    %4:_(s64) = G_LSHR %0, %3(s64)205    %5:_(s8) = G_TRUNC %4(s64)206    %7:_(s64) = G_LSHR %0, %6(s64)207    %8:_(s8) = G_TRUNC %7(s64)208    %10:_(s64) = G_LSHR %0, %9(s64)209    %11:_(s8) = G_TRUNC %10(s64)210    %13:_(s64) = G_LSHR %0, %12(s64)211    %14:_(s8) = G_TRUNC %13(s64)212    %16:_(s64) = G_LSHR %0, %15(s64)213    %17:_(s8) = G_TRUNC %16(s64)214    %19:_(s64) = G_LSHR %0, %18(s64)215    %20:_(s8) = G_TRUNC %19(s64)216    %22:_(s64) = G_LSHR %0, %21(s64)217    %23:_(s8) = G_TRUNC %22(s64)218    G_STORE %2(s8), %1(p0) :: (store (s8))219    %24:_(s64) = G_CONSTANT i64 1220    %25:_(p0) = G_PTR_ADD %1, %24(s64)221    G_STORE %5(s8), %25(p0) :: (store (s8))222    %26:_(s64) = G_CONSTANT i64 2223    %27:_(p0) = G_PTR_ADD %1, %26(s64)224    G_STORE %8(s8), %27(p0) :: (store (s8))225    %28:_(s64) = G_CONSTANT i64 3226    %29:_(p0) = G_PTR_ADD %1, %28(s64)227    G_STORE %11(s8), %29(p0) :: (store (s8))228    %30:_(s64) = G_CONSTANT i64 4229    %31:_(p0) = G_PTR_ADD %1, %30(s64)230    G_STORE %14(s8), %31(p0) :: (store (s8))231    %32:_(s64) = G_CONSTANT i64 5232    %33:_(p0) = G_PTR_ADD %1, %32(s64)233    G_STORE %17(s8), %33(p0) :: (store (s8))234    %34:_(s64) = G_CONSTANT i64 6235    %35:_(p0) = G_PTR_ADD %1, %34(s64)236    G_STORE %20(s8), %35(p0) :: (store (s8))237    %36:_(s64) = G_CONSTANT i64 7238    %37:_(p0) = G_PTR_ADD %1, %36(s64)239    G_STORE %23(s8), %37(p0) :: (store (s8))240    RET_ReallyLR241 242...243---244name:            trunc_i64_to_i16245alignment:       4246tracksRegLiveness: true247liveins:248  - { reg: '$x0' }249  - { reg: '$x1' }250body:             |251  bb.1:252    liveins: $x0, $x1253 254    ; CHECK-LABEL: name: trunc_i64_to_i16255    ; CHECK: liveins: $x0, $x1256    ; CHECK-NEXT: {{  $}}257    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0258    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1259    ; CHECK-NEXT: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64), align 2)260    ; CHECK-NEXT: RET_ReallyLR261    %0:_(s64) = COPY $x0262    %1:_(p0) = COPY $x1263    %3:_(s64) = G_CONSTANT i64 16264    %6:_(s64) = G_CONSTANT i64 32265    %9:_(s64) = G_CONSTANT i64 48266    %2:_(s16) = G_TRUNC %0(s64)267    %4:_(s64) = G_LSHR %0, %3(s64)268    %5:_(s16) = G_TRUNC %4(s64)269    %7:_(s64) = G_LSHR %0, %6(s64)270    %8:_(s16) = G_TRUNC %7(s64)271    %10:_(s64) = G_LSHR %0, %9(s64)272    %11:_(s16) = G_TRUNC %10(s64)273    G_STORE %2(s16), %1(p0) :: (store (s16))274    %12:_(s64) = G_CONSTANT i64 2275    %13:_(p0) = G_PTR_ADD %1, %12(s64)276    G_STORE %5(s16), %13(p0) :: (store (s16))277    %14:_(s64) = G_CONSTANT i64 4278    %15:_(p0) = G_PTR_ADD %1, %14(s64)279    G_STORE %8(s16), %15(p0) :: (store (s16))280    %16:_(s64) = G_CONSTANT i64 6281    %17:_(p0) = G_PTR_ADD %1, %16(s64)282    G_STORE %11(s16), %17(p0) :: (store (s16))283    RET_ReallyLR284 285...286---287name:            trunc_i64_to_i32288alignment:       4289tracksRegLiveness: true290liveins:291  - { reg: '$x0' }292  - { reg: '$x1' }293body:             |294  bb.1:295    liveins: $x0, $x1296 297    ; CHECK-LABEL: name: trunc_i64_to_i32298    ; CHECK: liveins: $x0, $x1299    ; CHECK-NEXT: {{  $}}300    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0301    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1302    ; CHECK-NEXT: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64), align 4)303    ; CHECK-NEXT: RET_ReallyLR304    %0:_(s64) = COPY $x0305    %1:_(p0) = COPY $x1306    %3:_(s64) = G_CONSTANT i64 32307    %2:_(s32) = G_TRUNC %0(s64)308    %4:_(s64) = G_LSHR %0, %3(s64)309    %5:_(s32) = G_TRUNC %4(s64)310    G_STORE %2(s32), %1(p0) :: (store (s32))311    %6:_(s64) = G_CONSTANT i64 4312    %7:_(p0) = G_PTR_ADD %1, %6(s64)313    G_STORE %5(s32), %7(p0) :: (store (s32))314    RET_ReallyLR315 316...317---318name:            be_i64_to_i32319alignment:       4320tracksRegLiveness: true321liveins:322  - { reg: '$x0' }323  - { reg: '$x1' }324body:             |325  bb.1:326    liveins: $x0, $x1327 328    ; CHECK-LABEL: name: be_i64_to_i32329    ; CHECK: liveins: $x0, $x1330    ; CHECK-NEXT: {{  $}}331    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0332    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1333    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32334    ; CHECK-NEXT: [[ROTR:%[0-9]+]]:_(s64) = G_ROTR [[COPY]], [[C]](s64)335    ; CHECK-NEXT: G_STORE [[ROTR]](s64), [[COPY1]](p0) :: (store (s64), align 4)336    ; CHECK-NEXT: RET_ReallyLR337    %0:_(s64) = COPY $x0338    %1:_(p0) = COPY $x1339    %2:_(s64) = G_CONSTANT i64 32340    %3:_(s64) = G_LSHR %0, %2(s64)341    %4:_(s32) = G_TRUNC %0(s64)342    %5:_(s32) = G_TRUNC %3(s64)343    %6:_(s64) = G_CONSTANT i64 4344    %7:_(p0) = G_PTR_ADD %1, %6(s64)345    G_STORE %4(s32), %7(p0) :: (store (s32))346    G_STORE %5(s32), %1(p0) :: (store (s32))347    RET_ReallyLR348 349...350---351name:            be_i64_to_i32_order352alignment:       4353tracksRegLiveness: true354liveins:355  - { reg: '$x0' }356  - { reg: '$x1' }357body:             |358  bb.1:359    liveins: $x0, $x1360 361    ; CHECK-LABEL: name: be_i64_to_i32_order362    ; CHECK: liveins: $x0, $x1363    ; CHECK-NEXT: {{  $}}364    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0365    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1366    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32367    ; CHECK-NEXT: [[ROTR:%[0-9]+]]:_(s64) = G_ROTR [[COPY]], [[C]](s64)368    ; CHECK-NEXT: G_STORE [[ROTR]](s64), [[COPY1]](p0) :: (store (s64), align 4)369    ; CHECK-NEXT: RET_ReallyLR370    %0:_(s64) = COPY $x0371    %1:_(p0) = COPY $x1372    %2:_(s64) = G_CONSTANT i64 32373    %3:_(s64) = G_LSHR %0, %2(s64)374    %4:_(s32) = G_TRUNC %0(s64)375    %5:_(s32) = G_TRUNC %3(s64)376    %6:_(s64) = G_CONSTANT i64 4377    %7:_(p0) = G_PTR_ADD %1, %6(s64)378    G_STORE %5(s32), %1(p0) :: (store (s32))379    G_STORE %4(s32), %7(p0) :: (store (s32))380    RET_ReallyLR381 382...383---384name:            merge_hole385alignment:       4386tracksRegLiveness: true387liveins:388  - { reg: '$w0' }389  - { reg: '$x1' }390body:             |391  bb.1:392    liveins: $w0, $x1393 394    ; CHECK-LABEL: name: merge_hole395    ; CHECK: liveins: $w0, $x1396    ; CHECK-NEXT: {{  $}}397    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0398    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1399    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16400    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2401    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)402    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)403    ; CHECK-NEXT: G_STORE [[TRUNC]](s8), [[COPY1]](p0) :: (store (s8))404    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)405    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)406    ; CHECK-NEXT: G_STORE [[TRUNC1]](s16), [[PTR_ADD]](p0) :: (store (s16), align 1)407    ; CHECK-NEXT: RET_ReallyLR408    %0:_(s32) = COPY $w0409    %1:_(p0) = COPY $x1410    %5:_(s32) = G_CONSTANT i32 16411    %2:_(s64) = G_CONSTANT i64 2412    %3:_(p0) = G_PTR_ADD %1, %2(s64)413    %4:_(s8) = G_TRUNC %0(s32)414    G_STORE %4(s8), %1(p0) :: (store (s8))415    %6:_(s32) = G_LSHR %0, %5(s32)416    %7:_(s16) = G_TRUNC %6(s32)417    G_STORE %7(s16), %3(p0) :: (store (s16), align 1)418    RET_ReallyLR419 420...421---422name:            merge_hole2423alignment:       4424tracksRegLiveness: true425liveins:426  - { reg: '$w0' }427  - { reg: '$x1' }428body:             |429  bb.1:430    liveins: $w0, $x1431 432    ; CHECK-LABEL: name: merge_hole2433    ; CHECK: liveins: $w0, $x1434    ; CHECK-NEXT: {{  $}}435    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0436    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1437    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16438    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2439    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)440    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)441    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)442    ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[PTR_ADD]](p0) :: (store (s16), align 1)443    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)444    ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[COPY1]](p0) :: (store (s8))445    ; CHECK-NEXT: RET_ReallyLR446    %0:_(s32) = COPY $w0447    %1:_(p0) = COPY $x1448    %4:_(s32) = G_CONSTANT i32 16449    %2:_(s64) = G_CONSTANT i64 2450    %3:_(p0) = G_PTR_ADD %1, %2(s64)451    %5:_(s32) = G_LSHR %0, %4(s32)452    %6:_(s16) = G_TRUNC %5(s32)453    G_STORE %6(s16), %3(p0) :: (store (s16), align 1)454    %7:_(s8) = G_TRUNC %0(s32)455    G_STORE %7(s8), %1(p0) :: (store (s8))456    RET_ReallyLR457 458...459---460name:            merge_hole3461alignment:       4462tracksRegLiveness: true463liveins:464  - { reg: '$w0' }465  - { reg: '$x1' }466body:             |467  bb.1:468    liveins: $w0, $x1469 470    ; CHECK-LABEL: name: merge_hole3471    ; CHECK: liveins: $w0, $x1472    ; CHECK-NEXT: {{  $}}473    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0474    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1475    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16476    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1477    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)478    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2479    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C2]](s64)480    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)481    ; CHECK-NEXT: G_STORE [[TRUNC]](s8), [[PTR_ADD]](p0) :: (store (s8))482    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)483    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)484    ; CHECK-NEXT: G_STORE [[TRUNC1]](s16), [[PTR_ADD1]](p0) :: (store (s16), align 1)485    ; CHECK-NEXT: RET_ReallyLR486    %0:_(s32) = COPY $w0487    %1:_(p0) = COPY $x1488    %7:_(s32) = G_CONSTANT i32 16489    %2:_(s64) = G_CONSTANT i64 1490    %3:_(p0) = G_PTR_ADD %1, %2(s64)491    %4:_(s64) = G_CONSTANT i64 2492    %5:_(p0) = G_PTR_ADD %1, %4(s64)493    %6:_(s8) = G_TRUNC %0(s32)494    G_STORE %6(s8), %3(p0) :: (store (s8))495    %8:_(s32) = G_LSHR %0, %7(s32)496    %9:_(s16) = G_TRUNC %8(s32)497    G_STORE %9(s16), %5(p0) :: (store (s16), align 1)498    RET_ReallyLR499 500...501---502name:            merge_hole4503alignment:       4504tracksRegLiveness: true505liveins:506  - { reg: '$w0' }507  - { reg: '$x1' }508body:             |509  bb.1:510    liveins: $w0, $x1511 512    ; CHECK-LABEL: name: merge_hole4513    ; CHECK: liveins: $w0, $x1514    ; CHECK-NEXT: {{  $}}515    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0516    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1517    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16518    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2519    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)520    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)521    ; CHECK-NEXT: G_STORE [[TRUNC]](s8), [[PTR_ADD]](p0) :: (store (s8))522    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)523    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)524    ; CHECK-NEXT: G_STORE [[TRUNC1]](s16), [[COPY1]](p0) :: (store (s16), align 1)525    ; CHECK-NEXT: RET_ReallyLR526    %0:_(s32) = COPY $w0527    %1:_(p0) = COPY $x1528    %5:_(s32) = G_CONSTANT i32 16529    %2:_(s64) = G_CONSTANT i64 2530    %3:_(p0) = G_PTR_ADD %1, %2(s64)531    %4:_(s8) = G_TRUNC %0(s32)532    G_STORE %4(s8), %3(p0) :: (store (s8))533    %6:_(s32) = G_LSHR %0, %5(s32)534    %7:_(s16) = G_TRUNC %6(s32)535    G_STORE %7(s16), %1(p0) :: (store (s16), align 1)536    RET_ReallyLR537 538...539---540name:            load_between_stores541alignment:       4542tracksRegLiveness: true543liveins:544  - { reg: '$w0' }545  - { reg: '$x1' }546  - { reg: '$x2' }547body:             |548  bb.1:549    liveins: $w0, $x1, $x2550 551    ; CHECK-LABEL: name: load_between_stores552    ; CHECK: liveins: $w0, $x1, $x2553    ; CHECK-NEXT: {{  $}}554    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0555    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1556    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2557    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16558    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)559    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)560    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)561    ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[COPY1]](p0) :: (store (s16))562    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY2]](p0) :: (load (s32))563    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2564    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)565    ; CHECK-NEXT: G_STORE [[TRUNC1]](s16), [[PTR_ADD]](p0) :: (store (s16))566    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)567    ; CHECK-NEXT: RET_ReallyLR implicit $w0568    %0:_(s32) = COPY $w0569    %1:_(p0) = COPY $x1570    %2:_(p0) = COPY $x2571    %4:_(s32) = G_CONSTANT i32 16572    %3:_(s16) = G_TRUNC %0(s32)573    %5:_(s32) = G_LSHR %0, %4(s32)574    %6:_(s16) = G_TRUNC %5(s32)575    G_STORE %3(s16), %1(p0) :: (store (s16))576    %7:_(s32) = G_LOAD %2(p0) :: (load (s32))577    %8:_(s64) = G_CONSTANT i64 2578    %9:_(p0) = G_PTR_ADD %1, %8(s64)579    G_STORE %6(s16), %9(p0) :: (store (s16))580    $w0 = COPY %7(s32)581    RET_ReallyLR implicit $w0582 583...584---585name:            invalid_shift586alignment:       4587tracksRegLiveness: true588liveins:589  - { reg: '$w0' }590  - { reg: '$x1' }591body:             |592  bb.1:593    liveins: $w0, $x1594 595    ; CHECK-LABEL: name: invalid_shift596    ; CHECK: liveins: $w0, $x1597    ; CHECK-NEXT: {{  $}}598    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0599    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)600    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1601    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 4602    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)603    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC]], [[C]](s16)604    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[LSHR]](s16)605    ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[COPY1]](p0) :: (store (s8))606    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1607    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)608    ; CHECK-NEXT: G_STORE [[TRUNC2]](s8), [[PTR_ADD]](p0) :: (store (s8))609    ; CHECK-NEXT: RET_ReallyLR610    %2:_(s32) = COPY $w0611    %0:_(s16) = G_TRUNC %2(s32)612    %1:_(p0) = COPY $x1613    %4:_(s16) = G_CONSTANT i16 4614    %3:_(s8) = G_TRUNC %0(s16)615    %5:_(s16) = G_LSHR %0, %4(s16)616    %6:_(s8) = G_TRUNC %5(s16)617    G_STORE %3(s8), %1(p0) :: (store (s8))618    %7:_(s64) = G_CONSTANT i64 1619    %8:_(p0) = G_PTR_ADD %1, %7(s64)620    G_STORE %6(s8), %8(p0) :: (store (s8))621    RET_ReallyLR622 623...624---625name:            missing_store626alignment:       4627tracksRegLiveness: true628liveins:629  - { reg: '$w0' }630  - { reg: '$x1' }631body:             |632  bb.1:633    liveins: $w0, $x1634 635    ; CHECK-LABEL: name: missing_store636    ; CHECK: liveins: $w0, $x1637    ; CHECK-NEXT: {{  $}}638    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0639    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1640    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24641    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)642    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[LSHR]](s32)643    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)644    ; CHECK-NEXT: G_STORE [[TRUNC1]](s16), [[COPY1]](p0) :: (store (s16), align 1)645    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 3646    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)647    ; CHECK-NEXT: G_STORE [[TRUNC]](s8), [[PTR_ADD]](p0) :: (store (s8))648    ; CHECK-NEXT: RET_ReallyLR649    %0:_(s32) = COPY $w0650    %1:_(p0) = COPY $x1651    %3:_(s32) = G_CONSTANT i32 8652    %6:_(s32) = G_CONSTANT i32 24653    %2:_(s8) = G_TRUNC %0(s32)654    %4:_(s32) = G_LSHR %0, %3(s32)655    %5:_(s8) = G_TRUNC %4(s32)656    %7:_(s32) = G_LSHR %0, %6(s32)657    %8:_(s8) = G_TRUNC %7(s32)658    G_STORE %2(s8), %1(p0) :: (store (s8))659    %9:_(s64) = G_CONSTANT i64 1660    %10:_(p0) = G_PTR_ADD %1, %9(s64)661    G_STORE %5(s8), %10(p0) :: (store (s8))662    %11:_(s64) = G_CONSTANT i64 3663    %12:_(p0) = G_PTR_ADD %1, %11(s64)664    G_STORE %8(s8), %12(p0) :: (store (s8))665    RET_ReallyLR666 667...668---669name:            different_base_reg670alignment:       4671tracksRegLiveness: true672liveins:673  - { reg: '$w0' }674  - { reg: '$x1' }675  - { reg: '$x2' }676body:             |677  bb.1:678    liveins: $w0, $x1, $x2679 680    ; CHECK-LABEL: name: different_base_reg681    ; CHECK: liveins: $w0, $x1, $x2682    ; CHECK-NEXT: {{  $}}683    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0684    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)685    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1686    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2687    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 8688    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)689    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC]], [[C]](s16)690    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[LSHR]](s16)691    ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[COPY1]](p0) :: (store (s8))692    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1693    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY2]], [[C1]](s64)694    ; CHECK-NEXT: G_STORE [[TRUNC2]](s8), [[PTR_ADD]](p0) :: (store (s8))695    ; CHECK-NEXT: RET_ReallyLR696    %3:_(s32) = COPY $w0697    %0:_(s16) = G_TRUNC %3(s32)698    %1:_(p0) = COPY $x1699    %2:_(p0) = COPY $x2700    %5:_(s16) = G_CONSTANT i16 8701    %4:_(s8) = G_TRUNC %0(s16)702    %6:_(s16) = G_LSHR %0, %5(s16)703    %7:_(s8) = G_TRUNC %6(s16)704    G_STORE %4(s8), %1(p0) :: (store (s8))705    %8:_(s64) = G_CONSTANT i64 1706    %9:_(p0) = G_PTR_ADD %2, %8(s64)707    G_STORE %7(s8), %9(p0) :: (store (s8))708    RET_ReallyLR709 710...711---712name:            second_store_is_volatile713alignment:       4714tracksRegLiveness: true715liveins:716  - { reg: '$w0' }717  - { reg: '$x1' }718body:             |719  bb.1:720    liveins: $w0, $x1721 722    ; CHECK-LABEL: name: second_store_is_volatile723    ; CHECK: liveins: $w0, $x1724    ; CHECK-NEXT: {{  $}}725    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0726    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)727    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1728    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 8729    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[TRUNC]](s16)730    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC]], [[C]](s16)731    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[LSHR]](s16)732    ; CHECK-NEXT: G_STORE [[TRUNC1]](s8), [[COPY1]](p0) :: (volatile store (s8))733    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1734    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)735    ; CHECK-NEXT: G_STORE [[TRUNC2]](s8), [[PTR_ADD]](p0) :: (store (s8))736    ; CHECK-NEXT: RET_ReallyLR737    %2:_(s32) = COPY $w0738    %0:_(s16) = G_TRUNC %2(s32)739    %1:_(p0) = COPY $x1740    %4:_(s16) = G_CONSTANT i16 8741    %3:_(s8) = G_TRUNC %0(s16)742    %5:_(s16) = G_LSHR %0, %4(s16)743    %6:_(s8) = G_TRUNC %5(s16)744    G_STORE %3(s8), %1(p0) :: (volatile store (s8))745    %7:_(s64) = G_CONSTANT i64 1746    %8:_(p0) = G_PTR_ADD %1, %7(s64)747    G_STORE %6(s8), %8(p0) :: (store (s8))748    RET_ReallyLR749 750...751---752name:            wide_not_multiple_of_mem_ty753alignment:       4754tracksRegLiveness: true755liveins:756  - { reg: '$w0' }757  - { reg: '$x1' }758body:             |759  bb.1:760    liveins: $x0, $x1761 762    ; CHECK-LABEL: name: wide_not_multiple_of_mem_ty763    ; CHECK: liveins: $x0, $x1764    ; CHECK-NEXT: {{  $}}765    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0766    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s48) = G_TRUNC [[COPY]](s64)767    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1768    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32769    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s48) = G_LSHR [[TRUNC]], [[C]](s64)770    ; CHECK-NEXT: %trunc:_(s32) = G_TRUNC [[LSHR]](s48)771    ; CHECK-NEXT: G_STORE %trunc(s32), [[COPY1]](p0) :: (store (s32))772    ; CHECK-NEXT: RET_ReallyLR773    %2:_(s64) = COPY $x0774    %0:_(s48) = G_TRUNC %2(s64)775    %1:_(p0) = COPY $x1776    %4:_(s64) = G_CONSTANT i64 32777    %5:_(s48) = G_LSHR %0, %4(s64)778    %trunc:_(s32) = G_TRUNC %5(s48)779    G_STORE %trunc(s32), %1(p0) :: (store (s32))780    RET_ReallyLR781 782...783