1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# 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 %s 3# RUN: FileCheck -check-prefix=ERR %s < %t.err 4# 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 %s 5# RUN: FileCheck -check-prefix=ERR %s < %t.err 6 7# ERR-NOT: remark 8# 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: remark 12 13--- 14name: test_store_global_i32 15body: | 16 bb.0: 17 liveins: $vgpr0_vgpr1, $vgpr2 18 19 ; SI-LABEL: name: test_store_global_i32 20 ; SI: liveins: $vgpr0_vgpr1, $vgpr2 21 ; SI-NEXT: {{ $}} 22 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 23 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 24 ; SI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s32), addrspace 1) 25 ; 26 ; VI-LABEL: name: test_store_global_i32 27 ; VI: liveins: $vgpr0_vgpr1, $vgpr2 28 ; VI-NEXT: {{ $}} 29 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 30 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 31 ; VI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s32), addrspace 1) 32 %0:_(p1) = COPY $vgpr0_vgpr1 33 %1:_(s32) = COPY $vgpr2 34 G_STORE %1, %0 :: (store (s32), addrspace 1) 35... 36 37--- 38name: test_store_global_i64 39body: | 40 bb.0: 41 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 42 43 ; SI-LABEL: name: test_store_global_i64 44 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 45 ; SI-NEXT: {{ $}} 46 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 47 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 48 ; SI-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store (s64), addrspace 1) 49 ; 50 ; VI-LABEL: name: test_store_global_i64 51 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 52 ; VI-NEXT: {{ $}} 53 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 54 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 55 ; VI-NEXT: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store (s64), addrspace 1) 56 %0:_(p1) = COPY $vgpr0_vgpr1 57 %1:_(s64) = COPY $vgpr2_vgpr3 58 G_STORE %1, %0 :: (store (s64), addrspace 1) 59... 60 61--- 62name: test_store_global_p1 63body: | 64 bb.0: 65 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 66 67 ; SI-LABEL: name: test_store_global_p1 68 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 69 ; SI-NEXT: {{ $}} 70 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 71 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr2_vgpr3 72 ; SI-NEXT: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store (p1), addrspace 1) 73 ; 74 ; VI-LABEL: name: test_store_global_p1 75 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 76 ; VI-NEXT: {{ $}} 77 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 78 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr2_vgpr3 79 ; VI-NEXT: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store (p1), addrspace 1) 80 %0:_(p1) = COPY $vgpr0_vgpr1 81 %1:_(p1) = COPY $vgpr2_vgpr3 82 G_STORE %1, %0 :: (store (p1), addrspace 1) 83... 84 85--- 86name: test_store_global_p4 87body: | 88 bb.0: 89 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 90 91 ; SI-LABEL: name: test_store_global_p4 92 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 93 ; SI-NEXT: {{ $}} 94 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 95 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr2_vgpr3 96 ; SI-NEXT: G_STORE [[COPY1]](p4), [[COPY]](p1) :: (store (p4), addrspace 1) 97 ; 98 ; VI-LABEL: name: test_store_global_p4 99 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 100 ; VI-NEXT: {{ $}} 101 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 102 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr2_vgpr3 103 ; VI-NEXT: G_STORE [[COPY1]](p4), [[COPY]](p1) :: (store (p4), addrspace 1) 104 %0:_(p1) = COPY $vgpr0_vgpr1 105 %1:_(p4) = COPY $vgpr2_vgpr3 106 G_STORE %1, %0 :: (store (p4), addrspace 1) 107... 108 109--- 110name: test_store_global_p3 111body: | 112 bb.0: 113 liveins: $vgpr0_vgpr1, $vgpr2 114 115 ; SI-LABEL: name: test_store_global_p3 116 ; SI: liveins: $vgpr0_vgpr1, $vgpr2 117 ; SI-NEXT: {{ $}} 118 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 119 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr2 120 ; SI-NEXT: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store (p3), addrspace 1) 121 ; 122 ; VI-LABEL: name: test_store_global_p3 123 ; VI: liveins: $vgpr0_vgpr1, $vgpr2 124 ; VI-NEXT: {{ $}} 125 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 126 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr2 127 ; VI-NEXT: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store (p3), addrspace 1) 128 %0:_(p1) = COPY $vgpr0_vgpr1 129 %1:_(p3) = COPY $vgpr2 130 G_STORE %1, %0 :: (store (p3), addrspace 1) 131... 132 133--- 134name: test_store_global_v2s32 135body: | 136 bb.0: 137 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 138 139 ; SI-LABEL: name: test_store_global_v2s32 140 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 141 ; SI-NEXT: {{ $}} 142 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 143 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 144 ; SI-NEXT: G_STORE [[COPY1]](<2 x s32>), [[COPY]](p1) :: (store (<2 x s32>), addrspace 1) 145 ; 146 ; VI-LABEL: name: test_store_global_v2s32 147 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 148 ; VI-NEXT: {{ $}} 149 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 150 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 151 ; VI-NEXT: G_STORE [[COPY1]](<2 x s32>), [[COPY]](p1) :: (store (<2 x s32>), addrspace 1) 152 %0:_(p1) = COPY $vgpr0_vgpr1 153 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3 154 G_STORE %1, %0 :: (store (<2 x s32>), addrspace 1) 155... 156 157--- 158name: test_store_global_v2s16 159body: | 160 bb.0: 161 liveins: $vgpr0_vgpr1, $vgpr2 162 163 ; SI-LABEL: name: test_store_global_v2s16 164 ; SI: liveins: $vgpr0_vgpr1, $vgpr2 165 ; SI-NEXT: {{ $}} 166 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 167 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 168 ; SI-NEXT: G_STORE [[COPY1]](<2 x s16>), [[COPY]](p1) :: (store (<2 x s16>), addrspace 1) 169 ; 170 ; VI-LABEL: name: test_store_global_v2s16 171 ; VI: liveins: $vgpr0_vgpr1, $vgpr2 172 ; VI-NEXT: {{ $}} 173 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 174 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2 175 ; VI-NEXT: G_STORE [[COPY1]](<2 x s16>), [[COPY]](p1) :: (store (<2 x s16>), addrspace 1) 176 %0:_(p1) = COPY $vgpr0_vgpr1 177 %1:_(<2 x s16>) = COPY $vgpr2 178 G_STORE %1, %0 :: (store (<2 x s16>), addrspace 1) 179... 180 181--- 182name: test_store_global_v3s32 183body: | 184 bb.0: 185 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 186 187 ; SI-LABEL: name: test_store_global_v3s32 188 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 189 ; SI-NEXT: {{ $}} 190 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 191 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 192 ; 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 8 196 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = 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_v3s32 200 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 201 ; VI-NEXT: {{ $}} 202 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 203 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 204 ; VI-NEXT: G_STORE [[COPY1]](<3 x s32>), [[COPY]](p1) :: (store (<3 x s32>), align 4, addrspace 1) 205 %0:_(p1) = COPY $vgpr0_vgpr1 206 %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 207 G_STORE %1, %0 :: (store (<3 x s32>), align 4, addrspace 1) 208... 209 210--- 211name: test_truncstore_global_s64_to_s8 212body: | 213 bb.0: 214 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 215 216 ; SI-LABEL: name: test_truncstore_global_s64_to_s8 217 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 218 ; SI-NEXT: {{ $}} 219 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 220 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 221 ; 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_s8 225 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 226 ; VI-NEXT: {{ $}} 227 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 228 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 229 ; 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_vgpr1 232 %1:_(s64) = COPY $vgpr2_vgpr3 233 G_STORE %1, %0 :: (store (s8), addrspace 1) 234... 235 236--- 237name: test_truncstore_global_s64_to_s16 238body: | 239 bb.0: 240 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 241 242 ; SI-LABEL: name: test_truncstore_global_s64_to_s16 243 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 244 ; SI-NEXT: {{ $}} 245 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 246 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 247 ; 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_s16 251 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 252 ; VI-NEXT: {{ $}} 253 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 254 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 255 ; 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_vgpr1 258 %1:_(s64) = COPY $vgpr2_vgpr3 259 G_STORE %1, %0 :: (store (s16), addrspace 1) 260... 261 262--- 263name: test_truncstore_global_s64_to_s16_align1 264body: | 265 bb.0: 266 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 267 268 ; SI-LABEL: name: test_truncstore_global_s64_to_s16_align1 269 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 270 ; SI-NEXT: {{ $}} 271 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 272 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 273 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64) 274 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 275 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 276 ; 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 1 279 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = 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_align1 284 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 285 ; VI-NEXT: {{ $}} 286 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 287 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 288 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64) 289 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s64) 290 ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 291 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC1]], [[C]](s16) 292 ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 293 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C1]](s64) 294 ; VI-NEXT: G_STORE [[TRUNC]](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_vgpr1 298 %1:_(s64) = COPY $vgpr2_vgpr3 299 G_STORE %1, %0 :: (store (s16), addrspace 1, align 1) 300... 301 302--- 303name: test_truncstore_global_s64_to_s32 304body: | 305 bb.0: 306 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 307 308 ; SI-LABEL: name: test_truncstore_global_s64_to_s32 309 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 310 ; SI-NEXT: {{ $}} 311 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 312 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 313 ; 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_s32 317 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 318 ; VI-NEXT: {{ $}} 319 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 320 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 321 ; 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_vgpr1 324 %1:_(s64) = COPY $vgpr2_vgpr3 325 G_STORE %1, %0 :: (store (s32), addrspace 1) 326... 327 328--- 329name: test_truncstore_global_s64_to_s32_align2 330body: | 331 bb.0: 332 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 333 334 ; SI-LABEL: name: test_truncstore_global_s64_to_s32_align2 335 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 336 ; SI-NEXT: {{ $}} 337 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 338 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 339 ; 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 16 342 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32) 343 ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 344 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = 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_align2 349 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 350 ; VI-NEXT: {{ $}} 351 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 352 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 353 ; 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 16 356 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32) 357 ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 358 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = 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_vgpr1 362 %1:_(s64) = COPY $vgpr2_vgpr3 363 G_STORE %1, %0 :: (store (s32), addrspace 1, align 2) 364... 365 366--- 367name: test_truncstore_global_s64_to_s32_align1 368body: | 369 bb.0: 370 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 371 372 ; SI-LABEL: name: test_truncstore_global_s64_to_s32_align1 373 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 374 ; SI-NEXT: {{ $}} 375 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 376 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 377 ; 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 16 380 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32) 381 ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 382 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C1]](s64) 383 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 384 ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 385 ; 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 1 388 ; SI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = 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) = 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_align1 398 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 399 ; VI-NEXT: {{ $}} 400 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 401 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 402 ; 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 16 405 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C]](s32) 406 ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 407 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = 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 8 410 ; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC1]], [[C2]](s16) 411 ; VI-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 412 ; VI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = 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) = 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_vgpr1 423 %1:_(s64) = COPY $vgpr2_vgpr3 424 G_STORE %1, %0 :: (store (s32), addrspace 1, align 1) 425... 426 427--- 428name: test_truncstore_global_s128_to_s16 429body: | 430 bb.0: 431 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 432 433 ; SI-LABEL: name: test_truncstore_global_s128_to_s16 434 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 435 ; SI-NEXT: {{ $}} 436 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 437 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 438 ; 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_s16 442 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 443 ; VI-NEXT: {{ $}} 444 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 445 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 446 ; 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_vgpr1 449 %1:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 450 G_STORE %1, %0 :: (store (s16), addrspace 1) 451... 452 453--- 454name: test_truncstore_global_s128_to_s8 455body: | 456 bb.0: 457 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 458 459 ; SI-LABEL: name: test_truncstore_global_s128_to_s8 460 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 461 ; SI-NEXT: {{ $}} 462 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 463 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 464 ; 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_s8 468 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 469 ; VI-NEXT: {{ $}} 470 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 471 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 472 ; 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_vgpr1 475 %1:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 476 G_STORE %1, %0 :: (store (s128), addrspace 1) 477... 478 479--- 480name: test_store_global_i1 481body: | 482 bb.0: 483 liveins: $vgpr0_vgpr1, $vgpr2 484 485 ; SI-LABEL: name: test_store_global_i1 486 ; SI: liveins: $vgpr0_vgpr1, $vgpr2 487 ; SI-NEXT: {{ $}} 488 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 489 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 490 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 491 ; 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_i1 496 ; VI: liveins: $vgpr0_vgpr1, $vgpr2 497 ; VI-NEXT: {{ $}} 498 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 499 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 500 ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 501 ; 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_vgpr1 505 %1:_(s32) = COPY $vgpr2 506 %2:_(s1) = G_TRUNC %1 507 G_STORE %2, %0 :: (store (s1), addrspace 1) 508... 509 510--- 511name: test_store_global_i8 512body: | 513 bb.0: 514 liveins: $vgpr0_vgpr1, $vgpr2 515 516 ; SI-LABEL: name: test_store_global_i8 517 ; SI: liveins: $vgpr0_vgpr1, $vgpr2 518 ; SI-NEXT: {{ $}} 519 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 520 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 521 ; SI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s8), addrspace 1) 522 ; 523 ; VI-LABEL: name: test_store_global_i8 524 ; VI: liveins: $vgpr0_vgpr1, $vgpr2 525 ; VI-NEXT: {{ $}} 526 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 527 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 528 ; VI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s8), addrspace 1) 529 %0:_(p1) = COPY $vgpr0_vgpr1 530 %1:_(s32) = COPY $vgpr2 531 %2:_(s8) = G_TRUNC %1 532 G_STORE %2, %0 :: (store (s8), addrspace 1) 533... 534 535--- 536name: test_store_global_i16 537body: | 538 bb.0: 539 liveins: $vgpr0_vgpr1, $vgpr2 540 541 ; SI-LABEL: name: test_store_global_i16 542 ; SI: liveins: $vgpr0_vgpr1, $vgpr2 543 ; SI-NEXT: {{ $}} 544 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 545 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 546 ; SI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s16), addrspace 1) 547 ; 548 ; VI-LABEL: name: test_store_global_i16 549 ; VI: liveins: $vgpr0_vgpr1, $vgpr2 550 ; VI-NEXT: {{ $}} 551 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 552 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 553 ; VI-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store (s16), addrspace 1) 554 %0:_(p1) = COPY $vgpr0_vgpr1 555 %1:_(s32) = COPY $vgpr2 556 %2:_(s16) = G_TRUNC %1 557 G_STORE %2, %0 :: (store (s16), addrspace 1) 558... 559 560--- 561name: test_store_global_96 562body: | 563 bb.0: 564 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4 565 566 ; SI-LABEL: name: test_store_global_96 567 ; SI: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4 568 ; SI-NEXT: {{ $}} 569 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2 570 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr3_vgpr4 571 ; 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 8 576 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = 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_96 580 ; VI: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4 581 ; VI-NEXT: {{ $}} 582 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2 583 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr3_vgpr4 584 ; 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_vgpr2 587 %1:_(p1) = COPY $vgpr3_vgpr4 588 589 G_STORE %0, %1 :: (store (s96), addrspace 1, align 16) 590... 591 592--- 593name: test_store_global_i128 594body: | 595 bb.0: 596 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 597 598 ; SI-LABEL: name: test_store_global_i128 599 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 600 ; SI-NEXT: {{ $}} 601 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 602 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 603 ; 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_i128 607 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 608 ; VI-NEXT: {{ $}} 609 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 610 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 611 ; 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_vgpr1 614 %1:_(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 615 G_STORE %1, %0 :: (store (s128), addrspace 1) 616... 617 618--- 619name: test_store_global_v2s64 620body: | 621 bb.0: 622 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 623 624 ; SI-LABEL: name: test_store_global_v2s64 625 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 626 ; SI-NEXT: {{ $}} 627 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 628 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 629 ; SI-NEXT: G_STORE [[COPY1]](<2 x s64>), [[COPY]](p1) :: (store (<2 x s64>), addrspace 1) 630 ; 631 ; VI-LABEL: name: test_store_global_v2s64 632 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 633 ; VI-NEXT: {{ $}} 634 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 635 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 636 ; VI-NEXT: G_STORE [[COPY1]](<2 x s64>), [[COPY]](p1) :: (store (<2 x s64>), addrspace 1) 637 %0:_(p1) = COPY $vgpr0_vgpr1 638 %1:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 639 G_STORE %1, %0 :: (store (<2 x s64>), addrspace 1) 640 641... 642 643--- 644name: test_store_global_v2s8_align1 645body: | 646 bb.0: 647 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 648 649 ; SI-LABEL: name: test_store_global_v2s8_align1 650 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 651 ; SI-NEXT: {{ $}} 652 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 653 ; SI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 654 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<2 x s32>) 655 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 656 ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 657 ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 658 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 659 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 660 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 661 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]] 662 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY1]](s32) 663 ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32) 664 ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]] 665 ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 666 ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 667 ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C3]] 668 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C1]](s32) 669 ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 670 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 671 ; SI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s8), addrspace 1) 672 ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 1, addrspace 1) 673 ; 674 ; VI-LABEL: name: test_store_global_v2s8_align1 675 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 676 ; VI-NEXT: {{ $}} 677 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 678 ; VI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 679 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<2 x s32>) 680 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 681 ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 682 ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 683 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 684 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 685 ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 686 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16) 687 ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]] 688 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 689 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[OR]], [[C1]](s16) 690 ; VI-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 691 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C2]](s64) 692 ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s8), addrspace 1) 693 ; VI-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR]](s16) 694 ; VI-NEXT: G_STORE [[ANYEXT1]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 1, addrspace 1) 695 %0:_(p1) = COPY $vgpr0_vgpr1 696 %1:_(<2 x s8>) = G_IMPLICIT_DEF 697 G_STORE %1, %0 :: (store (<2 x s8>), addrspace 1, align 1) 698 699... 700 701--- 702name: test_store_global_v2s8_align2 703body: | 704 bb.0: 705 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 706 707 ; SI-LABEL: name: test_store_global_v2s8_align2 708 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 709 ; SI-NEXT: {{ $}} 710 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 711 ; SI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 712 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<2 x s32>) 713 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 714 ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 715 ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 716 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 717 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 718 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]] 719 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 720 ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32) 721 ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]] 722 ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 723 ; SI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s16), addrspace 1) 724 ; 725 ; VI-LABEL: name: test_store_global_v2s8_align2 726 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 727 ; VI-NEXT: {{ $}} 728 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 729 ; VI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 730 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<2 x s32>) 731 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 732 ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 733 ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 734 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 735 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 736 ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 737 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16) 738 ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]] 739 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 740 ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s16), addrspace 1) 741 %0:_(p1) = COPY $vgpr0_vgpr1 742 %1:_(<2 x s8>) = G_IMPLICIT_DEF 743 G_STORE %1, %0 :: (store (<2 x s8>), addrspace 1, align 2) 744 745... 746 747--- 748name: test_store_global_v2s8_align4 749body: | 750 bb.0: 751 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 752 753 ; SI-LABEL: name: test_store_global_v2s8_align4 754 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 755 ; SI-NEXT: {{ $}} 756 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 757 ; SI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 758 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<2 x s32>) 759 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 760 ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 761 ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 762 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 763 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 764 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]] 765 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 766 ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32) 767 ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]] 768 ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 769 ; SI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s16), align 4, addrspace 1) 770 ; 771 ; VI-LABEL: name: test_store_global_v2s8_align4 772 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 773 ; VI-NEXT: {{ $}} 774 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 775 ; VI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF 776 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<2 x s32>) 777 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 778 ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 779 ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 780 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 781 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 782 ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 783 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16) 784 ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]] 785 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 786 ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[COPY]](p1) :: (store (s16), align 4, addrspace 1) 787 %0:_(p1) = COPY $vgpr0_vgpr1 788 %1:_(<2 x s8>) = G_IMPLICIT_DEF 789 G_STORE %1, %0 :: (store (<2 x s8>), addrspace 1, align 4) 790 791... 792 793--- 794name: test_store_global_v3s8_align1 795body: | 796 bb.0: 797 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 798 799 ; SI-LABEL: name: test_store_global_v3s8_align1 800 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 801 ; SI-NEXT: {{ $}} 802 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 803 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 804 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 805 ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 806 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 807 ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 808 ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 809 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 810 ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 811 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 812 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]] 813 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY2]](s32) 814 ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32) 815 ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]] 816 ; SI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32) 817 ; SI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]] 818 ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 819 ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]] 820 ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[COPY3]](s32) 821 ; SI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32) 822 ; SI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]] 823 ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) 824 ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) 825 ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 826 ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C3]](s32) 827 ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]] 828 ; SI-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 829 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY4]], [[C3]](s32) 830 ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 831 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 832 ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 833 ; SI-NEXT: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C5]] 834 ; SI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND4]], [[C1]](s32) 835 ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 836 ; SI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C6]](s64) 837 ; SI-NEXT: G_STORE [[COPY4]](s32), [[COPY]](p1) :: (store (s8), addrspace 1) 838 ; SI-NEXT: G_STORE [[LSHR1]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1) 839 ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1) 840 ; 841 ; VI-LABEL: name: test_store_global_v3s8_align1 842 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 843 ; VI-NEXT: {{ $}} 844 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 845 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 846 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 847 ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 848 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 849 ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 850 ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 851 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 852 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 853 ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 854 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16) 855 ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]] 856 ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32) 857 ; VI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]] 858 ; VI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32) 859 ; VI-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC3]], [[C]] 860 ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C1]](s16) 861 ; VI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[SHL1]] 862 ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) 863 ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) 864 ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 865 ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C2]](s32) 866 ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]] 867 ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 868 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32) 869 ; VI-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 870 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C3]](s64) 871 ; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s16) = G_LSHR [[OR]], [[C1]](s16) 872 ; VI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 873 ; VI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 874 ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s8), addrspace 1) 875 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR1]](s16) 876 ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1) 877 ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1) 878 %0:_(p1) = COPY $vgpr0_vgpr1 879 %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 880 %2:_(<3 x s8>) = G_TRUNC %1 881 G_STORE %2, %0 :: (store (<3 x s8>), addrspace 1, align 1) 882 883... 884 885--- 886name: test_store_global_v3s8_align2 887body: | 888 bb.0: 889 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 890 891 ; SI-LABEL: name: test_store_global_v3s8_align2 892 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 893 ; SI-NEXT: {{ $}} 894 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 895 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 896 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 897 ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 898 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 899 ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 900 ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 901 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 902 ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 903 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 904 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]] 905 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY2]](s32) 906 ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32) 907 ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]] 908 ; SI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32) 909 ; SI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]] 910 ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]] 911 ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C1]](s32) 912 ; SI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32) 913 ; SI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]] 914 ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) 915 ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) 916 ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 917 ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C3]](s32) 918 ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]] 919 ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 920 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY3]], [[C3]](s32) 921 ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 922 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 923 ; SI-NEXT: G_STORE [[COPY3]](s32), [[COPY]](p1) :: (store (s16), addrspace 1) 924 ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, align 2, addrspace 1) 925 ; 926 ; VI-LABEL: name: test_store_global_v3s8_align2 927 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 928 ; VI-NEXT: {{ $}} 929 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 930 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 931 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 932 ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 933 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 934 ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 935 ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 936 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 937 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 938 ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 939 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16) 940 ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]] 941 ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32) 942 ; VI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]] 943 ; VI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32) 944 ; VI-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC3]], [[C]] 945 ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C1]](s16) 946 ; VI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[SHL1]] 947 ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) 948 ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) 949 ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 950 ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C2]](s32) 951 ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]] 952 ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 953 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32) 954 ; VI-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 955 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C3]](s64) 956 ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), addrspace 1) 957 ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, align 2, addrspace 1) 958 %0:_(p1) = COPY $vgpr0_vgpr1 959 %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 960 %2:_(<3 x s8>) = G_TRUNC %1 961 G_STORE %2, %0 :: (store (<3 x s8>), addrspace 1, align 2) 962 963... 964 965--- 966name: test_store_global_v3s8_align4 967body: | 968 bb.0: 969 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 970 971 ; SI-LABEL: name: test_store_global_v3s8_align4 972 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 973 ; SI-NEXT: {{ $}} 974 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 975 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 976 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 977 ; SI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 978 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 979 ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 980 ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 981 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 982 ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 983 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 984 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C2]] 985 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY2]](s32) 986 ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32) 987 ; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]] 988 ; SI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32) 989 ; SI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]] 990 ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[DEF]], [[C2]] 991 ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C1]](s32) 992 ; SI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32) 993 ; SI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]] 994 ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) 995 ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) 996 ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 997 ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C3]](s32) 998 ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]] 999 ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 1000 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY3]], [[C3]](s32) 1001 ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 1002 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 1003 ; SI-NEXT: G_STORE [[COPY3]](s32), [[COPY]](p1) :: (store (s16), align 4, addrspace 1) 1004 ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, align 2, addrspace 1) 1005 ; 1006 ; VI-LABEL: name: test_store_global_v3s8_align4 1007 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 1008 ; VI-NEXT: {{ $}} 1009 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1010 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 1011 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 1012 ; VI-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 1013 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 1014 ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 1015 ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]] 1016 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 1017 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 1018 ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 1019 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16) 1020 ; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]] 1021 ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32) 1022 ; VI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C]] 1023 ; VI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32) 1024 ; VI-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC3]], [[C]] 1025 ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C1]](s16) 1026 ; VI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[SHL1]] 1027 ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) 1028 ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) 1029 ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1030 ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C2]](s32) 1031 ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]] 1032 ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 1033 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32) 1034 ; VI-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 1035 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C3]](s64) 1036 ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), align 4, addrspace 1) 1037 ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, align 2, addrspace 1) 1038 %0:_(p1) = COPY $vgpr0_vgpr1 1039 %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 1040 %2:_(<3 x s8>) = G_TRUNC %1 1041 G_STORE %2, %0 :: (store (<3 x s8>), addrspace 1, align 4) 1042 1043... 1044 1045--- 1046name: test_store_global_v4s8_align1 1047body: | 1048 bb.0: 1049 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1050 1051 ; SI-LABEL: name: test_store_global_v4s8_align1 1052 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1053 ; SI-NEXT: {{ $}} 1054 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1055 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1056 ; 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>) 1057 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 1058 ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]] 1059 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]] 1060 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1061 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 1062 ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] 1063 ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]] 1064 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1065 ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32) 1066 ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]] 1067 ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]] 1068 ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1069 ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32) 1070 ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]] 1071 ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 1072 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32) 1073 ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 1074 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 1075 ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 1076 ; SI-NEXT: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C5]] 1077 ; SI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND4]], [[C1]](s32) 1078 ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 1079 ; SI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C6]](s64) 1080 ; SI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s8), addrspace 1) 1081 ; SI-NEXT: G_STORE [[LSHR1]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1) 1082 ; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32) 1083 ; SI-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[COPY3]](s32) 1084 ; SI-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C6]](s64) 1085 ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1) 1086 ; SI-NEXT: G_STORE [[LSHR2]](s32), [[PTR_ADD2]](p1) :: (store (s8) into unknown-address + 3, addrspace 1) 1087 ; 1088 ; VI-LABEL: name: test_store_global_v4s8_align1 1089 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1090 ; VI-NEXT: {{ $}} 1091 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1092 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1093 ; 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>) 1094 ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 1095 ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]] 1096 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]] 1097 ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1098 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 1099 ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] 1100 ; VI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]] 1101 ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1102 ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32) 1103 ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]] 1104 ; VI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]] 1105 ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1106 ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32) 1107 ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]] 1108 ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 1109 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32) 1110 ; VI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 1111 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 1112 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 1113 ; VI-NEXT: [[C5:%[0-9]+]]:_(s16) = G_CONSTANT i16 255 1114 ; VI-NEXT: [[AND4:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C5]] 1115 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 1116 ; VI-NEXT: [[AND5:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C5]] 1117 ; VI-NEXT: [[C6:%[0-9]+]]:_(s16) = G_CONSTANT i16 8 1118 ; VI-NEXT: [[SHL3:%[0-9]+]]:_(s16) = G_SHL [[AND5]], [[C6]](s16) 1119 ; VI-NEXT: [[OR3:%[0-9]+]]:_(s16) = G_OR [[AND4]], [[SHL3]] 1120 ; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s16) = G_LSHR [[OR3]], [[C6]](s16) 1121 ; VI-NEXT: [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 1122 ; VI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C7]](s64) 1123 ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s8), addrspace 1) 1124 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR1]](s16) 1125 ; VI-NEXT: G_STORE [[ANYEXT]](s32), [[PTR_ADD1]](p1) :: (store (s8) into unknown-address + 1, addrspace 1) 1126 ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 1127 ; VI-NEXT: [[LSHR2:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC2]], [[C6]](s16) 1128 ; VI-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C7]](s64) 1129 ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s8) into unknown-address + 2, addrspace 1) 1130 ; VI-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR2]](s16) 1131 ; VI-NEXT: G_STORE [[ANYEXT1]](s32), [[PTR_ADD2]](p1) :: (store (s8) into unknown-address + 3, addrspace 1) 1132 %0:_(p1) = COPY $vgpr0_vgpr1 1133 %1:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1134 %2:_(<4 x s8>) = G_TRUNC %1 1135 G_STORE %2, %0 :: (store (<4 x s8>), addrspace 1, align 1) 1136 1137... 1138 1139--- 1140name: test_store_global_v4s8_align2 1141body: | 1142 bb.0: 1143 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1144 1145 ; SI-LABEL: name: test_store_global_v4s8_align2 1146 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1147 ; SI-NEXT: {{ $}} 1148 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1149 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1150 ; 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>) 1151 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 1152 ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]] 1153 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]] 1154 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1155 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 1156 ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] 1157 ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]] 1158 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1159 ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32) 1160 ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]] 1161 ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]] 1162 ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1163 ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32) 1164 ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]] 1165 ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 1166 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32) 1167 ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 1168 ; SI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 1169 ; SI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), addrspace 1) 1170 ; SI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s16) into unknown-address + 2, addrspace 1) 1171 ; 1172 ; VI-LABEL: name: test_store_global_v4s8_align2 1173 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1174 ; VI-NEXT: {{ $}} 1175 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1176 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1177 ; 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>) 1178 ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 1179 ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]] 1180 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]] 1181 ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1182 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 1183 ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] 1184 ; VI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]] 1185 ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1186 ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32) 1187 ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]] 1188 ; VI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]] 1189 ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1190 ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32) 1191 ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]] 1192 ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR2]](s32) 1193 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s32) 1194 ; VI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 1195 ; VI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C4]](s64) 1196 ; VI-NEXT: G_STORE [[COPY2]](s32), [[COPY]](p1) :: (store (s16), addrspace 1) 1197 ; VI-NEXT: G_STORE [[LSHR]](s32), [[PTR_ADD]](p1) :: (store (s16) into unknown-address + 2, addrspace 1) 1198 %0:_(p1) = COPY $vgpr0_vgpr1 1199 %1:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1200 %2:_(<4 x s8>) = G_TRUNC %1 1201 G_STORE %2, %0 :: (store (<4 x s8>), addrspace 1, align 2) 1202 1203... 1204 1205--- 1206name: test_store_global_v4s8_align4 1207body: | 1208 bb.0: 1209 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1210 1211 ; SI-LABEL: name: test_store_global_v4s8_align4 1212 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1213 ; SI-NEXT: {{ $}} 1214 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1215 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1216 ; 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>) 1217 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 1218 ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]] 1219 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]] 1220 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1221 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 1222 ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] 1223 ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]] 1224 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1225 ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32) 1226 ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]] 1227 ; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]] 1228 ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1229 ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32) 1230 ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]] 1231 ; SI-NEXT: G_STORE [[OR2]](s32), [[COPY]](p1) :: (store (s32), addrspace 1) 1232 ; 1233 ; VI-LABEL: name: test_store_global_v4s8_align4 1234 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1235 ; VI-NEXT: {{ $}} 1236 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1237 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1238 ; 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>) 1239 ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 1240 ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV]], [[C]] 1241 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C]] 1242 ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1243 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 1244 ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] 1245 ; VI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV2]], [[C]] 1246 ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1247 ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C2]](s32) 1248 ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]] 1249 ; VI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C]] 1250 ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1251 ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C3]](s32) 1252 ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]] 1253 ; VI-NEXT: G_STORE [[OR2]](s32), [[COPY]](p1) :: (store (s32), addrspace 1) 1254 %0:_(p1) = COPY $vgpr0_vgpr1 1255 %1:_(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 1256 %2:_(<4 x s8>) = G_TRUNC %1 1257 G_STORE %2, %0 :: (store (<4 x s8>), addrspace 1, align 4) 1258 1259... 1260 1261--- 1262name: test_truncstore_global_v2s8_to_1_align1 1263body: | 1264 bb.0: 1265 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1266 1267 ; SI-LABEL: name: test_truncstore_global_v2s8_to_1_align1 1268 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1269 ; SI-NEXT: {{ $}} 1270 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1271 ; SI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s8>) = G_IMPLICIT_DEF 1272 ; SI-NEXT: G_STORE [[DEF]](<2 x s8>), [[COPY]](p1) :: (store (<2 x s4>), addrspace 1) 1273 ; 1274 ; VI-LABEL: name: test_truncstore_global_v2s8_to_1_align1 1275 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 1276 ; VI-NEXT: {{ $}} 1277 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1278 ; VI-NEXT: [[DEF:%[0-9]+]]:_(<2 x s8>) = G_IMPLICIT_DEF 1279 ; VI-NEXT: G_STORE [[DEF]](<2 x s8>), [[COPY]](p1) :: (store (<2 x s4>), addrspace 1) 1280 %0:_(p1) = COPY $vgpr0_vgpr1 1281 %1:_(<2 x s8>) = G_IMPLICIT_DEF 1282 G_STORE %1, %0 :: (store (<2 x s4>), addrspace 1, align 1) 1283 1284... 1285 1286--- 1287name: test_truncstore_global_v3s8_to_1_align1 1288body: | 1289 bb.0: 1290 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 1291 1292 ; SI-LABEL: name: test_truncstore_global_v3s8_to_1_align1 1293 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 1294 ; SI-NEXT: {{ $}} 1295 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1296 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 1297 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>) 1298 ; SI-NEXT: G_STORE [[TRUNC]](<3 x s8>), [[COPY]](p1) :: (store (<3 x s2>), addrspace 1) 1299 ; 1300 ; VI-LABEL: name: test_truncstore_global_v3s8_to_1_align1 1301 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 1302 ; VI-NEXT: {{ $}} 1303 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1304 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 1305 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>) 1306 ; VI-NEXT: G_STORE [[TRUNC]](<3 x s8>), [[COPY]](p1) :: (store (<3 x s2>), addrspace 1) 1307 %0:_(p1) = COPY $vgpr0_vgpr1 1308 %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 1309 %2:_(<3 x s8>) = G_TRUNC %1 1310 G_STORE %2, %0 :: (store (<3 x s2>), addrspace 1, align 1) 1311 1312... 1313 1314--- 1315name: test_truncstore_global_v3s8_to_2_align2 1316body: | 1317 bb.0: 1318 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 1319 1320 ; SI-LABEL: name: test_truncstore_global_v3s8_to_2_align2 1321 ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 1322 ; SI-NEXT: {{ $}} 1323 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1324 ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 1325 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>) 1326 ; SI-NEXT: G_STORE [[TRUNC]](<3 x s8>), [[COPY]](p1) :: (store (<3 x s4>), addrspace 1) 1327 ; 1328 ; VI-LABEL: name: test_truncstore_global_v3s8_to_2_align2 1329 ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 1330 ; VI-NEXT: {{ $}} 1331 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 1332 ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 1333 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>) 1334 ; VI-NEXT: G_STORE [[TRUNC]](<3 x s8>), [[COPY]](p1) :: (store (<3 x s4>), addrspace 1) 1335 %0:_(p1) = COPY $vgpr0_vgpr1 1336 %1:_(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 1337 %2:_(<3 x s8>) = G_TRUNC %1 1338 G_STORE %2, %0 :: (store (<3 x s4>), addrspace 1, align 2) 1339 1340... 1341