brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.9 KiB · 088647e Raw
508 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=legalizer -global-isel-abort=2 -pass-remarks-missed='gisel*' -o - 2> %t %s | FileCheck -check-prefix=GFX8 %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -global-isel-abort=2 -o - %s | FileCheck -check-prefix=GFX6 %s4# RUN: FileCheck -check-prefixes=ERR %s < %t5 6# FIXME: Run with and without unaligned access turned on7 8# ERR-NOT: remark9# ERR: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s16>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s8>), addrspace 1) (in function: test_zextload_global_v2i16_from_2)10# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s32>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s8>), addrspace 1) (in function: test_zextload_global_v2i32_from_2)11# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s32>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s16>), addrspace 1) (in function: test_zextload_global_v2i32_from_4)12# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s64>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s16>), addrspace 1) (in function: test_zextload_global_v2i64_from_4)13# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s64>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s32>), addrspace 1) (in function: test_zextload_global_v2i64_from_8)14# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(s128) = G_ZEXTLOAD %0:_(p1) :: (load (s64), addrspace 1) (in function: test_zextload_global_s128_8)15# ERR-NOT: remark16 17---18name: test_zextload_global_i32_i119body: |20  bb.0:21    liveins: $vgpr0_vgpr122 23    ; GFX8-LABEL: name: test_zextload_global_i32_i124    ; GFX8: liveins: $vgpr0_vgpr125    ; GFX8-NEXT: {{  $}}26    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr127    ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)28    ; GFX8-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 129    ; GFX8-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)30    ;31    ; GFX6-LABEL: name: test_zextload_global_i32_i132    ; GFX6: liveins: $vgpr0_vgpr133    ; GFX6-NEXT: {{  $}}34    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr135    ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)36    ; GFX6-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 137    ; GFX6-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)38    %0:_(p1) = COPY $vgpr0_vgpr139    %1:_(s32) = G_ZEXTLOAD %0 :: (load (s1), addrspace 1)40    $vgpr0 = COPY %141...42 43---44name: test_zextload_global_i32_i745body: |46  bb.0:47    liveins: $vgpr0_vgpr148 49    ; GFX8-LABEL: name: test_zextload_global_i32_i750    ; GFX8: liveins: $vgpr0_vgpr151    ; GFX8-NEXT: {{  $}}52    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr153    ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)54    ; GFX8-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 755    ; GFX8-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)56    ;57    ; GFX6-LABEL: name: test_zextload_global_i32_i758    ; GFX6: liveins: $vgpr0_vgpr159    ; GFX6-NEXT: {{  $}}60    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr161    ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)62    ; GFX6-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 763    ; GFX6-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)64    %0:_(p1) = COPY $vgpr0_vgpr165    %1:_(s32) = G_ZEXTLOAD %0 :: (load (s7), addrspace 1)66    $vgpr0 = COPY %167...68 69---70name: test_zextload_global_i32_i2471body: |72  bb.0:73    liveins: $vgpr0_vgpr174 75    ; GFX8-LABEL: name: test_zextload_global_i32_i2476    ; GFX8: liveins: $vgpr0_vgpr177    ; GFX8-NEXT: {{  $}}78    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr179    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 4, addrspace 1)80    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 281    ; GFX8-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)82    ; GFX8-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 2, align 2, addrspace 1)83    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1684    ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)85    ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]86    ; GFX8-NEXT: $vgpr0 = COPY [[OR]](s32)87    ;88    ; GFX6-LABEL: name: test_zextload_global_i32_i2489    ; GFX6: liveins: $vgpr0_vgpr190    ; GFX6-NEXT: {{  $}}91    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr192    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 4, addrspace 1)93    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 294    ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)95    ; GFX6-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 2, align 2, addrspace 1)96    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1697    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)98    ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]99    ; GFX6-NEXT: $vgpr0 = COPY [[OR]](s32)100    %0:_(p1) = COPY $vgpr0_vgpr1101    %1:_(s32) = G_ZEXTLOAD %0 :: (load (s24), addrspace 1)102    $vgpr0 = COPY %1103...104 105---106name: test_zextload_global_i32_i30107body: |108  bb.0:109    liveins: $vgpr0_vgpr1110 111    ; GFX8-LABEL: name: test_zextload_global_i32_i30112    ; GFX8: liveins: $vgpr0_vgpr1113    ; GFX8-NEXT: {{  $}}114    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1115    ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)116    ; GFX8-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 30117    ; GFX8-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)118    ;119    ; GFX6-LABEL: name: test_zextload_global_i32_i30120    ; GFX6: liveins: $vgpr0_vgpr1121    ; GFX6-NEXT: {{  $}}122    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1123    ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)124    ; GFX6-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 30125    ; GFX6-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)126    %0:_(p1) = COPY $vgpr0_vgpr1127    %1:_(s32) = G_ZEXTLOAD %0 :: (load (s30), addrspace 1)128    $vgpr0 = COPY %1129...130 131---132name: test_zextload_global_i32_i31133body: |134  bb.0:135    liveins: $vgpr0_vgpr1136 137    ; GFX8-LABEL: name: test_zextload_global_i32_i31138    ; GFX8: liveins: $vgpr0_vgpr1139    ; GFX8-NEXT: {{  $}}140    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1141    ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)142    ; GFX8-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 31143    ; GFX8-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)144    ;145    ; GFX6-LABEL: name: test_zextload_global_i32_i31146    ; GFX6: liveins: $vgpr0_vgpr1147    ; GFX6-NEXT: {{  $}}148    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1149    ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)150    ; GFX6-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 31151    ; GFX6-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)152    %0:_(p1) = COPY $vgpr0_vgpr1153    %1:_(s32) = G_ZEXTLOAD %0 :: (load (s31), addrspace 1)154    $vgpr0 = COPY %1155...156 157---158name: test_zextload_global_i32_i8159body: |160  bb.0:161    liveins: $vgpr0_vgpr1162 163    ; GFX8-LABEL: name: test_zextload_global_i32_i8164    ; GFX8: liveins: $vgpr0_vgpr1165    ; GFX8-NEXT: {{  $}}166    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1167    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)168    ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)169    ;170    ; GFX6-LABEL: name: test_zextload_global_i32_i8171    ; GFX6: liveins: $vgpr0_vgpr1172    ; GFX6-NEXT: {{  $}}173    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1174    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)175    ; GFX6-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)176    %0:_(p1) = COPY $vgpr0_vgpr1177    %1:_(s32) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)178    $vgpr0 = COPY %1179...180---181name: test_zextload_global_i32_i16182body: |183  bb.0:184    liveins: $vgpr0_vgpr1185 186    ; GFX8-LABEL: name: test_zextload_global_i32_i16187    ; GFX8: liveins: $vgpr0_vgpr1188    ; GFX8-NEXT: {{  $}}189    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1190    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)191    ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)192    ;193    ; GFX6-LABEL: name: test_zextload_global_i32_i16194    ; GFX6: liveins: $vgpr0_vgpr1195    ; GFX6-NEXT: {{  $}}196    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1197    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)198    ; GFX6-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)199    %0:_(p1) = COPY $vgpr0_vgpr1200    %1:_(s32) = G_ZEXTLOAD %0 :: (load (s16), addrspace 1)201    $vgpr0 = COPY %1202...203---204name: test_zextload_global_i31_i8205body: |206  bb.0:207    liveins: $vgpr0_vgpr1208 209    ; GFX8-LABEL: name: test_zextload_global_i31_i8210    ; GFX8: liveins: $vgpr0_vgpr1211    ; GFX8-NEXT: {{  $}}212    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1213    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)214    ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)215    ;216    ; GFX6-LABEL: name: test_zextload_global_i31_i8217    ; GFX6: liveins: $vgpr0_vgpr1218    ; GFX6-NEXT: {{  $}}219    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1220    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)221    ; GFX6-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)222    %0:_(p1) = COPY $vgpr0_vgpr1223    %1:_(s31) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)224    %2:_(s32) = G_ANYEXT %1225    $vgpr0 = COPY %2226...227---228name: test_zextload_global_i64_i8229body: |230  bb.0:231    liveins: $vgpr0_vgpr1232 233    ; GFX8-LABEL: name: test_zextload_global_i64_i8234    ; GFX8: liveins: $vgpr0_vgpr1235    ; GFX8-NEXT: {{  $}}236    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1237    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)238    ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)239    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)240    ;241    ; GFX6-LABEL: name: test_zextload_global_i64_i8242    ; GFX6: liveins: $vgpr0_vgpr1243    ; GFX6-NEXT: {{  $}}244    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1245    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)246    ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)247    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)248    %0:_(p1) = COPY $vgpr0_vgpr1249    %1:_(s64) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)250    $vgpr0_vgpr1 = COPY %1251...252---253name: test_zextload_global_i64_i16254body: |255  bb.0:256    liveins: $vgpr0_vgpr1257 258    ; GFX8-LABEL: name: test_zextload_global_i64_i16259    ; GFX8: liveins: $vgpr0_vgpr1260    ; GFX8-NEXT: {{  $}}261    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1262    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)263    ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)264    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)265    ;266    ; GFX6-LABEL: name: test_zextload_global_i64_i16267    ; GFX6: liveins: $vgpr0_vgpr1268    ; GFX6-NEXT: {{  $}}269    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1270    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)271    ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)272    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)273    %0:_(p1) = COPY $vgpr0_vgpr1274    %1:_(s64) = G_ZEXTLOAD %0 :: (load (s16), addrspace 1)275    $vgpr0_vgpr1 = COPY %1276...277---278name: test_zextload_global_i64_i32279body: |280  bb.0:281    liveins: $vgpr0_vgpr1282 283    ; GFX8-LABEL: name: test_zextload_global_i64_i32284    ; GFX8: liveins: $vgpr0_vgpr1285    ; GFX8-NEXT: {{  $}}286    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1287    ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)288    ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[LOAD]](s32)289    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)290    ;291    ; GFX6-LABEL: name: test_zextload_global_i64_i32292    ; GFX6: liveins: $vgpr0_vgpr1293    ; GFX6-NEXT: {{  $}}294    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1295    ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)296    ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[LOAD]](s32)297    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)298    %0:_(p1) = COPY $vgpr0_vgpr1299    %1:_(s64) = G_ZEXTLOAD %0 :: (load (s32), addrspace 1)300    $vgpr0_vgpr1 = COPY %1301...302 303---304name: test_zextload_global_s32_from_2_align1305body: |306  bb.0:307    liveins: $vgpr0_vgpr1308 309    ; GFX8-LABEL: name: test_zextload_global_s32_from_2_align1310    ; GFX8: liveins: $vgpr0_vgpr1311    ; GFX8-NEXT: {{  $}}312    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1313    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 1, addrspace 1)314    ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)315    ;316    ; GFX6-LABEL: name: test_zextload_global_s32_from_2_align1317    ; GFX6: liveins: $vgpr0_vgpr1318    ; GFX6-NEXT: {{  $}}319    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1320    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)321    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1322    ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)323    ; GFX6-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 1, addrspace 1)324    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8325    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)326    ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]327    ; GFX6-NEXT: $vgpr0 = COPY [[OR]](s32)328    %0:_(p1) = COPY $vgpr0_vgpr1329    %1:_(s32) = G_ZEXTLOAD %0 :: (load (s16), align 1, addrspace 1)330    $vgpr0 = COPY %1331...332 333---334name: test_zextload_global_s64_from_2_align1335body: |336  bb.0:337    liveins: $vgpr0_vgpr1338 339    ; GFX8-LABEL: name: test_zextload_global_s64_from_2_align1340    ; GFX8: liveins: $vgpr0_vgpr1341    ; GFX8-NEXT: {{  $}}342    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1343    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 1, addrspace 1)344    ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)345    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)346    ;347    ; GFX6-LABEL: name: test_zextload_global_s64_from_2_align1348    ; GFX6: liveins: $vgpr0_vgpr1349    ; GFX6-NEXT: {{  $}}350    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1351    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)352    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1353    ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)354    ; GFX6-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 1, addrspace 1)355    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8356    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)357    ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]358    ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[OR]](s32)359    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)360    %0:_(p1) = COPY $vgpr0_vgpr1361    %1:_(s64) = G_ZEXTLOAD %0 :: (load (s16), align 1, addrspace 1)362    $vgpr0_vgpr1 = COPY %1363...364 365---366name: test_zextload_global_v2i16_from_2367body: |368  bb.0:369    liveins: $vgpr0_vgpr1370 371    ; GFX8-LABEL: name: test_zextload_global_v2i16_from_2372    ; GFX8: liveins: $vgpr0_vgpr1373    ; GFX8-NEXT: {{  $}}374    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1375    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s16>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)376    ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](<2 x s16>)377    ;378    ; GFX6-LABEL: name: test_zextload_global_v2i16_from_2379    ; GFX6: liveins: $vgpr0_vgpr1380    ; GFX6-NEXT: {{  $}}381    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1382    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s16>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)383    ; GFX6-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](<2 x s16>)384    %0:_(p1) = COPY $vgpr0_vgpr1385    %1:_(<2 x s16>) = G_ZEXTLOAD %0 :: (load (<2 x s8>), addrspace 1)386    $vgpr0 = COPY %1387...388 389---390name: test_zextload_global_v2i32_from_2391body: |392  bb.0:393    liveins: $vgpr0_vgpr1394 395    ; GFX8-LABEL: name: test_zextload_global_v2i32_from_2396    ; GFX8: liveins: $vgpr0_vgpr1397    ; GFX8-NEXT: {{  $}}398    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1399    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)400    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXTLOAD]](<2 x s32>)401    ;402    ; GFX6-LABEL: name: test_zextload_global_v2i32_from_2403    ; GFX6: liveins: $vgpr0_vgpr1404    ; GFX6-NEXT: {{  $}}405    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1406    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)407    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXTLOAD]](<2 x s32>)408    %0:_(p1) = COPY $vgpr0_vgpr1409    %1:_(<2 x s32>) = G_ZEXTLOAD %0 :: (load (<2 x s8>), addrspace 1)410    $vgpr0_vgpr1 = COPY %1411...412 413---414name: test_zextload_global_v2i32_from_4415body: |416  bb.0:417    liveins: $vgpr0_vgpr1418 419    ; GFX8-LABEL: name: test_zextload_global_v2i32_from_4420    ; GFX8: liveins: $vgpr0_vgpr1421    ; GFX8-NEXT: {{  $}}422    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1423    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)424    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXTLOAD]](<2 x s32>)425    ;426    ; GFX6-LABEL: name: test_zextload_global_v2i32_from_4427    ; GFX6: liveins: $vgpr0_vgpr1428    ; GFX6-NEXT: {{  $}}429    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1430    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)431    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXTLOAD]](<2 x s32>)432    %0:_(p1) = COPY $vgpr0_vgpr1433    %1:_(<2 x s32>) = G_ZEXTLOAD %0 :: (load (<2 x s16>), addrspace 1)434    $vgpr0_vgpr1 = COPY %1435...436 437---438name: test_zextload_global_v2i64_from_4439body: |440  bb.0:441    liveins: $vgpr0_vgpr1442 443    ; GFX8-LABEL: name: test_zextload_global_v2i64_from_4444    ; GFX8: liveins: $vgpr0_vgpr1445    ; GFX8-NEXT: {{  $}}446    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1447    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)448    ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](<2 x s64>)449    ;450    ; GFX6-LABEL: name: test_zextload_global_v2i64_from_4451    ; GFX6: liveins: $vgpr0_vgpr1452    ; GFX6-NEXT: {{  $}}453    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1454    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)455    ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](<2 x s64>)456    %0:_(p1) = COPY $vgpr0_vgpr1457    %1:_(<2 x s64>) = G_ZEXTLOAD %0 :: (load (<2 x s16>), addrspace 1)458    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1459...460 461---462name: test_zextload_global_v2i64_from_8463body: |464  bb.0:465    liveins: $vgpr0_vgpr1466 467    ; GFX8-LABEL: name: test_zextload_global_v2i64_from_8468    ; GFX8: liveins: $vgpr0_vgpr1469    ; GFX8-NEXT: {{  $}}470    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1471    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s32>), addrspace 1)472    ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](<2 x s64>)473    ;474    ; GFX6-LABEL: name: test_zextload_global_v2i64_from_8475    ; GFX6: liveins: $vgpr0_vgpr1476    ; GFX6-NEXT: {{  $}}477    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1478    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s32>), addrspace 1)479    ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](<2 x s64>)480    %0:_(p1) = COPY $vgpr0_vgpr1481    %1:_(<2 x s64>) = G_ZEXTLOAD %0 :: (load (<2 x s32>), addrspace 1)482    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1483...484 485---486name: test_zextload_global_s128_8487body: |488  bb.0:489    liveins: $vgpr0_vgpr1490 491    ; GFX8-LABEL: name: test_zextload_global_s128_8492    ; GFX8: liveins: $vgpr0_vgpr1493    ; GFX8-NEXT: {{  $}}494    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1495    ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s128) = G_ZEXTLOAD [[COPY]](p1) :: (load (s64), addrspace 1)496    ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](s128)497    ;498    ; GFX6-LABEL: name: test_zextload_global_s128_8499    ; GFX6: liveins: $vgpr0_vgpr1500    ; GFX6-NEXT: {{  $}}501    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1502    ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s128) = G_ZEXTLOAD [[COPY]](p1) :: (load (s64), addrspace 1)503    ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](s128)504    %0:_(p1) = COPY $vgpr0_vgpr1505    %1:_(s128) = G_ZEXTLOAD %0 :: (load (s64), addrspace 1)506    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1507...508