1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s
3 # RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX8 %s
4 # RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
5 # RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s
6 # RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX11 %s
10 name: store_flat_s32_to_4
12 tracksRegLiveness: true
17 liveins: $vgpr0_vgpr1, $vgpr2
19 ; GFX7-LABEL: name: store_flat_s32_to_4
20 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
22 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
23 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
24 ; GFX7-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))
26 ; GFX8-LABEL: name: store_flat_s32_to_4
27 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
29 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
30 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
31 ; GFX8-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))
33 ; GFX9-LABEL: name: store_flat_s32_to_4
34 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
36 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
37 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
38 ; GFX9-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))
40 ; GFX10-LABEL: name: store_flat_s32_to_4
41 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
43 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
44 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
45 ; GFX10-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))
47 ; GFX11-LABEL: name: store_flat_s32_to_4
48 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
50 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
51 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
52 ; GFX11-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))
53 %0:vgpr(p1) = COPY $vgpr0_vgpr1
54 %1:vgpr(s32) = COPY $vgpr2
55 G_STORE %1, %0 :: (store (s32), align 4, addrspace 0)
60 name: store_flat_s32_to_2
62 tracksRegLiveness: true
67 liveins: $vgpr0_vgpr1, $vgpr2
69 ; GFX7-LABEL: name: store_flat_s32_to_2
70 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
72 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
73 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
74 ; GFX7-NEXT: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16))
76 ; GFX8-LABEL: name: store_flat_s32_to_2
77 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
79 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
80 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
81 ; GFX8-NEXT: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16))
83 ; GFX9-LABEL: name: store_flat_s32_to_2
84 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
86 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
87 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
88 ; GFX9-NEXT: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16))
90 ; GFX10-LABEL: name: store_flat_s32_to_2
91 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
93 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
94 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
95 ; GFX10-NEXT: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16))
97 ; GFX11-LABEL: name: store_flat_s32_to_2
98 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
100 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
101 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
102 ; GFX11-NEXT: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s16))
103 %0:vgpr(p1) = COPY $vgpr0_vgpr1
104 %1:vgpr(s32) = COPY $vgpr2
105 G_STORE %1, %0 :: (store (s16), align 2, addrspace 0)
110 name: store_flat_s32_to_1
112 tracksRegLiveness: true
113 regBankSelected: true
117 liveins: $vgpr0_vgpr1, $vgpr2
119 ; GFX7-LABEL: name: store_flat_s32_to_1
120 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
122 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
123 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
124 ; GFX7-NEXT: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8))
126 ; GFX8-LABEL: name: store_flat_s32_to_1
127 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
129 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
130 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
131 ; GFX8-NEXT: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8))
133 ; GFX9-LABEL: name: store_flat_s32_to_1
134 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
136 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
137 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
138 ; GFX9-NEXT: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8))
140 ; GFX10-LABEL: name: store_flat_s32_to_1
141 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
143 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
144 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
145 ; GFX10-NEXT: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8))
147 ; GFX11-LABEL: name: store_flat_s32_to_1
148 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
150 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
151 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
152 ; GFX11-NEXT: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s8))
153 %0:vgpr(p1) = COPY $vgpr0_vgpr1
154 %1:vgpr(s32) = COPY $vgpr2
155 G_STORE %1, %0 :: (store (s8), align 1, addrspace 0)
163 tracksRegLiveness: true
164 regBankSelected: true
168 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
170 ; GFX7-LABEL: name: store_flat_s64
171 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
173 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
174 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
175 ; GFX7-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s64))
177 ; GFX8-LABEL: name: store_flat_s64
178 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
180 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
181 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
182 ; GFX8-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s64))
184 ; GFX9-LABEL: name: store_flat_s64
185 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
187 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
188 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
189 ; GFX9-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s64))
191 ; GFX10-LABEL: name: store_flat_s64
192 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
194 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
195 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
196 ; GFX10-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s64))
198 ; GFX11-LABEL: name: store_flat_s64
199 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
201 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
202 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
203 ; GFX11-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s64))
204 %0:vgpr(p1) = COPY $vgpr0_vgpr1
205 %1:vgpr(s64) = COPY $vgpr2_vgpr3
206 G_STORE %1, %0 :: (store (s64), align 8, addrspace 0)
213 tracksRegLiveness: true
214 regBankSelected: true
218 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
220 ; GFX7-LABEL: name: store_flat_s96
221 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
223 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
224 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
225 ; GFX7-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16)
227 ; GFX8-LABEL: name: store_flat_s96
228 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
230 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
231 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
232 ; GFX8-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16)
234 ; GFX9-LABEL: name: store_flat_s96
235 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
237 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
238 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
239 ; GFX9-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16)
241 ; GFX10-LABEL: name: store_flat_s96
242 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
244 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
245 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
246 ; GFX10-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16)
248 ; GFX11-LABEL: name: store_flat_s96
249 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
251 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
252 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
253 ; GFX11-NEXT: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store (s96), align 16)
254 %0:vgpr(p1) = COPY $vgpr0_vgpr1
255 %1:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
256 G_STORE %1, %0 :: (store (s96), align 16, addrspace 0)
261 name: store_flat_s128
263 tracksRegLiveness: true
264 regBankSelected: true
268 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
270 ; GFX7-LABEL: name: store_flat_s128
271 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
273 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
274 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
275 ; GFX7-NEXT: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store (s128))
277 ; GFX8-LABEL: name: store_flat_s128
278 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
280 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
281 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
282 ; GFX8-NEXT: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store (s128))
284 ; GFX9-LABEL: name: store_flat_s128
285 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
287 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
288 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
289 ; GFX9-NEXT: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store (s128))
291 ; GFX10-LABEL: name: store_flat_s128
292 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
294 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
295 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
296 ; GFX10-NEXT: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store (s128))
298 ; GFX11-LABEL: name: store_flat_s128
299 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
301 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
302 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
303 ; GFX11-NEXT: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store (s128))
304 %0:vgpr(p1) = COPY $vgpr0_vgpr1
305 %1:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
306 G_STORE %1, %0 :: (store (s128), align 16, addrspace 0)
312 name: store_flat_v2s32
314 tracksRegLiveness: true
315 regBankSelected: true
319 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
321 ; GFX7-LABEL: name: store_flat_v2s32
322 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
324 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
325 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
326 ; GFX7-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s32>))
328 ; GFX8-LABEL: name: store_flat_v2s32
329 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
331 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
332 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
333 ; GFX8-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s32>))
335 ; GFX9-LABEL: name: store_flat_v2s32
336 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
338 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
339 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
340 ; GFX9-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s32>))
342 ; GFX10-LABEL: name: store_flat_v2s32
343 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
345 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
346 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
347 ; GFX10-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s32>))
349 ; GFX11-LABEL: name: store_flat_v2s32
350 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
352 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
353 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
354 ; GFX11-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s32>))
355 %0:vgpr(p1) = COPY $vgpr0_vgpr1
356 %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
357 G_STORE %1, %0 :: (store (<2 x s32>), align 8, addrspace 0)
362 name: store_flat_v3s32
364 tracksRegLiveness: true
365 regBankSelected: true
369 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
371 ; GFX7-LABEL: name: store_flat_v3s32
372 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
374 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
375 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
376 ; GFX7-NEXT: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<3 x s32>), align 16)
378 ; GFX8-LABEL: name: store_flat_v3s32
379 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
381 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
382 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
383 ; GFX8-NEXT: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<3 x s32>), align 16)
385 ; GFX9-LABEL: name: store_flat_v3s32
386 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
388 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
389 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
390 ; GFX9-NEXT: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<3 x s32>), align 16)
392 ; GFX10-LABEL: name: store_flat_v3s32
393 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
395 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
396 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
397 ; GFX10-NEXT: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<3 x s32>), align 16)
399 ; GFX11-LABEL: name: store_flat_v3s32
400 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
402 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
403 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
404 ; GFX11-NEXT: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<3 x s32>), align 16)
405 %0:vgpr(p1) = COPY $vgpr0_vgpr1
406 %1:vgpr(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4
407 G_STORE %1, %0 :: (store (<3 x s32>), align 16, addrspace 0)
412 name: store_flat_v4s32
414 tracksRegLiveness: true
415 regBankSelected: true
419 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
421 ; GFX7-LABEL: name: store_flat_v4s32
422 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
424 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
425 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
426 ; GFX7-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s32>))
428 ; GFX8-LABEL: name: store_flat_v4s32
429 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
431 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
432 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
433 ; GFX8-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s32>))
435 ; GFX9-LABEL: name: store_flat_v4s32
436 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
438 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
439 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
440 ; GFX9-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s32>))
442 ; GFX10-LABEL: name: store_flat_v4s32
443 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
445 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
446 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
447 ; GFX10-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s32>))
449 ; GFX11-LABEL: name: store_flat_v4s32
450 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
452 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
453 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
454 ; GFX11-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s32>))
455 %0:vgpr(p1) = COPY $vgpr0_vgpr1
456 %1:vgpr(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
457 G_STORE %1, %0 :: (store (<4 x s32>), align 16, addrspace 0)
463 name: store_flat_v2s16
465 tracksRegLiveness: true
466 regBankSelected: true
470 liveins: $vgpr0_vgpr1, $vgpr2
472 ; GFX7-LABEL: name: store_flat_v2s16
473 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
475 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
476 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
477 ; GFX7-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>))
479 ; GFX8-LABEL: name: store_flat_v2s16
480 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
482 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
483 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
484 ; GFX8-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>))
486 ; GFX9-LABEL: name: store_flat_v2s16
487 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
489 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
490 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
491 ; GFX9-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>))
493 ; GFX10-LABEL: name: store_flat_v2s16
494 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
496 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
497 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
498 ; GFX10-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>))
500 ; GFX11-LABEL: name: store_flat_v2s16
501 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
503 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
504 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
505 ; GFX11-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s16>))
506 %0:vgpr(p1) = COPY $vgpr0_vgpr1
507 %1:vgpr(<2 x s16>) = COPY $vgpr2
508 G_STORE %1, %0 :: (store (<2 x s16>), align 4, addrspace 0)
514 name: store_flat_v4s16
516 tracksRegLiveness: true
517 regBankSelected: true
521 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
523 ; GFX7-LABEL: name: store_flat_v4s16
524 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
526 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
527 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
528 ; GFX7-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s16>))
530 ; GFX8-LABEL: name: store_flat_v4s16
531 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
533 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
534 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
535 ; GFX8-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s16>))
537 ; GFX9-LABEL: name: store_flat_v4s16
538 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
540 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
541 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
542 ; GFX9-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s16>))
544 ; GFX10-LABEL: name: store_flat_v4s16
545 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
547 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
548 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
549 ; GFX10-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s16>))
551 ; GFX11-LABEL: name: store_flat_v4s16
552 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
554 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
555 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
556 ; GFX11-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<4 x s16>))
557 %0:vgpr(p1) = COPY $vgpr0_vgpr1
558 %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
559 G_STORE %1, %0 :: (store (<4 x s16>), align 8, addrspace 0)
565 name: store_flat_v6s16
567 tracksRegLiveness: true
568 regBankSelected: true
572 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
574 ; GFX7-LABEL: name: store_flat_v6s16
575 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
577 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
578 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
579 ; GFX7-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16)
581 ; GFX8-LABEL: name: store_flat_v6s16
582 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
584 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
585 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
586 ; GFX8-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16)
588 ; GFX9-LABEL: name: store_flat_v6s16
589 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
591 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
592 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
593 ; GFX9-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16)
595 ; GFX10-LABEL: name: store_flat_v6s16
596 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
598 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
599 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
600 ; GFX10-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16)
602 ; GFX11-LABEL: name: store_flat_v6s16
603 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
605 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
606 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
607 ; GFX11-NEXT: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store (<6 x s16>), align 16)
608 %0:vgpr(p1) = COPY $vgpr0_vgpr1
609 %1:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
610 G_STORE %1, %0 :: (store (<6 x s16>), align 16, addrspace 0)
615 name: store_flat_v8s16
617 tracksRegLiveness: true
618 regBankSelected: true
622 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
624 ; GFX7-LABEL: name: store_flat_v8s16
625 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
627 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
628 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
629 ; GFX7-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<8 x s16>))
631 ; GFX8-LABEL: name: store_flat_v8s16
632 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
634 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
635 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
636 ; GFX8-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<8 x s16>))
638 ; GFX9-LABEL: name: store_flat_v8s16
639 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
641 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
642 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
643 ; GFX9-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<8 x s16>))
645 ; GFX10-LABEL: name: store_flat_v8s16
646 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
648 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
649 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
650 ; GFX10-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<8 x s16>))
652 ; GFX11-LABEL: name: store_flat_v8s16
653 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
655 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
656 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
657 ; GFX11-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<8 x s16>))
658 %0:vgpr(p1) = COPY $vgpr0_vgpr1
659 %1:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
660 G_STORE %1, %0 :: (store (<8 x s16>), align 16, addrspace 0)
666 name: store_flat_v2s64
668 tracksRegLiveness: true
669 regBankSelected: true
673 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
675 ; GFX7-LABEL: name: store_flat_v2s64
676 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
678 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
679 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
680 ; GFX7-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s64>))
682 ; GFX8-LABEL: name: store_flat_v2s64
683 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
685 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
686 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
687 ; GFX8-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s64>))
689 ; GFX9-LABEL: name: store_flat_v2s64
690 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
692 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
693 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
694 ; GFX9-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s64>))
696 ; GFX10-LABEL: name: store_flat_v2s64
697 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
699 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
700 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
701 ; GFX10-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s64>))
703 ; GFX11-LABEL: name: store_flat_v2s64
704 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
706 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
707 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
708 ; GFX11-NEXT: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (<2 x s64>))
709 %0:vgpr(p1) = COPY $vgpr0_vgpr1
710 %1:vgpr(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
711 G_STORE %1, %0 :: (store (<2 x s64>), align 16, addrspace 0)
719 tracksRegLiveness: true
720 regBankSelected: true
724 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
726 ; GFX7-LABEL: name: store_flat_p1
727 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
729 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
730 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
731 ; GFX7-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p1))
733 ; GFX8-LABEL: name: store_flat_p1
734 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
736 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
737 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
738 ; GFX8-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p1))
740 ; GFX9-LABEL: name: store_flat_p1
741 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
743 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
744 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
745 ; GFX9-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p1))
747 ; GFX10-LABEL: name: store_flat_p1
748 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
750 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
751 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
752 ; GFX10-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p1))
754 ; GFX11-LABEL: name: store_flat_p1
755 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
757 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
758 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
759 ; GFX11-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p1))
760 %0:vgpr(p1) = COPY $vgpr0_vgpr1
761 %1:vgpr(p1) = COPY $vgpr2_vgpr3
762 G_STORE %1, %0 :: (store (p1), align 8, addrspace 0)
768 name: store_flat_v2p1
770 tracksRegLiveness: true
771 regBankSelected: true
775 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
777 ; GFX7-LABEL: name: store_flat_v2p1
778 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
780 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
781 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
782 ; GFX7-NEXT: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store (<2 x p1>))
784 ; GFX8-LABEL: name: store_flat_v2p1
785 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
787 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
788 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
789 ; GFX8-NEXT: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store (<2 x p1>))
791 ; GFX9-LABEL: name: store_flat_v2p1
792 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
794 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
795 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
796 ; GFX9-NEXT: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store (<2 x p1>))
798 ; GFX10-LABEL: name: store_flat_v2p1
799 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
801 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
802 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
803 ; GFX10-NEXT: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store (<2 x p1>))
805 ; GFX11-LABEL: name: store_flat_v2p1
806 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
808 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
809 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
810 ; GFX11-NEXT: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store (<2 x p1>))
811 %0:vgpr(p1) = COPY $vgpr0_vgpr1
812 %1:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
813 G_STORE %1, %0 :: (store (<2 x p1>), align 16, addrspace 0)
821 tracksRegLiveness: true
822 regBankSelected: true
826 liveins: $vgpr0_vgpr1, $vgpr2
828 ; GFX7-LABEL: name: store_flat_p3
829 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
831 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
832 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
833 ; GFX7-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3))
835 ; GFX8-LABEL: name: store_flat_p3
836 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
838 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
839 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
840 ; GFX8-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3))
842 ; GFX9-LABEL: name: store_flat_p3
843 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
845 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
846 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
847 ; GFX9-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3))
849 ; GFX10-LABEL: name: store_flat_p3
850 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
852 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
853 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
854 ; GFX10-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3))
856 ; GFX11-LABEL: name: store_flat_p3
857 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
859 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
860 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
861 ; GFX11-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (p3))
862 %0:vgpr(p1) = COPY $vgpr0_vgpr1
863 %1:vgpr(p3) = COPY $vgpr2
864 G_STORE %1, %0 :: (store (p3), align 4, addrspace 0)
870 name: store_flat_v2p3
872 tracksRegLiveness: true
873 regBankSelected: true
877 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
879 ; GFX7-LABEL: name: store_flat_v2p3
880 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
882 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
883 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
884 ; GFX7-NEXT: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store (<2 x p3>))
886 ; GFX8-LABEL: name: store_flat_v2p3
887 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
889 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
890 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
891 ; GFX8-NEXT: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store (<2 x p3>))
893 ; GFX9-LABEL: name: store_flat_v2p3
894 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
896 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
897 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
898 ; GFX9-NEXT: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store (<2 x p3>))
900 ; GFX10-LABEL: name: store_flat_v2p3
901 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
903 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
904 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
905 ; GFX10-NEXT: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store (<2 x p3>))
907 ; GFX11-LABEL: name: store_flat_v2p3
908 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
910 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
911 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
912 ; GFX11-NEXT: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store (<2 x p3>))
913 %0:vgpr(p1) = COPY $vgpr0_vgpr1
914 %1:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
915 G_STORE %1, %0 :: (store (<2 x p3>), align 8, addrspace 0)
920 name: store_atomic_flat_s32
922 tracksRegLiveness: true
923 regBankSelected: true
927 liveins: $vgpr0_vgpr1, $vgpr2
929 ; GFX7-LABEL: name: store_atomic_flat_s32
930 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
932 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
933 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
934 ; GFX7-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s32))
936 ; GFX8-LABEL: name: store_atomic_flat_s32
937 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
939 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
940 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
941 ; GFX8-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s32))
943 ; GFX9-LABEL: name: store_atomic_flat_s32
944 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
946 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
947 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
948 ; GFX9-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s32))
950 ; GFX10-LABEL: name: store_atomic_flat_s32
951 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
953 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
954 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
955 ; GFX10-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s32))
957 ; GFX11-LABEL: name: store_atomic_flat_s32
958 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
960 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
961 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
962 ; GFX11-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s32))
963 %0:vgpr(p1) = COPY $vgpr0_vgpr1
964 %1:vgpr(s32) = COPY $vgpr2
965 G_STORE %1, %0 :: (store monotonic (s32), align 4, addrspace 0)
971 name: store_atomic_flat_s64
973 tracksRegLiveness: true
974 regBankSelected: true
978 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
980 ; GFX7-LABEL: name: store_atomic_flat_s64
981 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
983 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
984 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
985 ; GFX7-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s64))
987 ; GFX8-LABEL: name: store_atomic_flat_s64
988 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
990 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
991 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
992 ; GFX8-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s64))
994 ; GFX9-LABEL: name: store_atomic_flat_s64
995 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
997 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
998 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
999 ; GFX9-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s64))
1001 ; GFX10-LABEL: name: store_atomic_flat_s64
1002 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
1003 ; GFX10-NEXT: {{ $}}
1004 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
1005 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
1006 ; GFX10-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s64))
1008 ; GFX11-LABEL: name: store_atomic_flat_s64
1009 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
1010 ; GFX11-NEXT: {{ $}}
1011 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
1012 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
1013 ; GFX11-NEXT: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic (s64))
1014 %0:vgpr(p1) = COPY $vgpr0_vgpr1
1015 %1:vgpr(s64) = COPY $vgpr2_vgpr3
1016 G_STORE %1, %0 :: (store monotonic (s64), align 8, addrspace 0)
1022 name: store_flat_s32_gep_2047
1024 tracksRegLiveness: true
1025 regBankSelected: true
1029 liveins: $vgpr0_vgpr1, $vgpr2
1031 ; GFX7-LABEL: name: store_flat_s32_gep_2047
1032 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
1034 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
1035 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1036 ; GFX7-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO 2047, implicit $exec
1037 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
1038 ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0
1039 ; GFX7-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
1040 ; GFX7-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1
1041 ; GFX7-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY2]], [[COPY3]], 0, implicit $exec
1042 ; GFX7-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec
1043 ; GFX7-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1
1044 ; GFX7-NEXT: FLAT_STORE_DWORD [[REG_SEQUENCE]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))
1046 ; GFX8-LABEL: name: store_flat_s32_gep_2047
1047 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
1049 ; GFX8-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
1050 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1051 ; GFX8-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO 2047, implicit $exec
1052 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
1053 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0
1054 ; GFX8-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
1055 ; GFX8-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1
1056 ; GFX8-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY2]], [[COPY3]], 0, implicit $exec
1057 ; GFX8-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec
1058 ; GFX8-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1
1059 ; GFX8-NEXT: FLAT_STORE_DWORD [[REG_SEQUENCE]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))
1061 ; GFX9-LABEL: name: store_flat_s32_gep_2047
1062 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
1064 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
1065 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1066 ; GFX9-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 2047, 0, implicit $exec, implicit $flat_scr :: (store (s32))
1068 ; GFX10-LABEL: name: store_flat_s32_gep_2047
1069 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
1070 ; GFX10-NEXT: {{ $}}
1071 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
1072 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1073 ; GFX10-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO 2047, implicit $exec
1074 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
1075 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0
1076 ; GFX10-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
1077 ; GFX10-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1
1078 ; GFX10-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 [[COPY2]], [[COPY3]], 0, implicit $exec
1079 ; GFX10-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec
1080 ; GFX10-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1
1081 ; GFX10-NEXT: FLAT_STORE_DWORD [[REG_SEQUENCE]], [[COPY1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32))
1083 ; GFX11-LABEL: name: store_flat_s32_gep_2047
1084 ; GFX11: liveins: $vgpr0_vgpr1, $vgpr2
1085 ; GFX11-NEXT: {{ $}}
1086 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
1087 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
1088 ; GFX11-NEXT: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 2047, 0, implicit $exec, implicit $flat_scr :: (store (s32))
1089 %0:vgpr(p1) = COPY $vgpr0_vgpr1
1090 %1:vgpr(s32) = COPY $vgpr2
1091 %2:vgpr(s64) = G_CONSTANT i64 2047
1092 %3:vgpr(p1) = G_PTR_ADD %0, %2
1093 G_STORE %1, %3 :: (store (s32), align 4, addrspace 0)