brintos

brintos / llvm-project-archived public Read only

0
0
Text · 64.3 KiB · ca3abaa Raw
1335 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -O0 -run-pass=legalizer -global-isel-abort=0 -pass-remarks-missed='gisel.*' -o - %s 2> %t.err | FileCheck -check-prefix=SI %s3# RUN: FileCheck -check-prefix=ERR %s < %t.err4# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer -global-isel-abort=0 -pass-remarks-missed='gisel.*' %s -o - 2> %t.err | FileCheck -check-prefix=VI %s5# RUN: FileCheck -check-prefix=ERR %s < %t.err6 7# ERR-NOT: remark8# ERR: remark: <unknown>:0:0: unable to legalize instruction: G_STORE %1:_(<2 x s8>), %0:_(p1) :: (store (<2 x s4>), addrspace 1) (in function: test_truncstore_global_v2s8_to_1_align1)9# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: G_STORE %2:_(<3 x s8>), %0:_(p1) :: (store (<3 x s2>), addrspace 1) (in function: test_truncstore_global_v3s8_to_1_align1)10# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: G_STORE %2:_(<3 x s8>), %0:_(p1) :: (store (<3 x s4>), addrspace 1) (in function: test_truncstore_global_v3s8_to_2_align2)11# ERR-NOT: remark12 13---14name: test_store_global_i3215body: |16  bb.0:17    liveins: $vgpr0_vgpr1, $vgpr218 19    ; SI-LABEL: name: test_store_global_i3220    ; SI: liveins: $vgpr0_vgpr1, $vgpr221    ; SI-NEXT: {{  $}}22    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr123    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr224    ; SI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s32), addrspace 1)25    ;26    ; VI-LABEL: name: test_store_global_i3227    ; VI: liveins: $vgpr0_vgpr1, $vgpr228    ; VI-NEXT: {{  $}}29    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr130    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr231    ; VI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s32), addrspace 1)32    %0:_(p1) = COPY $vgpr0_vgpr133    %1:_(s32) = COPY $vgpr234    G_STORE %1, %0 :: (store (s32), addrspace 1)35...36 37---38name: test_store_global_i6439body: |40  bb.0:41    liveins: $vgpr0_vgpr1, $vgpr2_vgpr342 43    ; SI-LABEL: name: test_store_global_i6444    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr345    ; SI-NEXT: {{  $}}46    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr147    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr348    ; SI-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store (s64), addrspace 1)49    ;50    ; VI-LABEL: name: test_store_global_i6451    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr352    ; VI-NEXT: {{  $}}53    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr154    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr355    ; VI-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store (s64), addrspace 1)56    %0:_(p1) = COPY $vgpr0_vgpr157    %1:_(s64) = COPY $vgpr2_vgpr358    G_STORE %1, %0 :: (store (s64), addrspace 1)59...60 61---62name: test_store_global_p163body: |64  bb.0:65    liveins: $vgpr0_vgpr1, $vgpr2_vgpr366 67    ; SI-LABEL: name: test_store_global_p168    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr369    ; SI-NEXT: {{  $}}70    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr171    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr2_vgpr372    ; SI-NEXT: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store (p1), addrspace 1)73    ;74    ; VI-LABEL: name: test_store_global_p175    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr376    ; VI-NEXT: {{  $}}77    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr178    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr2_vgpr379    ; VI-NEXT: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store (p1), addrspace 1)80    %0:_(p1) = COPY $vgpr0_vgpr181    %1:_(p1) = COPY $vgpr2_vgpr382    G_STORE %1, %0 :: (store (p1), addrspace 1)83...84 85---86name: test_store_global_p487body: |88  bb.0:89    liveins: $vgpr0_vgpr1, $vgpr2_vgpr390 91    ; SI-LABEL: name: test_store_global_p492    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr393    ; SI-NEXT: {{  $}}94    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr195    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr2_vgpr396    ; SI-NEXT: G_STORE [[COPY1]](p4), [[COPY]](p1) :: (store (p4), addrspace 1)97    ;98    ; VI-LABEL: name: test_store_global_p499    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3100    ; VI-NEXT: {{  $}}101    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1102    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr2_vgpr3103    ; VI-NEXT: G_STORE [[COPY1]](p4), [[COPY]](p1) :: (store (p4), addrspace 1)104    %0:_(p1) = COPY $vgpr0_vgpr1105    %1:_(p4) = COPY $vgpr2_vgpr3106    G_STORE %1, %0 :: (store (p4), addrspace 1)107...108 109---110name: test_store_global_p3111body: |112  bb.0:113    liveins: $vgpr0_vgpr1, $vgpr2114 115    ; SI-LABEL: name: test_store_global_p3116    ; SI: liveins: $vgpr0_vgpr1, $vgpr2117    ; SI-NEXT: {{  $}}118    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1119    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr2120    ; SI-NEXT: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store (p3), addrspace 1)121    ;122    ; VI-LABEL: name: test_store_global_p3123    ; VI: liveins: $vgpr0_vgpr1, $vgpr2124    ; VI-NEXT: {{  $}}125    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1126    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr2127    ; VI-NEXT: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store (p3), addrspace 1)128    %0:_(p1) = COPY $vgpr0_vgpr1129    %1:_(p3) = COPY $vgpr2130    G_STORE %1, %0 :: (store (p3), addrspace 1)131...132 133---134name: test_store_global_v2s32135body: |136  bb.0:137    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3138 139    ; SI-LABEL: name: test_store_global_v2s32140    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3141    ; SI-NEXT: {{  $}}142    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1143    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3144    ; SI-NEXT: G_STORE [[COPY1]](<2 x s32>), [[COPY]](p1) :: (store (<2 x s32>), addrspace 1)145    ;146    ; VI-LABEL: name: test_store_global_v2s32147    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3148    ; VI-NEXT: {{  $}}149    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1150    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3151    ; VI-NEXT: G_STORE [[COPY1]](<2 x s32>), [[COPY]](p1) :: (store (<2 x s32>), addrspace 1)152    %0:_(p1) = COPY $vgpr0_vgpr1153    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3154    G_STORE %1, %0 :: (store (<2 x s32>), addrspace 1)155...156 157---158name: test_store_global_v2s16159body: |160  bb.0:161    liveins: $vgpr0_vgpr1, $vgpr2162 163    ; SI-LABEL: name: test_store_global_v2s16164    ; SI: liveins: $vgpr0_vgpr1, $vgpr2165    ; SI-NEXT: {{  $}}166    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1167    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2168    ; SI-NEXT: G_STORE [[COPY1]](<2 x s16>), [[COPY]](p1) :: (store (<2 x s16>), addrspace 1)169    ;170    ; VI-LABEL: name: test_store_global_v2s16171    ; VI: liveins: $vgpr0_vgpr1, $vgpr2172    ; VI-NEXT: {{  $}}173    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1174    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2175    ; VI-NEXT: G_STORE [[COPY1]](<2 x s16>), [[COPY]](p1) :: (store (<2 x s16>), addrspace 1)176    %0:_(p1) = COPY $vgpr0_vgpr1177    %1:_(<2 x s16>) = COPY $vgpr2178    G_STORE %1, %0 :: (store (<2 x s16>), addrspace 1)179...180 181---182name: test_store_global_v3s32183body: |184  bb.0:185    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4186 187    ; SI-LABEL: name: test_store_global_v3s32188    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4189    ; SI-NEXT: {{  $}}190    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1191    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4192    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)193    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32)194    ; SI-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[COPY]](p1) :: (store (<2 x s32>), align 4, addrspace 1)195    ; SI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8196    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)197    ; SI-NEXT: G_STORE [[UV2]](s32), [[PTR_ADD]](p1) :: (store (s32) into unknown-address + 8, addrspace 1)198    ;199    ; VI-LABEL: name: test_store_global_v3s32200    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4201    ; VI-NEXT: {{  $}}202    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1203    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4204    ; VI-NEXT: G_STORE [[COPY1]](<3 x s32>), [[COPY]](p1) :: (store (<3 x s32>), align 4, addrspace 1)205    %0:_(p1) = COPY $vgpr0_vgpr1206    %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4207    G_STORE %1, %0 :: (store (<3 x s32>), align 4, addrspace 1)208...209 210---211name: test_truncstore_global_s64_to_s8212body: |213  bb.0:214    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3215 216    ; SI-LABEL: name: test_truncstore_global_s64_to_s8217    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3218    ; SI-NEXT: {{  $}}219    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1220    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3221    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)222    ; SI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)223    ;224    ; VI-LABEL: name: test_truncstore_global_s64_to_s8225    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3226    ; VI-NEXT: {{  $}}227    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1228    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3229    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)230    ; VI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)231    %0:_(p1) = COPY $vgpr0_vgpr1232    %1:_(s64) = COPY $vgpr2_vgpr3233    G_STORE %1, %0 :: (store (s8), addrspace 1)234...235 236---237name: test_truncstore_global_s64_to_s16238body: |239  bb.0:240    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3241 242    ; SI-LABEL: name: test_truncstore_global_s64_to_s16243    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3244    ; SI-NEXT: {{  $}}245    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1246    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3247    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)248    ; SI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)249    ;250    ; VI-LABEL: name: test_truncstore_global_s64_to_s16251    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3252    ; VI-NEXT: {{  $}}253    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1254    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3255    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)256    ; VI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)257    %0:_(p1) = COPY $vgpr0_vgpr1258    %1:_(s64) = COPY $vgpr2_vgpr3259    G_STORE %1, %0 :: (store (s16), addrspace 1)260...261 262---263name: test_truncstore_global_s64_to_s16_align1264body: |265  bb.0:266    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3267 268    ; SI-LABEL: name: test_truncstore_global_s64_to_s16_align1269    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3270    ; SI-NEXT: {{  $}}271    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1272    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3273    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)274    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8275    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535276    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C1]]277    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C]](s32)278    ; SI-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1279    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s64)280    ; SI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)281    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)282    ;283    ; VI-LABEL: name: test_truncstore_global_s64_to_s16_align1284    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3285    ; VI-NEXT: {{  $}}286    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1287    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3288    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s64)289    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)290    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 8291    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC]], [[C]](s16)292    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1293    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C1]](s64)294    ; VI-NEXT: G_STORE [[TRUNC1]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)295    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR]](s16)296    ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)297    %0:_(p1) = COPY $vgpr0_vgpr1298    %1:_(s64) = COPY $vgpr2_vgpr3299    G_STORE %1, %0 :: (store (s16), addrspace 1, align 1)300...301 302---303name: test_truncstore_global_s64_to_s32304body: |305  bb.0:306    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3307 308    ; SI-LABEL: name: test_truncstore_global_s64_to_s32309    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3310    ; SI-NEXT: {{  $}}311    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1312    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3313    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)314    ; SI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s32), addrspace 1)315    ;316    ; VI-LABEL: name: test_truncstore_global_s64_to_s32317    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3318    ; VI-NEXT: {{  $}}319    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1320    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3321    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)322    ; VI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s32), addrspace 1)323    %0:_(p1) = COPY $vgpr0_vgpr1324    %1:_(s64) = COPY $vgpr2_vgpr3325    G_STORE %1, %0 :: (store (s32), addrspace 1)326...327 328---329name: test_truncstore_global_s64_to_s32_align2330body: |331  bb.0:332    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3333 334    ; SI-LABEL: name: test_truncstore_global_s64_to_s32_align2335    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3336    ; SI-NEXT: {{  $}}337    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1338    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3339    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)340    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)341    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16342    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32)343    ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2344    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C1]](s64)345    ; SI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)346    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s16) into unknown-address + 2, addrspace 1)347    ;348    ; VI-LABEL: name: test_truncstore_global_s64_to_s32_align2349    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3350    ; VI-NEXT: {{  $}}351    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1352    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3353    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)354    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)355    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16356    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32)357    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2358    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C1]](s64)359    ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)360    ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s16) into unknown-address + 2, addrspace 1)361    %0:_(p1) = COPY $vgpr0_vgpr1362    %1:_(s64) = COPY $vgpr2_vgpr3363    G_STORE %1, %0 :: (store (s32), addrspace 1, align 2)364...365 366---367name: test_truncstore_global_s64_to_s32_align1368body: |369  bb.0:370    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3371 372    ; SI-LABEL: name: test_truncstore_global_s64_to_s32_align1373    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3374    ; SI-NEXT: {{  $}}375    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1376    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3377    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)378    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)379    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16380    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32)381    ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2382    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C1]](s64)383    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8384    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535385    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C3]]386    ; SI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s32)387    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 1388    ; SI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)389    ; SI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)390    ; SI-NEXT: G_STORE [[LSHR1]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)391    ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C2]](s32)392    ; SI-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY3]](s32)393    ; SI-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[PTR_ADD]], [[C4]](s64)394    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1)395    ; SI-NEXT: G_STORE [[LSHR2]](s32), [[PTR_ADD2]](p1) :: (store (s8) into unknown-address + 3, addrspace 1)396    ;397    ; VI-LABEL: name: test_truncstore_global_s64_to_s32_align1398    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3399    ; VI-NEXT: {{  $}}400    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1401    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3402    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)403    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)404    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16405    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32)406    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2407    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C1]](s64)408    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s64)409    ; VI-NEXT: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 8410    ; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC1]], [[C2]](s16)411    ; VI-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 1412    ; VI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C3]](s64)413    ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)414    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR1]](s16)415    ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)416    ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)417    ; VI-NEXT: [[LSHR2:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC2]], [[C2]](s16)418    ; VI-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[PTR_ADD]], [[C3]](s64)419    ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1)420    ; VI-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR2]](s16)421    ; VI-NEXT: G_STORE [[ANYEXT1]](s32), [[PTR_ADD2]](p1) :: (store (s8) into unknown-address + 3, addrspace 1)422    %0:_(p1) = COPY $vgpr0_vgpr1423    %1:_(s64) = COPY $vgpr2_vgpr3424    G_STORE %1, %0 :: (store (s32), addrspace 1, align 1)425...426 427---428name: test_truncstore_global_s128_to_s16429body: |430  bb.0:431    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5432 433    ; SI-LABEL: name: test_truncstore_global_s128_to_s16434    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5435    ; SI-NEXT: {{  $}}436    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1437    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5438    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)439    ; SI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)440    ;441    ; VI-LABEL: name: test_truncstore_global_s128_to_s16442    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5443    ; VI-NEXT: {{  $}}444    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1445    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5446    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)447    ; VI-NEXT: G_STORE [[TRUNC]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)448    %0:_(p1) = COPY $vgpr0_vgpr1449    %1:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5450    G_STORE %1, %0 :: (store (s16), addrspace 1)451...452 453---454name: test_truncstore_global_s128_to_s8455body: |456  bb.0:457    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5458 459    ; SI-LABEL: name: test_truncstore_global_s128_to_s8460    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5461    ; SI-NEXT: {{  $}}462    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1463    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5464    ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(<4 x s32>) = G_BITCAST [[COPY1]](s128)465    ; SI-NEXT: G_STORE [[BITCAST]](<4 x s32>), [[COPY]](p1) :: (store (<4 x s32>), addrspace 1)466    ;467    ; VI-LABEL: name: test_truncstore_global_s128_to_s8468    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5469    ; VI-NEXT: {{  $}}470    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1471    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5472    ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(<4 x s32>) = G_BITCAST [[COPY1]](s128)473    ; VI-NEXT: G_STORE [[BITCAST]](<4 x s32>), [[COPY]](p1) :: (store (<4 x s32>), addrspace 1)474    %0:_(p1) = COPY $vgpr0_vgpr1475    %1:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5476    G_STORE %1, %0 :: (store (s128), addrspace 1)477...478 479---480name: test_store_global_i1481body: |482  bb.0:483    liveins: $vgpr0_vgpr1, $vgpr2484 485    ; SI-LABEL: name: test_store_global_i1486    ; SI: liveins: $vgpr0_vgpr1, $vgpr2487    ; SI-NEXT: {{  $}}488    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1489    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2490    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1491    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]492    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]493    ; SI-NEXT: G_STORE [[AND1]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)494    ;495    ; VI-LABEL: name: test_store_global_i1496    ; VI: liveins: $vgpr0_vgpr1, $vgpr2497    ; VI-NEXT: {{  $}}498    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1499    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2500    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1501    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]502    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[AND]], [[C]]503    ; VI-NEXT: G_STORE [[AND1]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)504    %0:_(p1) = COPY $vgpr0_vgpr1505    %1:_(s32) = COPY $vgpr2506    %2:_(s1) = G_TRUNC %1507    G_STORE %2, %0 :: (store (s1), addrspace 1)508...509 510---511name: test_store_global_i8512body: |513  bb.0:514    liveins: $vgpr0_vgpr1, $vgpr2515 516    ; SI-LABEL: name: test_store_global_i8517    ; SI: liveins: $vgpr0_vgpr1, $vgpr2518    ; SI-NEXT: {{  $}}519    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1520    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2521    ; SI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)522    ;523    ; VI-LABEL: name: test_store_global_i8524    ; VI: liveins: $vgpr0_vgpr1, $vgpr2525    ; VI-NEXT: {{  $}}526    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1527    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2528    ; VI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)529    %0:_(p1) = COPY $vgpr0_vgpr1530    %1:_(s32) = COPY $vgpr2531    %2:_(s8) = G_TRUNC %1532    G_STORE %2, %0 :: (store (s8), addrspace 1)533...534 535---536name: test_store_global_i16537body: |538  bb.0:539    liveins: $vgpr0_vgpr1, $vgpr2540 541    ; SI-LABEL: name: test_store_global_i16542    ; SI: liveins: $vgpr0_vgpr1, $vgpr2543    ; SI-NEXT: {{  $}}544    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1545    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2546    ; SI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)547    ;548    ; VI-LABEL: name: test_store_global_i16549    ; VI: liveins: $vgpr0_vgpr1, $vgpr2550    ; VI-NEXT: {{  $}}551    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1552    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2553    ; VI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)554    %0:_(p1) = COPY $vgpr0_vgpr1555    %1:_(s32) = COPY $vgpr2556    %2:_(s16) = G_TRUNC %1557    G_STORE %2, %0 :: (store (s16), addrspace 1)558...559 560---561name: test_store_global_96562body: |563  bb.0:564    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4565 566    ; SI-LABEL: name: test_store_global_96567    ; SI: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4568    ; SI-NEXT: {{  $}}569    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2570    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr3_vgpr4571    ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(<3 x s32>) = G_BITCAST [[COPY]](s96)572    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[BITCAST]](<3 x s32>)573    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32)574    ; SI-NEXT: G_STORE [[BUILD_VECTOR]](<2 x s32>), [[COPY1]](p1) :: (store (<2 x s32>), align 16, addrspace 1)575    ; SI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8576    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY1]], [[C]](s64)577    ; SI-NEXT: G_STORE [[UV2]](s32), [[PTR_ADD]](p1) :: (store (s32) into unknown-address + 8, align 8, addrspace 1)578    ;579    ; VI-LABEL: name: test_store_global_96580    ; VI: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4581    ; VI-NEXT: {{  $}}582    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2583    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr3_vgpr4584    ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(<3 x s32>) = G_BITCAST [[COPY]](s96)585    ; VI-NEXT: G_STORE [[BITCAST]](<3 x s32>), [[COPY1]](p1) :: (store (<3 x s32>), align 16, addrspace 1)586    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2587    %1:_(p1) = COPY $vgpr3_vgpr4588 589    G_STORE %0, %1 :: (store (s96), addrspace 1, align 16)590...591 592---593name: test_store_global_i128594body: |595  bb.0:596    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5597 598    ; SI-LABEL: name: test_store_global_i128599    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5600    ; SI-NEXT: {{  $}}601    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1602    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5603    ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(<4 x s32>) = G_BITCAST [[COPY1]](s128)604    ; SI-NEXT: G_STORE [[BITCAST]](<4 x s32>), [[COPY]](p1) :: (store (<4 x s32>), addrspace 1)605    ;606    ; VI-LABEL: name: test_store_global_i128607    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5608    ; VI-NEXT: {{  $}}609    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1610    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5611    ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(<4 x s32>) = G_BITCAST [[COPY1]](s128)612    ; VI-NEXT: G_STORE [[BITCAST]](<4 x s32>), [[COPY]](p1) :: (store (<4 x s32>), addrspace 1)613    %0:_(p1) = COPY $vgpr0_vgpr1614    %1:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5615    G_STORE %1, %0 :: (store (s128), addrspace 1)616...617 618---619name: test_store_global_v2s64620body: |621  bb.0:622    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5623 624    ; SI-LABEL: name: test_store_global_v2s64625    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5626    ; SI-NEXT: {{  $}}627    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1628    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5629    ; SI-NEXT: G_STORE [[COPY1]](<2 x s64>), [[COPY]](p1) :: (store (<2 x s64>), addrspace 1)630    ;631    ; VI-LABEL: name: test_store_global_v2s64632    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5633    ; VI-NEXT: {{  $}}634    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1635    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5636    ; VI-NEXT: G_STORE [[COPY1]](<2 x s64>), [[COPY]](p1) :: (store (<2 x s64>), addrspace 1)637    %0:_(p1) = COPY $vgpr0_vgpr1638    %1:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5639    G_STORE %1, %0 :: (store (<2 x s64>), addrspace 1)640 641...642 643---644name: test_store_global_v2s8_align1645body: |646  bb.0:647    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5648 649    ; SI-LABEL: name: test_store_global_v2s8_align1650    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5651    ; SI-NEXT: {{  $}}652    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1653    ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF654    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)655    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255656    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]657    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8658    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32)659    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255660    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]]661    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY1]](s32)662    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)663    ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]664    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16)665    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535666    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C3]]667    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C1]](s32)668    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 1669    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)670    ; SI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)671    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)672    ;673    ; VI-LABEL: name: test_store_global_v2s8_align1674    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5675    ; VI-NEXT: {{  $}}676    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1677    ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF678    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)679    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255680    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]681    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)682    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]683    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8684    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16)685    ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]686    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16)687    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[OR]], [[C1]](s16)688    ; VI-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1689    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s64)690    ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)691    ; VI-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR]](s16)692    ; VI-NEXT: G_STORE [[ANYEXT1]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)693    %0:_(p1) = COPY $vgpr0_vgpr1694    %1:_(<2 x s8>) = G_IMPLICIT_DEF695    G_STORE %1, %0 :: (store (<2 x s8>), addrspace 1, align 1)696 697...698 699---700name: test_store_global_v2s8_align2701body: |702  bb.0:703    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5704 705    ; SI-LABEL: name: test_store_global_v2s8_align2706    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5707    ; SI-NEXT: {{  $}}708    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1709    ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF710    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)711    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255712    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]713    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8714    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255715    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]]716    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)717    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)718    ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]719    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16)720    ; SI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)721    ;722    ; VI-LABEL: name: test_store_global_v2s8_align2723    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5724    ; VI-NEXT: {{  $}}725    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1726    ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF727    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)728    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255729    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]730    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)731    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]732    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8733    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16)734    ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]735    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16)736    ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)737    %0:_(p1) = COPY $vgpr0_vgpr1738    %1:_(<2 x s8>) = G_IMPLICIT_DEF739    G_STORE %1, %0 :: (store (<2 x s8>), addrspace 1, align 2)740 741...742 743---744name: test_store_global_v2s8_align4745body: |746  bb.0:747    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5748 749    ; SI-LABEL: name: test_store_global_v2s8_align4750    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5751    ; SI-NEXT: {{  $}}752    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1753    ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF754    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)755    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255756    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]757    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8758    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255759    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]]760    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)761    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)762    ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]763    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16)764    ; SI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s16), align 4, addrspace 1)765    ;766    ; VI-LABEL: name: test_store_global_v2s8_align4767    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5768    ; VI-NEXT: {{  $}}769    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1770    ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF771    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)772    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255773    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]774    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)775    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]776    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8777    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16)778    ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]779    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16)780    ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s16), align 4, addrspace 1)781    %0:_(p1) = COPY $vgpr0_vgpr1782    %1:_(<2 x s8>) = G_IMPLICIT_DEF783    G_STORE %1, %0 :: (store (<2 x s8>), addrspace 1, align 4)784 785...786 787---788name: test_store_global_v3s8_align1789body: |790  bb.0:791    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4792 793    ; SI-LABEL: name: test_store_global_v3s8_align1794    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4795    ; SI-NEXT: {{  $}}796    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1797    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4798    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)799    ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF800    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)801    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255802    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]803    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8804    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32)805    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255806    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]807    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY2]](s32)808    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)809    ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]810    ; SI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)811    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]]812    ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32)813    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]]814    ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[COPY3]](s32)815    ; SI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32)816    ; SI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]]817    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)818    ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)819    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16820    ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C3]](s32)821    ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]822    ; SI-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)823    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY4]], [[C3]](s32)824    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2825    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)826    ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535827    ; SI-NEXT: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C5]]828    ; SI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND4]], [[C1]](s32)829    ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 1830    ; SI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C6]](s64)831    ; SI-NEXT: G_STORE [[COPY4]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)832    ; SI-NEXT: G_STORE [[LSHR1]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)833    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1)834    ;835    ; VI-LABEL: name: test_store_global_v3s8_align1836    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4837    ; VI-NEXT: {{  $}}838    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1839    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4840    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)841    ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF842    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)843    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255844    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]845    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32)846    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]847    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8848    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16)849    ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]850    ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)851    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]]852    ; VI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)853    ; VI-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC3]], [[C]]854    ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C1]](s16)855    ; VI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[SHL1]]856    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)857    ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)858    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16859    ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C2]](s32)860    ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]861    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)862    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32)863    ; VI-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 2864    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C3]](s64)865    ; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s16) = G_LSHR [[OR]], [[C1]](s16)866    ; VI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 1867    ; VI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)868    ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)869    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR1]](s16)870    ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)871    ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1)872    %0:_(p1) = COPY $vgpr0_vgpr1873    %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4874    %2:_(<3 x s8>) = G_TRUNC %1875    G_STORE %2, %0 :: (store (<3 x s8>), addrspace 1, align 1)876 877...878 879---880name: test_store_global_v3s8_align2881body: |882  bb.0:883    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4884 885    ; SI-LABEL: name: test_store_global_v3s8_align2886    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4887    ; SI-NEXT: {{  $}}888    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1889    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4890    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)891    ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF892    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)893    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255894    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]895    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8896    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32)897    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255898    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]899    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY2]](s32)900    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)901    ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]902    ; SI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)903    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]]904    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]]905    ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C1]](s32)906    ; SI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32)907    ; SI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]]908    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)909    ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)910    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16911    ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C3]](s32)912    ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]913    ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)914    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY3]], [[C3]](s32)915    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2916    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)917    ; SI-NEXT: G_STORE [[COPY3]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)918    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, align 2, addrspace 1)919    ;920    ; VI-LABEL: name: test_store_global_v3s8_align2921    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4922    ; VI-NEXT: {{  $}}923    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1924    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4925    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)926    ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF927    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)928    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255929    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]930    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32)931    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]932    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8933    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16)934    ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]935    ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)936    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]]937    ; VI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)938    ; VI-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC3]], [[C]]939    ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C1]](s16)940    ; VI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[SHL1]]941    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)942    ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)943    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16944    ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C2]](s32)945    ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]946    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)947    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32)948    ; VI-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 2949    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C3]](s64)950    ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)951    ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, align 2, addrspace 1)952    %0:_(p1) = COPY $vgpr0_vgpr1953    %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4954    %2:_(<3 x s8>) = G_TRUNC %1955    G_STORE %2, %0 :: (store (<3 x s8>), addrspace 1, align 2)956 957...958 959---960name: test_store_global_v3s8_align4961body: |962  bb.0:963    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4964 965    ; SI-LABEL: name: test_store_global_v3s8_align4966    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4967    ; SI-NEXT: {{  $}}968    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1969    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4970    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)971    ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF972    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)973    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255974    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]975    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8976    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32)977    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255978    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]]979    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY2]](s32)980    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)981    ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]982    ; SI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)983    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]]984    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]]985    ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C1]](s32)986    ; SI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32)987    ; SI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]]988    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)989    ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)990    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16991    ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C3]](s32)992    ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]993    ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)994    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY3]], [[C3]](s32)995    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2996    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)997    ; SI-NEXT: G_STORE [[COPY3]](s32), [[COPY]](p1) :: (store (s16), align 4, addrspace 1)998    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, align 2, addrspace 1)999    ;1000    ; VI-LABEL: name: test_store_global_v3s8_align41001    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr41002    ; VI-NEXT: {{  $}}1003    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11004    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr41005    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)1006    ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF1007    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)1008    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 2551009    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]1010    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32)1011    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]1012    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 81013    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16)1014    ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]1015    ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)1016    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]]1017    ; VI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)1018    ; VI-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC3]], [[C]]1019    ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C1]](s16)1020    ; VI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[SHL1]]1021    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)1022    ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)1023    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161024    ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C2]](s32)1025    ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]1026    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)1027    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32)1028    ; VI-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 21029    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C3]](s64)1030    ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), align 4, addrspace 1)1031    ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, align 2, addrspace 1)1032    %0:_(p1) = COPY $vgpr0_vgpr11033    %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr41034    %2:_(<3 x s8>) = G_TRUNC %11035    G_STORE %2, %0 :: (store (<3 x s8>), addrspace 1, align 4)1036 1037...1038 1039---1040name: test_store_global_v4s8_align11041body: |1042  bb.0:1043    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51044 1045    ; SI-LABEL: name: test_store_global_v4s8_align11046    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51047    ; SI-NEXT: {{  $}}1048    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11049    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51050    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>)1051    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2551052    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]]1053    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]]1054    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 81055    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1056    ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1057    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]]1058    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161059    ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32)1060    ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]1061    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]]1062    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 241063    ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32)1064    ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]1065    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)1066    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32)1067    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 21068    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)1069    ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351070    ; SI-NEXT: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C5]]1071    ; SI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND4]], [[C1]](s32)1072    ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 11073    ; SI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C6]](s64)1074    ; SI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)1075    ; SI-NEXT: G_STORE [[LSHR1]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)1076    ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32)1077    ; SI-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY3]](s32)1078    ; SI-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[PTR_ADD]], [[C6]](s64)1079    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1)1080    ; SI-NEXT: G_STORE [[LSHR2]](s32), [[PTR_ADD2]](p1) :: (store (s8) into unknown-address + 3, addrspace 1)1081    ;1082    ; VI-LABEL: name: test_store_global_v4s8_align11083    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51084    ; VI-NEXT: {{  $}}1085    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11086    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51087    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>)1088    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2551089    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]]1090    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]]1091    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 81092    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1093    ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1094    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]]1095    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161096    ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32)1097    ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]1098    ; VI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]]1099    ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 241100    ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32)1101    ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]1102    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)1103    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32)1104    ; VI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 21105    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)1106    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)1107    ; VI-NEXT: [[C5:%[0-9]+]]:_(s16) = G_CONSTANT i16 2551108    ; VI-NEXT: [[AND4:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C5]]1109    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32)1110    ; VI-NEXT: [[AND5:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C5]]1111    ; VI-NEXT: [[C6:%[0-9]+]]:_(s16) = G_CONSTANT i16 81112    ; VI-NEXT: [[SHL3:%[0-9]+]]:_(s16) = G_SHL [[AND5]], [[C6]](s16)1113    ; VI-NEXT: [[OR3:%[0-9]+]]:_(s16) = G_OR [[AND4]], [[SHL3]]1114    ; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s16) = G_LSHR [[OR3]], [[C6]](s16)1115    ; VI-NEXT: [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 11116    ; VI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C7]](s64)1117    ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s8), addrspace 1)1118    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR1]](s16)1119    ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1)1120    ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)1121    ; VI-NEXT: [[LSHR2:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC2]], [[C6]](s16)1122    ; VI-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[PTR_ADD]], [[C7]](s64)1123    ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1)1124    ; VI-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR2]](s16)1125    ; VI-NEXT: G_STORE [[ANYEXT1]](s32), [[PTR_ADD2]](p1) :: (store (s8) into unknown-address + 3, addrspace 1)1126    %0:_(p1) = COPY $vgpr0_vgpr11127    %1:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51128    %2:_(<4 x s8>) = G_TRUNC %11129    G_STORE %2, %0 :: (store (<4 x s8>), addrspace 1, align 1)1130 1131...1132 1133---1134name: test_store_global_v4s8_align21135body: |1136  bb.0:1137    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51138 1139    ; SI-LABEL: name: test_store_global_v4s8_align21140    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51141    ; SI-NEXT: {{  $}}1142    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11143    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51144    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>)1145    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2551146    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]]1147    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]]1148    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 81149    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1150    ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1151    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]]1152    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161153    ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32)1154    ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]1155    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]]1156    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 241157    ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32)1158    ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]1159    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)1160    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32)1161    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 21162    ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)1163    ; SI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)1164    ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s16) into unknown-address + 2, addrspace 1)1165    ;1166    ; VI-LABEL: name: test_store_global_v4s8_align21167    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51168    ; VI-NEXT: {{  $}}1169    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11170    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51171    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>)1172    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2551173    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]]1174    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]]1175    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 81176    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1177    ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1178    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]]1179    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161180    ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32)1181    ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]1182    ; VI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]]1183    ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 241184    ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32)1185    ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]1186    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32)1187    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32)1188    ; VI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 21189    ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s64)1190    ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), addrspace 1)1191    ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s16) into unknown-address + 2, addrspace 1)1192    %0:_(p1) = COPY $vgpr0_vgpr11193    %1:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51194    %2:_(<4 x s8>) = G_TRUNC %11195    G_STORE %2, %0 :: (store (<4 x s8>), addrspace 1, align 2)1196 1197...1198 1199---1200name: test_store_global_v4s8_align41201body: |1202  bb.0:1203    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51204 1205    ; SI-LABEL: name: test_store_global_v4s8_align41206    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51207    ; SI-NEXT: {{  $}}1208    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11209    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51210    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>)1211    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2551212    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]]1213    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]]1214    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 81215    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1216    ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1217    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]]1218    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161219    ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32)1220    ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]1221    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]]1222    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 241223    ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32)1224    ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]1225    ; SI-NEXT: G_STORE [[OR2]](s32), [[COPY]](p1) :: (store (s32), addrspace 1)1226    ;1227    ; VI-LABEL: name: test_store_global_v4s8_align41228    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51229    ; VI-NEXT: {{  $}}1230    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11231    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51232    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>)1233    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2551234    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]]1235    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]]1236    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 81237    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1238    ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1239    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]]1240    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161241    ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32)1242    ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]1243    ; VI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]]1244    ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 241245    ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32)1246    ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]1247    ; VI-NEXT: G_STORE [[OR2]](s32), [[COPY]](p1) :: (store (s32), addrspace 1)1248    %0:_(p1) = COPY $vgpr0_vgpr11249    %1:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr51250    %2:_(<4 x s8>) = G_TRUNC %11251    G_STORE %2, %0 :: (store (<4 x s8>), addrspace 1, align 4)1252 1253...1254 1255---1256name: test_truncstore_global_v2s8_to_1_align11257body: |1258  bb.0:1259    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51260 1261    ; SI-LABEL: name: test_truncstore_global_v2s8_to_1_align11262    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51263    ; SI-NEXT: {{  $}}1264    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11265    ; SI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s8>) = G_IMPLICIT_DEF1266    ; SI-NEXT: G_STORE [[DEF]](<2 x s8>), [[COPY]](p1) :: (store (<2 x s4>), addrspace 1)1267    ;1268    ; VI-LABEL: name: test_truncstore_global_v2s8_to_1_align11269    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr51270    ; VI-NEXT: {{  $}}1271    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11272    ; VI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s8>) = G_IMPLICIT_DEF1273    ; VI-NEXT: G_STORE [[DEF]](<2 x s8>), [[COPY]](p1) :: (store (<2 x s4>), addrspace 1)1274    %0:_(p1) = COPY $vgpr0_vgpr11275    %1:_(<2 x s8>) = G_IMPLICIT_DEF1276    G_STORE %1, %0 :: (store (<2 x s4>), addrspace 1, align 1)1277 1278...1279 1280---1281name: test_truncstore_global_v3s8_to_1_align11282body: |1283  bb.0:1284    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr41285 1286    ; SI-LABEL: name: test_truncstore_global_v3s8_to_1_align11287    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr41288    ; SI-NEXT: {{  $}}1289    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11290    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr41291    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>)1292    ; SI-NEXT: G_STORE [[TRUNC]](<3 x s8>), [[COPY]](p1) :: (store (<3 x s2>), addrspace 1)1293    ;1294    ; VI-LABEL: name: test_truncstore_global_v3s8_to_1_align11295    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr41296    ; VI-NEXT: {{  $}}1297    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11298    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr41299    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>)1300    ; VI-NEXT: G_STORE [[TRUNC]](<3 x s8>), [[COPY]](p1) :: (store (<3 x s2>), addrspace 1)1301    %0:_(p1) = COPY $vgpr0_vgpr11302    %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr41303    %2:_(<3 x s8>) = G_TRUNC %11304    G_STORE %2, %0 :: (store (<3 x s2>), addrspace 1, align 1)1305 1306...1307 1308---1309name: test_truncstore_global_v3s8_to_2_align21310body: |1311  bb.0:1312    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr41313 1314    ; SI-LABEL: name: test_truncstore_global_v3s8_to_2_align21315    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr41316    ; SI-NEXT: {{  $}}1317    ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11318    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr41319    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>)1320    ; SI-NEXT: G_STORE [[TRUNC]](<3 x s8>), [[COPY]](p1) :: (store (<3 x s4>), addrspace 1)1321    ;1322    ; VI-LABEL: name: test_truncstore_global_v3s8_to_2_align21323    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr41324    ; VI-NEXT: {{  $}}1325    ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr11326    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr41327    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>)1328    ; VI-NEXT: G_STORE [[TRUNC]](<3 x s8>), [[COPY]](p1) :: (store (<3 x s4>), addrspace 1)1329    %0:_(p1) = COPY $vgpr0_vgpr11330    %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr41331    %2:_(<3 x s8>) = G_TRUNC %11332    G_STORE %2, %0 :: (store (<3 x s4>), addrspace 1, align 2)1333 1334...1335