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