brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.2 KiB · 764f1c0 Raw
565 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs -mtriple aarch64-unknown-unknown --aarch64prelegalizercombiner-only-enable-rule="reassoc_ptradd" %s -o - | FileCheck %s3# REQUIRES: asserts4 5---6name:            test1_noreassoc_legal_already_new_is_illegal7alignment:       48tracksRegLiveness: true9liveins:10  - { reg: '$x0' }11body:             |12  bb.1:13    liveins: $x014 15    ; CHECK-LABEL: name: test1_noreassoc_legal_already_new_is_illegal16    ; CHECK: liveins: $x017    ; CHECK-NEXT: {{  $}}18    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x019    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 160020    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 621    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 022    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)23    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64)24    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32))25    ; CHECK-NEXT: G_STORE [[C2]](s32), [[PTR_ADD]](p0) :: (store (s32))26    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)27    ; CHECK-NEXT: RET_ReallyLR implicit $w028    %0:_(p0) = COPY $x029    %2:_(s64) = G_CONSTANT i64 160030    %4:_(s64) = G_CONSTANT i64 631    %9:_(s32) = G_CONSTANT i32 032    %10:_(p0) = G_PTR_ADD %0, %2(s64)33    %11:_(p0) = G_PTR_ADD %10, %4(s64)34    %7:_(s32) = G_LOAD %11(p0) :: (load 4)35    G_STORE %9(s32), %10(p0) :: (store 4) ; other use of %1036    $w0 = COPY %7(s32)37    RET_ReallyLR implicit $w038 39...40---41name:            test2_reassoc_already_legal_new_also_legal42alignment:       443liveins:44  - { reg: '$x0' }45body:             |46  bb.1:47    liveins: $x048 49    ; CHECK-LABEL: name: test2_reassoc_already_legal_new_also_legal50    ; CHECK: liveins: $x051    ; CHECK-NEXT: {{  $}}52    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x053    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1054    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 055    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)56    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1657    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C2]](s64)58    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32))59    ; CHECK-NEXT: G_STORE [[C1]](s32), [[PTR_ADD]](p0) :: (store (s32))60    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)61    ; CHECK-NEXT: RET_ReallyLR implicit $w062    %0:_(p0) = COPY $x063    %2:_(s64) = G_CONSTANT i64 1064    %4:_(s64) = G_CONSTANT i64 665    %9:_(s32) = G_CONSTANT i32 066    %10:_(p0) = G_PTR_ADD %0, %2(s64)67    %11:_(p0) = G_PTR_ADD %10, %4(s64)68    %7:_(s32) = G_LOAD %11(p0) :: (load 4)69    G_STORE %9(s32), %10(p0) :: (store 4) ; other use of %1070    $w0 = COPY %7(s32)71    RET_ReallyLR implicit $w072 73...74---75name:            test3_noreassoc_only_oneuse76alignment:       477liveins:78  - { reg: '$x0' }79body:             |80  bb.1:81    liveins: $x082 83    ; CHECK-LABEL: name: test3_noreassoc_only_oneuse84    ; CHECK: liveins: $x085    ; CHECK-NEXT: {{  $}}86    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x087    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 478388    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)89    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32))90    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)91    ; CHECK-NEXT: RET_ReallyLR implicit $w092    %0:_(p0) = COPY $x093    %10:_(s64) = G_CONSTANT i64 478394    %9:_(p0) = G_PTR_ADD %0, %10(s64)95    %7:_(s32) = G_LOAD %9(p0) :: (load 4)96    $w0 = COPY %7(s32)97    RET_ReallyLR implicit $w098 99...100---101name:            test4_reassoc_existing_is_already_illegal102alignment:       4103liveins:104  - { reg: '$x0' }105body:             |106  bb.1:107    liveins: $x0108 109    ; CHECK-LABEL: name: test4_reassoc_existing_is_already_illegal110    ; CHECK: liveins: $x0111    ; CHECK-NEXT: {{  $}}112    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0113    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 17114    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0115    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)116    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 4096117    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C2]](s64)118    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32))119    ; CHECK-NEXT: G_STORE [[C1]](s32), [[PTR_ADD]](p0) :: (store (s32))120    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)121    ; CHECK-NEXT: RET_ReallyLR implicit $w0122    %0:_(p0) = COPY $x0123    %2:_(s64) = G_CONSTANT i64 17124    %4:_(s64) = G_CONSTANT i64 4079125    %9:_(s32) = G_CONSTANT i32 0126    %10:_(p0) = G_PTR_ADD %0, %2(s64)127    %11:_(p0) = G_PTR_ADD %10, %4(s64)128    %7:_(s32) = G_LOAD %11(p0) :: (load 4)129    G_STORE %9(s32), %10(p0) :: (store 4) ; other use of %10130    $w0 = COPY %7(s32)131    RET_ReallyLR implicit $w0132 133...134---135name:            test5_add_on_rhs136alignment:       4137liveins:138  - { reg: '$x0' }139  - { reg: '$x1' }140body:             |141  bb.1:142    liveins: $x0, $x1143 144    ; CHECK-LABEL: name: test5_add_on_rhs145    ; CHECK: liveins: $x0, $x1146    ; CHECK-NEXT: {{  $}}147    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0148    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1149    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1150    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[COPY1]](s64)151    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C]](s64)152    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))153    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)154    ; CHECK-NEXT: RET_ReallyLR implicit $w0155    %0:_(p0) = COPY $x0156    %1:_(s64) = COPY $x1157    %2:_(s64) = G_CONSTANT i64 1158    %3:_(s64) = G_ADD %1, %2159    %4:_(p0) = G_PTR_ADD %0, %3(s64)160    %7:_(s32) = G_LOAD %4(p0) :: (load 1)161    $w0 = COPY %7(s32)162    RET_ReallyLR implicit $w0163 164...165---166name:            walk_through_inttoptr167alignment:       4168tracksRegLiveness: true169body:             |170  bb.1:171    liveins: $x0172    ; CHECK-LABEL: name: walk_through_inttoptr173    ; CHECK: liveins: $x0174    ; CHECK-NEXT: {{  $}}175    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0176    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1600177    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0178    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)179    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1606180    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C2]](s64)181    ; CHECK-NEXT: %ptr_to_int:_(s64) = G_PTRTOINT [[PTR_ADD1]](p0)182    ; CHECK-NEXT: %int_to_ptr:_(p0) = G_INTTOPTR %ptr_to_int(s64)183    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD %int_to_ptr(p0) :: (load (s32))184    ; CHECK-NEXT: G_STORE [[C1]](s32), [[PTR_ADD]](p0) :: (store (s32))185    ; CHECK-NEXT: G_STORE %ptr_to_int(s64), [[PTR_ADD]](p0) :: (store (s64))186    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)187    ; CHECK-NEXT: RET_ReallyLR implicit $w0188    %0:_(p0) = COPY $x0189    %2:_(s64) = G_CONSTANT i64 1600190    %4:_(s64) = G_CONSTANT i64 6191    %9:_(s32) = G_CONSTANT i32 0192    %10:_(p0) = G_PTR_ADD %0, %2(s64)193    %11:_(p0) = G_PTR_ADD %10, %4(s64)194    %ptr_to_int:_(s64) = G_PTRTOINT %11195    %int_to_ptr:_(p0) = G_INTTOPTR %ptr_to_int196    %7:_(s32) = G_LOAD %int_to_ptr(p0) :: (load 4)197    G_STORE %9(s32), %10(p0) :: (store 4) ; other use of %10198    G_STORE %ptr_to_int(s64), %10(p0) :: (store 8)199    $w0 = COPY %7(s32)200    RET_ReallyLR implicit $w0201...202---203name:            reassoc_cst_inner_lhs204alignment:       4205tracksRegLiveness: true206liveins:207  - { reg: '$w0' }208  - { reg: '$x1' }209  - { reg: '$x2' }210  - { reg: '$x3' }211body:             |212  bb.1:213    liveins: $w0, $x1, $x2, $x3214 215    ; CHECK-LABEL: name: reassoc_cst_inner_lhs216    ; CHECK: liveins: $w0, $x1, $x2, $x3217    ; CHECK-NEXT: {{  $}}218    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x2219    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x3220    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 40221    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2222    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C1]](s64)223    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[SHL]](s64)224    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C]](s64)225    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32))226    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)227    ; CHECK-NEXT: RET_ReallyLR228    %1:_(p0) = COPY $x1229    %2:_(p0) = COPY $x2230    %3:_(s64) = COPY $x3231    %8:_(s64) = G_CONSTANT i64 40232    %9:_(p0) = G_PTR_ADD %2, %8(s64)233    %10:_(s64) = G_CONSTANT i64 2234    %11:_(s64) = G_SHL %3, %10235    %12:_(p0) = G_PTR_ADD %9, %11(s64)236    %14:_(s32) = G_LOAD %12(p0) :: (load (s32))237    $w0 = COPY %14238    RET_ReallyLR239 240...241---242name:            reassoc_cst_inner_lhs_multiuse243alignment:       4244tracksRegLiveness: true245liveins:246  - { reg: '$w0' }247  - { reg: '$x1' }248  - { reg: '$x2' }249  - { reg: '$x3' }250body:             |251  bb.1:252    liveins: $w0, $x1, $x2, $x3253 254    ; CHECK-LABEL: name: reassoc_cst_inner_lhs_multiuse255    ; CHECK: liveins: $w0, $x1, $x2, $x3256    ; CHECK-NEXT: {{  $}}257    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x2258    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x3259    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 40260    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)261    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2262    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C1]](s64)263    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[SHL]](s64)264    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32))265    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)266    ; CHECK-NEXT: $x0 = COPY [[PTR_ADD]](p0)267    ; CHECK-NEXT: RET_ReallyLR268    %1:_(p0) = COPY $x1269    %2:_(p0) = COPY $x2270    %3:_(s64) = COPY $x3271    %8:_(s64) = G_CONSTANT i64 40272    %9:_(p0) = G_PTR_ADD %2, %8(s64)273    %10:_(s64) = G_CONSTANT i64 2274    %11:_(s64) = G_SHL %3, %10275    %12:_(p0) = G_PTR_ADD %9, %11(s64)276    %14:_(s32) = G_LOAD %12(p0) :: (load (s32))277    $w0 = COPY %14278    $x0 = COPY %9279    RET_ReallyLR280 281...282---283name:            reassoc_cst_inner_lhs_const_lhs284alignment:       4285tracksRegLiveness: true286liveins:287  - { reg: '$w0' }288  - { reg: '$x1' }289  - { reg: '$x2' }290  - { reg: '$x3' }291body:             |292  bb.1:293    liveins: $w0, $x1, $x2, $x3294 295    ; CHECK-LABEL: name: reassoc_cst_inner_lhs_const_lhs296    ; CHECK: liveins: $w0, $x1, $x2, $x3297    ; CHECK-NEXT: {{  $}}298    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x2299    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x3300    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 40301    ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[C]](s64)302    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[INTTOPTR]], [[COPY]](s64)303    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2304    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY1]], [[C1]](s64)305    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[SHL]](s64)306    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32))307    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)308    ; CHECK-NEXT: RET_ReallyLR309    %1:_(p0) = COPY $x1310    %2:_(s64) = COPY $x2311    %3:_(s64) = COPY $x3312    %8:_(s64) = G_CONSTANT i64 40313    %9:_(p0) = G_INTTOPTR %8(s64)314    %10:_(p0) = G_PTR_ADD %9, %2(s64)315    %11:_(s64) = G_CONSTANT i64 2316    %12:_(s64) = G_SHL %3, %11317    %13:_(p0) = G_PTR_ADD %10, %12(s64)318    %15:_(s32) = G_LOAD %13(p0) :: (load (s32))319    $w0 = COPY %15320    RET_ReallyLR321 322...323---324name:            rhs_add_nuw325alignment:       4326liveins:327  - { reg: '$x0' }328  - { reg: '$x1' }329body:             |330  bb.1:331    liveins: $x0, $x1332 333    ; CHECK-LABEL: name: rhs_add_nuw334    ; CHECK: liveins: $x0, $x1335    ; CHECK-NEXT: {{  $}}336    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0337    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1338    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1339    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[COPY1]](s64)340    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[PTR_ADD]], [[C]](s64)341    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))342    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)343    ; CHECK-NEXT: RET_ReallyLR implicit $w0344    %0:_(p0) = COPY $x0345    %1:_(s64) = COPY $x1346    %2:_(s64) = G_CONSTANT i64 1347    %3:_(s64) = nuw G_ADD %1, %2348    %4:_(p0) = nuw G_PTR_ADD %0, %3(s64)349    %7:_(s32) = G_LOAD %4(p0) :: (load 1)350    $w0 = COPY %7(s32)351    RET_ReallyLR implicit $w0352 353...354---355name:            rhs_add_nuw_nusw356alignment:       4357liveins:358  - { reg: '$x0' }359  - { reg: '$x1' }360body:             |361  bb.1:362    liveins: $x0, $x1363 364    ; CHECK-LABEL: name: rhs_add_nuw_nusw365    ; CHECK: liveins: $x0, $x1366    ; CHECK-NEXT: {{  $}}367    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0368    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1369    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1370    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw G_PTR_ADD [[COPY]], [[COPY1]](s64)371    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw nusw G_PTR_ADD [[PTR_ADD]], [[C]](s64)372    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))373    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)374    ; CHECK-NEXT: RET_ReallyLR implicit $w0375    %0:_(p0) = COPY $x0376    %1:_(s64) = COPY $x1377    %2:_(s64) = G_CONSTANT i64 1378    %3:_(s64) = nuw G_ADD %1, %2379    %4:_(p0) = nuw nusw G_PTR_ADD %0, %3(s64)380    %7:_(s32) = G_LOAD %4(p0) :: (load 1)381    $w0 = COPY %7(s32)382    RET_ReallyLR implicit $w0383 384...385---386name:            rhs_add_nuw_inbounds387alignment:       4388liveins:389  - { reg: '$x0' }390  - { reg: '$x1' }391body:             |392  bb.1:393    liveins: $x0, $x1394 395    ; CHECK-LABEL: name: rhs_add_nuw_inbounds396    ; CHECK: liveins: $x0, $x1397    ; CHECK-NEXT: {{  $}}398    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0399    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1400    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1401    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[COPY]], [[COPY1]](s64)402    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[PTR_ADD]], [[C]](s64)403    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))404    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)405    ; CHECK-NEXT: RET_ReallyLR implicit $w0406    %0:_(p0) = COPY $x0407    %1:_(s64) = COPY $x1408    %2:_(s64) = G_CONSTANT i64 1409    %3:_(s64) = nuw G_ADD %1, %2410    %4:_(p0) = nuw nusw inbounds G_PTR_ADD %0, %3(s64)411    %7:_(s32) = G_LOAD %4(p0) :: (load 1)412    $w0 = COPY %7(s32)413    RET_ReallyLR implicit $w0414 415...416---417name:            reassoc_nuw418alignment:       4419liveins:420  - { reg: '$x0' }421  - { reg: '$x1' }422body:             |423  bb.1:424    liveins: $x0, $x1425 426    ; CHECK-LABEL: name: reassoc_nuw427    ; CHECK: liveins: $x0, $x1428    ; CHECK-NEXT: {{  $}}429    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0430    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1431    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1432    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[COPY1]](s64)433    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[PTR_ADD]], [[C]](s64)434    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))435    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)436    ; CHECK-NEXT: RET_ReallyLR implicit $w0437    %0:_(p0) = COPY $x0438    %1:_(s64) = COPY $x1439    %2:_(s64) = G_CONSTANT i64 1440    %3:_(p0) = nuw G_PTR_ADD %0, %2(s64)441    %4:_(p0) = nuw G_PTR_ADD %3(p0), %1442    %7:_(s32) = G_LOAD %4(p0) :: (load 1)443    $w0 = COPY %7(s32)444    RET_ReallyLR implicit $w0445 446...447---448name:            reassoc_nuw_nusw449alignment:       4450liveins:451  - { reg: '$x0' }452  - { reg: '$x1' }453body:             |454  bb.1:455    liveins: $x0, $x1456 457    ; CHECK-LABEL: name: reassoc_nuw_nusw458    ; CHECK: liveins: $x0, $x1459    ; CHECK-NEXT: {{  $}}460    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0461    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1462    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1463    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw G_PTR_ADD [[COPY]], [[COPY1]](s64)464    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw nusw G_PTR_ADD [[PTR_ADD]], [[C]](s64)465    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))466    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)467    ; CHECK-NEXT: RET_ReallyLR implicit $w0468    %0:_(p0) = COPY $x0469    %1:_(s64) = COPY $x1470    %2:_(s64) = G_CONSTANT i64 1471    %3:_(p0) = nuw nusw G_PTR_ADD %0, %2(s64)472    %4:_(p0) = nuw nusw G_PTR_ADD %3(p0), %1473    %7:_(s32) = G_LOAD %4(p0) :: (load 1)474    $w0 = COPY %7(s32)475    RET_ReallyLR implicit $w0476 477...478---479name:            reassoc_nuw_inbounds480alignment:       4481liveins:482  - { reg: '$x0' }483  - { reg: '$x1' }484body:             |485  bb.1:486    liveins: $x0, $x1487 488    ; CHECK-LABEL: name: reassoc_nuw_inbounds489    ; CHECK: liveins: $x0, $x1490    ; CHECK-NEXT: {{  $}}491    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0492    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1493    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1494    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[COPY]], [[COPY1]](s64)495    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[PTR_ADD]], [[C]](s64)496    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s8))497    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)498    ; CHECK-NEXT: RET_ReallyLR implicit $w0499    %0:_(p0) = COPY $x0500    %1:_(s64) = COPY $x1501    %2:_(s64) = G_CONSTANT i64 1502    %3:_(p0) = nuw nusw inbounds G_PTR_ADD %0, %2(s64)503    %4:_(p0) = nuw nusw inbounds G_PTR_ADD %3(p0), %1504    %7:_(s32) = G_LOAD %4(p0) :: (load 1)505    $w0 = COPY %7(s32)506    RET_ReallyLR implicit $w0507 508...509---510name:            combine_offsets_nuw511alignment:       4512liveins:513  - { reg: '$x0' }514body:             |515  bb.1:516    liveins: $x0517 518    ; CHECK-LABEL: name: combine_offsets_nuw519    ; CHECK: liveins: $x0520    ; CHECK-NEXT: {{  $}}521    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0522    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 11523    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C]](s64)524    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s8))525    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)526    ; CHECK-NEXT: RET_ReallyLR implicit $w0527    %0:_(p0) = COPY $x0528    %1:_(s64) = G_CONSTANT i64 10529    %2:_(s64) = G_CONSTANT i64 1530    %3:_(p0) = nuw G_PTR_ADD %0, %1531    %4:_(p0) = nuw G_PTR_ADD %3(p0), %2532    %7:_(s32) = G_LOAD %4(p0) :: (load 1)533    $w0 = COPY %7(s32)534    RET_ReallyLR implicit $w0535 536...537---538name:            combine_offsets_nuw_inbounds539alignment:       4540liveins:541  - { reg: '$x0' }542body:             |543  bb.1:544    liveins: $x0545 546    ; CHECK-LABEL: name: combine_offsets_nuw_inbounds547    ; CHECK: liveins: $x0548    ; CHECK-NEXT: {{  $}}549    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0550    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 11551    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw nusw inbounds G_PTR_ADD [[COPY]], [[C]](s64)552    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s8))553    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)554    ; CHECK-NEXT: RET_ReallyLR implicit $w0555    %0:_(p0) = COPY $x0556    %1:_(s64) = G_CONSTANT i64 10557    %2:_(s64) = G_CONSTANT i64 1558    %3:_(p0) = nuw nusw inbounds G_PTR_ADD %0, %1559    %4:_(p0) = nuw nusw inbounds G_PTR_ADD %3(p0), %2560    %7:_(s32) = G_LOAD %4(p0) :: (load 1)561    $w0 = COPY %7(s32)562    RET_ReallyLR implicit $w0563 564...565