brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.9 KiB · 06e84fd Raw
638 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \3# RUN:   | FileCheck %s4# RUN: llc -mtriple=riscv64 -mattr=+unaligned-scalar-mem -run-pass=legalizer %s -o - \5# RUN:   | FileCheck %s --check-prefix=UNALIGNED6 7---8name:            load_i89alignment:       410tracksRegLiveness: true11registers:12  - { id: 0, class: _ }13  - { id: 1, class: _ }14  - { id: 2, class: _ }15frameInfo:16  maxAlignment:    117machineFunctionInfo:18  varArgsFrameIndex: 019  varArgsSaveSize: 020body:             |21  bb.1:22    liveins: $x1023 24    ; CHECK-LABEL: name: load_i825    ; CHECK: liveins: $x1026    ; CHECK-NEXT: {{  $}}27    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1028    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s8))29    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s16)30    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)31    ; CHECK-NEXT: PseudoRET implicit $x1032    ;33    ; UNALIGNED-LABEL: name: load_i834    ; UNALIGNED: liveins: $x1035    ; UNALIGNED-NEXT: {{  $}}36    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1037    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s8))38    ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s16)39    ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s64)40    ; UNALIGNED-NEXT: PseudoRET implicit $x1041    %0:_(p0) = COPY $x1042    %1:_(s8) = G_LOAD %0(p0) :: (load (s8))43    %2:_(s64) = G_ANYEXT %1(s8)44    $x10 = COPY %2(s64)45    PseudoRET implicit $x1046 47...48---49name:            load_i1650alignment:       451tracksRegLiveness: true52registers:53  - { id: 0, class: _ }54  - { id: 1, class: _ }55  - { id: 2, class: _ }56frameInfo:57  maxAlignment:    158machineFunctionInfo:59  varArgsFrameIndex: 060  varArgsSaveSize: 061body:             |62  bb.1:63    liveins: $x1064 65    ; CHECK-LABEL: name: load_i1666    ; CHECK: liveins: $x1067    ; CHECK-NEXT: {{  $}}68    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1069    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))70    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s16)71    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)72    ; CHECK-NEXT: PseudoRET implicit $x1073    ;74    ; UNALIGNED-LABEL: name: load_i1675    ; UNALIGNED: liveins: $x1076    ; UNALIGNED-NEXT: {{  $}}77    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1078    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))79    ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s16)80    ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s64)81    ; UNALIGNED-NEXT: PseudoRET implicit $x1082    %0:_(p0) = COPY $x1083    %1:_(s16) = G_LOAD %0(p0) :: (load (s16))84    %2:_(s64) = G_ANYEXT %1(s16)85    $x10 = COPY %2(s64)86    PseudoRET implicit $x1087 88...89---90name:            load_i3291alignment:       492tracksRegLiveness: true93registers:94  - { id: 0, class: _ }95  - { id: 1, class: _ }96  - { id: 2, class: _ }97frameInfo:98  maxAlignment:    199machineFunctionInfo:100  varArgsFrameIndex: 0101  varArgsSaveSize: 0102body:             |103  bb.1:104    liveins: $x10105 106    ; CHECK-LABEL: name: load_i32107    ; CHECK: liveins: $x10108    ; CHECK-NEXT: {{  $}}109    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10110    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32))111    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s32)112    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)113    ; CHECK-NEXT: PseudoRET implicit $x10114    ;115    ; UNALIGNED-LABEL: name: load_i32116    ; UNALIGNED: liveins: $x10117    ; UNALIGNED-NEXT: {{  $}}118    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10119    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32))120    ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s32)121    ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s64)122    ; UNALIGNED-NEXT: PseudoRET implicit $x10123    %0:_(p0) = COPY $x10124    %1:_(s32) = G_LOAD %0(p0) :: (load (s32))125    %2:_(s64) = G_ANYEXT %1(s32)126    $x10 = COPY %2(s64)127    PseudoRET implicit $x10128 129...130---131name:            load_i64132alignment:       4133tracksRegLiveness: true134registers:135  - { id: 0, class: _ }136  - { id: 1, class: _ }137frameInfo:138  maxAlignment:    1139machineFunctionInfo:140  varArgsFrameIndex: 0141  varArgsSaveSize: 0142body:             |143  bb.1:144    liveins: $x10145 146    ; CHECK-LABEL: name: load_i64147    ; CHECK: liveins: $x10148    ; CHECK-NEXT: {{  $}}149    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10150    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64))151    ; CHECK-NEXT: $x10 = COPY [[LOAD]](s64)152    ; CHECK-NEXT: PseudoRET implicit $x10153    ;154    ; UNALIGNED-LABEL: name: load_i64155    ; UNALIGNED: liveins: $x10156    ; UNALIGNED-NEXT: {{  $}}157    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10158    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64))159    ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s64)160    ; UNALIGNED-NEXT: PseudoRET implicit $x10161    %0:_(p0) = COPY $x10162    %1:_(s64) = G_LOAD %0(p0) :: (load (s64))163    $x10 = COPY %1(s64)164    PseudoRET implicit $x10165 166...167---168name:            load_i128169alignment:       4170tracksRegLiveness: true171registers:172  - { id: 0, class: _ }173  - { id: 1, class: _ }174  - { id: 2, class: _ }175  - { id: 3, class: _ }176frameInfo:177  maxAlignment:    1178machineFunctionInfo:179  varArgsFrameIndex: 0180  varArgsSaveSize: 0181body:             |182  bb.1:183    liveins: $x10184 185    ; CHECK-LABEL: name: load_i128186    ; CHECK: liveins: $x10187    ; CHECK-NEXT: {{  $}}188    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10189    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64))190    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8191    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)192    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD]](p0) :: (load (s64) from unknown-address + 8)193    ; CHECK-NEXT: $x10 = COPY [[LOAD]](s64)194    ; CHECK-NEXT: $x11 = COPY [[LOAD1]](s64)195    ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11196    ;197    ; UNALIGNED-LABEL: name: load_i128198    ; UNALIGNED: liveins: $x10199    ; UNALIGNED-NEXT: {{  $}}200    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10201    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64))202    ; UNALIGNED-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8203    ; UNALIGNED-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)204    ; UNALIGNED-NEXT: [[LOAD1:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD]](p0) :: (load (s64) from unknown-address + 8)205    ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s64)206    ; UNALIGNED-NEXT: $x11 = COPY [[LOAD1]](s64)207    ; UNALIGNED-NEXT: PseudoRET implicit $x10, implicit $x11208    %0:_(p0) = COPY $x10209    %1:_(s128) = G_LOAD %0(p0) :: (load (s128), align 8)210    %2:_(s64), %3:_(s64) = G_UNMERGE_VALUES %1(s128)211    $x10 = COPY %2(s64)212    $x11 = COPY %3(s64)213    PseudoRET implicit $x10, implicit $x11214 215...216---217name:            load_ptr218alignment:       4219tracksRegLiveness: true220registers:221  - { id: 0, class: _ }222  - { id: 1, class: _ }223frameInfo:224  maxAlignment:    1225machineFunctionInfo:226  varArgsFrameIndex: 0227  varArgsSaveSize: 0228body:             |229  bb.1:230    liveins: $x10231 232    ; CHECK-LABEL: name: load_ptr233    ; CHECK: liveins: $x10234    ; CHECK-NEXT: {{  $}}235    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10236    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[COPY]](p0) :: (load (p0))237    ; CHECK-NEXT: $x10 = COPY [[LOAD]](p0)238    ; CHECK-NEXT: PseudoRET implicit $x10239    ;240    ; UNALIGNED-LABEL: name: load_ptr241    ; UNALIGNED: liveins: $x10242    ; UNALIGNED-NEXT: {{  $}}243    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10244    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[COPY]](p0) :: (load (p0))245    ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](p0)246    ; UNALIGNED-NEXT: PseudoRET implicit $x10247    %0:_(p0) = COPY $x10248    %1:_(p0) = G_LOAD %0(p0) :: (load (p0))249    $x10 = COPY %1(p0)250    PseudoRET implicit $x10251 252...253---254name:            load_i16_unaligned255alignment:       4256tracksRegLiveness: true257registers:258  - { id: 0, class: _ }259  - { id: 1, class: _ }260  - { id: 2, class: _ }261frameInfo:262  maxAlignment:    1263machineFunctionInfo:264  varArgsFrameIndex: 0265  varArgsSaveSize: 0266body:             |267  bb.1:268    liveins: $x10269 270    ; CHECK-LABEL: name: load_i16_unaligned271    ; CHECK: liveins: $x10272    ; CHECK-NEXT: {{  $}}273    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10274    ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))275    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1276    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)277    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[PTR_ADD]](p0) :: (load (s8) from unknown-address + 1)278    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8279    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s16)280    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C1]](s64)281    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]282    ; CHECK-NEXT: $x10 = COPY [[OR]](s64)283    ; CHECK-NEXT: PseudoRET implicit $x10284    ;285    ; UNALIGNED-LABEL: name: load_i16_unaligned286    ; UNALIGNED: liveins: $x10287    ; UNALIGNED-NEXT: {{  $}}288    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10289    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16), align 1)290    ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s16)291    ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s64)292    ; UNALIGNED-NEXT: PseudoRET implicit $x10293    %0:_(p0) = COPY $x10294    %1:_(s16) = G_LOAD %0(p0) :: (load (s16), align 1)295    %2:_(s64) = G_ANYEXT %1(s16)296    $x10 = COPY %2(s64)297    PseudoRET implicit $x10298 299...300---301name:            load_i32_unaligned302alignment:       4303tracksRegLiveness: true304registers:305  - { id: 0, class: _ }306  - { id: 1, class: _ }307  - { id: 2, class: _ }308frameInfo:309  maxAlignment:    1310machineFunctionInfo:311  varArgsFrameIndex: 0312  varArgsSaveSize: 0313body:             |314  bb.1:315    liveins: $x10316 317    ; CHECK-LABEL: name: load_i32_unaligned318    ; CHECK: liveins: $x10319    ; CHECK-NEXT: {{  $}}320    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10321    ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))322    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1323    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)324    ; CHECK-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD]](p0) :: (load (s8) from unknown-address + 1)325    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8326    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD1]], [[C1]](s64)327    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]328    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2329    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s64)330    ; CHECK-NEXT: [[ZEXTLOAD2:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD1]](p0) :: (load (s8) from unknown-address + 2)331    ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD1]], [[C]](s64)332    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p0) :: (load (s8) from unknown-address + 3)333    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s32)334    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C1]](s64)335    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[SHL1]], [[ZEXTLOAD2]]336    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16337    ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[OR1]], [[C3]](s64)338    ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s64) = G_OR [[SHL2]], [[OR]]339    ; CHECK-NEXT: $x10 = COPY [[OR2]](s64)340    ; CHECK-NEXT: PseudoRET implicit $x10341    ;342    ; UNALIGNED-LABEL: name: load_i32_unaligned343    ; UNALIGNED: liveins: $x10344    ; UNALIGNED-NEXT: {{  $}}345    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10346    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32), align 1)347    ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s32)348    ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s64)349    ; UNALIGNED-NEXT: PseudoRET implicit $x10350    %0:_(p0) = COPY $x10351    %1:_(s32) = G_LOAD %0(p0) :: (load (s32), align 1)352    %2:_(s64) = G_ANYEXT %1(s32)353    $x10 = COPY %2(s64)354    PseudoRET implicit $x10355 356...357---358name:            load_i32_align2359alignment:       4360tracksRegLiveness: true361registers:362  - { id: 0, class: _ }363  - { id: 1, class: _ }364  - { id: 2, class: _ }365frameInfo:366  maxAlignment:    1367machineFunctionInfo:368  varArgsFrameIndex: 0369  varArgsSaveSize: 0370body:             |371  bb.1:372    liveins: $x10373 374    ; CHECK-LABEL: name: load_i32_align2375    ; CHECK: liveins: $x10376    ; CHECK-NEXT: {{  $}}377    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10378    ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))379    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2380    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)381    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s16) from unknown-address + 2)382    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16383    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s32)384    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C1]](s64)385    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]386    ; CHECK-NEXT: $x10 = COPY [[OR]](s64)387    ; CHECK-NEXT: PseudoRET implicit $x10388    ;389    ; UNALIGNED-LABEL: name: load_i32_align2390    ; UNALIGNED: liveins: $x10391    ; UNALIGNED-NEXT: {{  $}}392    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10393    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32), align 2)394    ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s32)395    ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s64)396    ; UNALIGNED-NEXT: PseudoRET implicit $x10397    %0:_(p0) = COPY $x10398    %1:_(s32) = G_LOAD %0(p0) :: (load (s32), align 2)399    %2:_(s64) = G_ANYEXT %1(s32)400    $x10 = COPY %2(s64)401    PseudoRET implicit $x10402 403...404---405name:            load_i64_unaligned406alignment:       4407tracksRegLiveness: true408registers:409  - { id: 0, class: _ }410  - { id: 1, class: _ }411frameInfo:412  maxAlignment:    1413machineFunctionInfo:414  varArgsFrameIndex: 0415  varArgsSaveSize: 0416body:             |417  bb.1:418    liveins: $x10419 420    ; CHECK-LABEL: name: load_i64_unaligned421    ; CHECK: liveins: $x10422    ; CHECK-NEXT: {{  $}}423    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10424    ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))425    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1426    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)427    ; CHECK-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD]](p0) :: (load (s8) from unknown-address + 1)428    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8429    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD1]], [[C1]](s64)430    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]431    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2432    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s64)433    ; CHECK-NEXT: [[ZEXTLOAD2:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD1]](p0) :: (load (s8) from unknown-address + 2)434    ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD1]], [[C]](s64)435    ; CHECK-NEXT: [[ZEXTLOAD3:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD2]](p0) :: (load (s8) from unknown-address + 3)436    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD3]], [[C1]](s64)437    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[SHL1]], [[ZEXTLOAD2]]438    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16439    ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[OR1]], [[C3]](s64)440    ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s64) = G_OR [[SHL2]], [[OR]]441    ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4442    ; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)443    ; CHECK-NEXT: [[ZEXTLOAD4:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD3]](p0) :: (load (s8) from unknown-address + 4)444    ; CHECK-NEXT: [[PTR_ADD4:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD3]], [[C]](s64)445    ; CHECK-NEXT: [[ZEXTLOAD5:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD4]](p0) :: (load (s8) from unknown-address + 5)446    ; CHECK-NEXT: [[SHL3:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD5]], [[C1]](s64)447    ; CHECK-NEXT: [[OR3:%[0-9]+]]:_(s64) = G_OR [[SHL3]], [[ZEXTLOAD4]]448    ; CHECK-NEXT: [[PTR_ADD5:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD3]], [[C2]](s64)449    ; CHECK-NEXT: [[ZEXTLOAD6:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD5]](p0) :: (load (s8) from unknown-address + 6)450    ; CHECK-NEXT: [[PTR_ADD6:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD5]], [[C]](s64)451    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD6]](p0) :: (load (s8) from unknown-address + 7)452    ; CHECK-NEXT: [[SHL4:%[0-9]+]]:_(s64) = G_SHL [[LOAD]], [[C1]](s64)453    ; CHECK-NEXT: [[OR4:%[0-9]+]]:_(s64) = G_OR [[SHL4]], [[ZEXTLOAD6]]454    ; CHECK-NEXT: [[SHL5:%[0-9]+]]:_(s64) = G_SHL [[OR4]], [[C3]](s64)455    ; CHECK-NEXT: [[OR5:%[0-9]+]]:_(s64) = G_OR [[SHL5]], [[OR3]]456    ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 32457    ; CHECK-NEXT: [[SHL6:%[0-9]+]]:_(s64) = G_SHL [[OR5]], [[C5]](s64)458    ; CHECK-NEXT: [[OR6:%[0-9]+]]:_(s64) = G_OR [[SHL6]], [[OR2]]459    ; CHECK-NEXT: $x10 = COPY [[OR6]](s64)460    ; CHECK-NEXT: PseudoRET implicit $x10461    ;462    ; UNALIGNED-LABEL: name: load_i64_unaligned463    ; UNALIGNED: liveins: $x10464    ; UNALIGNED-NEXT: {{  $}}465    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10466    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64), align 1)467    ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s64)468    ; UNALIGNED-NEXT: PseudoRET implicit $x10469    %0:_(p0) = COPY $x10470    %1:_(s64) = G_LOAD %0(p0) :: (load (s64), align 1)471    $x10 = COPY %1(s64)472    PseudoRET implicit $x10473 474...475---476name:            load_i64_align2477alignment:       4478tracksRegLiveness: true479registers:480  - { id: 0, class: _ }481  - { id: 1, class: _ }482frameInfo:483  maxAlignment:    1484machineFunctionInfo:485  varArgsFrameIndex: 0486  varArgsSaveSize: 0487body:             |488  bb.1:489    liveins: $x10490 491    ; CHECK-LABEL: name: load_i64_align2492    ; CHECK: liveins: $x10493    ; CHECK-NEXT: {{  $}}494    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10495    ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))496    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2497    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)498    ; CHECK-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD]](p0) :: (load (s16) from unknown-address + 2)499    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16500    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD1]], [[C1]](s64)501    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]502    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 4503    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s64)504    ; CHECK-NEXT: [[ZEXTLOAD2:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD1]](p0) :: (load (s16) from unknown-address + 4)505    ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD1]], [[C]](s64)506    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD2]](p0) :: (load (s16) from unknown-address + 6)507    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[LOAD]], [[C1]](s64)508    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[SHL1]], [[ZEXTLOAD2]]509    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 32510    ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[OR1]], [[C3]](s64)511    ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s64) = G_OR [[SHL2]], [[OR]]512    ; CHECK-NEXT: $x10 = COPY [[OR2]](s64)513    ; CHECK-NEXT: PseudoRET implicit $x10514    ;515    ; UNALIGNED-LABEL: name: load_i64_align2516    ; UNALIGNED: liveins: $x10517    ; UNALIGNED-NEXT: {{  $}}518    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10519    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64), align 2)520    ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s64)521    ; UNALIGNED-NEXT: PseudoRET implicit $x10522    %0:_(p0) = COPY $x10523    %1:_(s64) = G_LOAD %0(p0) :: (load (s64), align 2)524    $x10 = COPY %1(s64)525    PseudoRET implicit $x10526 527...528---529name:            load_i128_unaligned530alignment:       4531tracksRegLiveness: true532registers:533  - { id: 0, class: _ }534  - { id: 1, class: _ }535  - { id: 2, class: _ }536  - { id: 3, class: _ }537frameInfo:538  maxAlignment:    1539machineFunctionInfo:540  varArgsFrameIndex: 0541  varArgsSaveSize: 0542body:             |543  bb.1:544    liveins: $x10545 546    ; CHECK-LABEL: name: load_i128_unaligned547    ; CHECK: liveins: $x10548    ; CHECK-NEXT: {{  $}}549    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10550    ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))551    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1552    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)553    ; CHECK-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD]](p0) :: (load (s8) from unknown-address + 1)554    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8555    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD1]], [[C1]](s64)556    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[SHL]], [[ZEXTLOAD]]557    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2558    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s64)559    ; CHECK-NEXT: [[ZEXTLOAD2:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD1]](p0) :: (load (s8) from unknown-address + 2)560    ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD1]], [[C]](s64)561    ; CHECK-NEXT: [[ZEXTLOAD3:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD2]](p0) :: (load (s8) from unknown-address + 3)562    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD3]], [[C1]](s64)563    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[SHL1]], [[ZEXTLOAD2]]564    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16565    ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[OR1]], [[C3]](s64)566    ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s64) = G_OR [[SHL2]], [[OR]]567    ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4568    ; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)569    ; CHECK-NEXT: [[ZEXTLOAD4:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD3]](p0) :: (load (s8) from unknown-address + 4)570    ; CHECK-NEXT: [[PTR_ADD4:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD3]], [[C]](s64)571    ; CHECK-NEXT: [[ZEXTLOAD5:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD4]](p0) :: (load (s8) from unknown-address + 5)572    ; CHECK-NEXT: [[SHL3:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD5]], [[C1]](s64)573    ; CHECK-NEXT: [[OR3:%[0-9]+]]:_(s64) = G_OR [[SHL3]], [[ZEXTLOAD4]]574    ; CHECK-NEXT: [[PTR_ADD5:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD3]], [[C2]](s64)575    ; CHECK-NEXT: [[ZEXTLOAD6:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD5]](p0) :: (load (s8) from unknown-address + 6)576    ; CHECK-NEXT: [[PTR_ADD6:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD5]], [[C]](s64)577    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD6]](p0) :: (load (s8) from unknown-address + 7)578    ; CHECK-NEXT: [[SHL4:%[0-9]+]]:_(s64) = G_SHL [[LOAD]], [[C1]](s64)579    ; CHECK-NEXT: [[OR4:%[0-9]+]]:_(s64) = G_OR [[SHL4]], [[ZEXTLOAD6]]580    ; CHECK-NEXT: [[SHL5:%[0-9]+]]:_(s64) = G_SHL [[OR4]], [[C3]](s64)581    ; CHECK-NEXT: [[OR5:%[0-9]+]]:_(s64) = G_OR [[SHL5]], [[OR3]]582    ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 32583    ; CHECK-NEXT: [[SHL6:%[0-9]+]]:_(s64) = G_SHL [[OR5]], [[C5]](s64)584    ; CHECK-NEXT: [[OR6:%[0-9]+]]:_(s64) = G_OR [[SHL6]], [[OR2]]585    ; CHECK-NEXT: [[PTR_ADD7:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C1]](s64)586    ; CHECK-NEXT: [[ZEXTLOAD7:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD7]](p0) :: (load (s8) from unknown-address + 8)587    ; CHECK-NEXT: [[PTR_ADD8:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD7]], [[C]](s64)588    ; CHECK-NEXT: [[ZEXTLOAD8:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD8]](p0) :: (load (s8) from unknown-address + 9)589    ; CHECK-NEXT: [[SHL7:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD8]], [[C1]](s64)590    ; CHECK-NEXT: [[OR7:%[0-9]+]]:_(s64) = G_OR [[SHL7]], [[ZEXTLOAD7]]591    ; CHECK-NEXT: [[PTR_ADD9:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD7]], [[C2]](s64)592    ; CHECK-NEXT: [[ZEXTLOAD9:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD9]](p0) :: (load (s8) from unknown-address + 10)593    ; CHECK-NEXT: [[PTR_ADD10:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD9]], [[C]](s64)594    ; CHECK-NEXT: [[ZEXTLOAD10:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD10]](p0) :: (load (s8) from unknown-address + 11)595    ; CHECK-NEXT: [[SHL8:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD10]], [[C1]](s64)596    ; CHECK-NEXT: [[OR8:%[0-9]+]]:_(s64) = G_OR [[SHL8]], [[ZEXTLOAD9]]597    ; CHECK-NEXT: [[SHL9:%[0-9]+]]:_(s64) = G_SHL [[OR8]], [[C3]](s64)598    ; CHECK-NEXT: [[OR9:%[0-9]+]]:_(s64) = G_OR [[SHL9]], [[OR7]]599    ; CHECK-NEXT: [[PTR_ADD11:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD7]], [[C4]](s64)600    ; CHECK-NEXT: [[ZEXTLOAD11:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD11]](p0) :: (load (s8) from unknown-address + 12)601    ; CHECK-NEXT: [[PTR_ADD12:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD11]], [[C]](s64)602    ; CHECK-NEXT: [[ZEXTLOAD12:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD12]](p0) :: (load (s8) from unknown-address + 13)603    ; CHECK-NEXT: [[SHL10:%[0-9]+]]:_(s64) = G_SHL [[ZEXTLOAD12]], [[C1]](s64)604    ; CHECK-NEXT: [[OR10:%[0-9]+]]:_(s64) = G_OR [[SHL10]], [[ZEXTLOAD11]]605    ; CHECK-NEXT: [[PTR_ADD13:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD11]], [[C2]](s64)606    ; CHECK-NEXT: [[ZEXTLOAD13:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[PTR_ADD13]](p0) :: (load (s8) from unknown-address + 14)607    ; CHECK-NEXT: [[PTR_ADD14:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD13]], [[C]](s64)608    ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD14]](p0) :: (load (s8) from unknown-address + 15)609    ; CHECK-NEXT: [[SHL11:%[0-9]+]]:_(s64) = G_SHL [[LOAD1]], [[C1]](s64)610    ; CHECK-NEXT: [[OR11:%[0-9]+]]:_(s64) = G_OR [[SHL11]], [[ZEXTLOAD13]]611    ; CHECK-NEXT: [[SHL12:%[0-9]+]]:_(s64) = G_SHL [[OR11]], [[C3]](s64)612    ; CHECK-NEXT: [[OR12:%[0-9]+]]:_(s64) = G_OR [[SHL12]], [[OR10]]613    ; CHECK-NEXT: [[SHL13:%[0-9]+]]:_(s64) = G_SHL [[OR12]], [[C5]](s64)614    ; CHECK-NEXT: [[OR13:%[0-9]+]]:_(s64) = G_OR [[SHL13]], [[OR9]]615    ; CHECK-NEXT: $x10 = COPY [[OR6]](s64)616    ; CHECK-NEXT: $x11 = COPY [[OR13]](s64)617    ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11618    ;619    ; UNALIGNED-LABEL: name: load_i128_unaligned620    ; UNALIGNED: liveins: $x10621    ; UNALIGNED-NEXT: {{  $}}622    ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10623    ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p0) :: (load (s64), align 1)624    ; UNALIGNED-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8625    ; UNALIGNED-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)626    ; UNALIGNED-NEXT: [[LOAD1:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD]](p0) :: (load (s64) from unknown-address + 8, align 1)627    ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s64)628    ; UNALIGNED-NEXT: $x11 = COPY [[LOAD1]](s64)629    ; UNALIGNED-NEXT: PseudoRET implicit $x10, implicit $x11630    %0:_(p0) = COPY $x10631    %1:_(s128) = G_LOAD %0(p0) :: (load (s128), align 1)632    %2:_(s64), %3:_(s64) = G_UNMERGE_VALUES %1(s128)633    $x10 = COPY %2(s64)634    $x11 = COPY %3(s64)635    PseudoRET implicit $x10, implicit $x11636 637...638