[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / inst-select-store-global.mir
blobe25bacae60dd901329e95575a7e205c6281cb880
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s
3 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX8 %s
4 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
5 # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s
7 ---
9 name: store_global_s32_to_4
10 legalized:       true
11 tracksRegLiveness: true
12 regBankSelected: true
14 body: |
15   bb.0:
16     liveins:  $vgpr0_vgpr1, $vgpr2
18     ; GFX7-LABEL: name: store_global_s32_to_4
19     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
20     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
21     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
22     ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
23     ; GFX8-LABEL: name: store_global_s32_to_4
24     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
25     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
26     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
27     ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
28     ; GFX9-LABEL: name: store_global_s32_to_4
29     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
30     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
31     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
32     ; GFX9: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
33     ; GFX10-LABEL: name: store_global_s32_to_4
34     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
35     ; GFX10: $vcc_hi = IMPLICIT_DEF
36     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
37     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
38     ; GFX10: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
39     %0:vgpr(p1) = COPY $vgpr0_vgpr1
40     %1:vgpr(s32) = COPY $vgpr2
41     G_STORE %1, %0 :: (store 4, align 4, addrspace 1)
43 ...
45 ---
46 name: store_global_s32_to_2
47 legalized:       true
48 tracksRegLiveness: true
49 regBankSelected: true
51 body: |
52   bb.0:
53     liveins:  $vgpr0_vgpr1, $vgpr2
55     ; GFX7-LABEL: name: store_global_s32_to_2
56     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
57     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
58     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
59     ; GFX7: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 2, addrspace 1)
60     ; GFX8-LABEL: name: store_global_s32_to_2
61     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
62     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
63     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
64     ; GFX8: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 2, addrspace 1)
65     ; GFX9-LABEL: name: store_global_s32_to_2
66     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
67     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
68     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
69     ; GFX9: GLOBAL_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 2, addrspace 1)
70     ; GFX10-LABEL: name: store_global_s32_to_2
71     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
72     ; GFX10: $vcc_hi = IMPLICIT_DEF
73     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
74     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
75     ; GFX10: GLOBAL_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 2, addrspace 1)
76     %0:vgpr(p1) = COPY $vgpr0_vgpr1
77     %1:vgpr(s32) = COPY $vgpr2
78     G_STORE %1, %0 :: (store 2, align 2, addrspace 1)
80 ...
82 ---
83 name: store_global_s32_to_1
84 legalized:       true
85 tracksRegLiveness: true
86 regBankSelected: true
88 body: |
89   bb.0:
90     liveins:  $vgpr0_vgpr1, $vgpr2
92     ; GFX7-LABEL: name: store_global_s32_to_1
93     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
94     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
95     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
96     ; GFX7: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 1, addrspace 1)
97     ; GFX8-LABEL: name: store_global_s32_to_1
98     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
99     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
100     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
101     ; GFX8: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 1, addrspace 1)
102     ; GFX9-LABEL: name: store_global_s32_to_1
103     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
104     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
105     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
106     ; GFX9: GLOBAL_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 1, addrspace 1)
107     ; GFX10-LABEL: name: store_global_s32_to_1
108     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
109     ; GFX10: $vcc_hi = IMPLICIT_DEF
110     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
111     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
112     ; GFX10: GLOBAL_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 1, addrspace 1)
113     %0:vgpr(p1) = COPY $vgpr0_vgpr1
114     %1:vgpr(s32) = COPY $vgpr2
115     G_STORE %1, %0 :: (store 1, align 1, addrspace 1)
121 name: store_global_s64
122 legalized:       true
123 tracksRegLiveness: true
124 regBankSelected: true
126 body: |
127   bb.0:
128     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
130     ; GFX7-LABEL: name: store_global_s64
131     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
132     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
133     ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
134     ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
135     ; GFX8-LABEL: name: store_global_s64
136     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
137     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
138     ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
139     ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
140     ; GFX9-LABEL: name: store_global_s64
141     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
142     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
143     ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
144     ; GFX9: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
145     ; GFX10-LABEL: name: store_global_s64
146     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
147     ; GFX10: $vcc_hi = IMPLICIT_DEF
148     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
149     ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
150     ; GFX10: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
151     %0:vgpr(p1) = COPY $vgpr0_vgpr1
152     %1:vgpr(s64) = COPY $vgpr2_vgpr3
153     G_STORE %1, %0 :: (store 8, align 8, addrspace 1)
158 name: store_global_s96
159 legalized:       true
160 tracksRegLiveness: true
161 regBankSelected: true
163 body: |
164   bb.0:
165     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
167     ; GFX7-LABEL: name: store_global_s96
168     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
169     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
170     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
171     ; GFX7: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store 12, align 16, addrspace 1)
172     ; GFX8-LABEL: name: store_global_s96
173     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
174     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
175     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
176     ; GFX8: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store 12, align 16, addrspace 1)
177     ; GFX9-LABEL: name: store_global_s96
178     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
179     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
180     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
181     ; GFX9: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store 12, align 16, addrspace 1)
182     ; GFX10-LABEL: name: store_global_s96
183     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
184     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
185     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
186     ; GFX10: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store 12, align 16, addrspace 1)
187     %0:vgpr(p1) = COPY $vgpr0_vgpr1
188     %1:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4
189     G_STORE %1, %0 :: (store 12, align 16, addrspace 1)
194 name: store_global_s128
195 legalized:       true
196 tracksRegLiveness: true
197 regBankSelected: true
199 body: |
200   bb.0:
201     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
203     ; GFX7-LABEL: name: store_global_s128
204     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
205     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
206     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
207     ; GFX7: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store 16, addrspace 1)
208     ; GFX8-LABEL: name: store_global_s128
209     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
210     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
211     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
212     ; GFX8: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store 16, addrspace 1)
213     ; GFX9-LABEL: name: store_global_s128
214     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
215     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
216     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
217     ; GFX9: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store 16, addrspace 1)
218     ; GFX10-LABEL: name: store_global_s128
219     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
220     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
221     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
222     ; GFX10: G_STORE [[COPY1]](s128), [[COPY]](p1) :: (store 16, addrspace 1)
223     %0:vgpr(p1) = COPY $vgpr0_vgpr1
224     %1:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
225     G_STORE %1, %0 :: (store 16, align 16, addrspace 1)
231 name: store_global_v2s32
232 legalized:       true
233 tracksRegLiveness: true
234 regBankSelected: true
236 body: |
237   bb.0:
238     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
240     ; GFX7-LABEL: name: store_global_v2s32
241     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
242     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
243     ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
244     ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
245     ; GFX8-LABEL: name: store_global_v2s32
246     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
247     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
248     ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
249     ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
250     ; GFX9-LABEL: name: store_global_v2s32
251     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
252     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
253     ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
254     ; GFX9: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
255     ; GFX10-LABEL: name: store_global_v2s32
256     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
257     ; GFX10: $vcc_hi = IMPLICIT_DEF
258     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
259     ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
260     ; GFX10: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
261     %0:vgpr(p1) = COPY $vgpr0_vgpr1
262     %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3
263     G_STORE %1, %0 :: (store 8, align 8, addrspace 1)
268 name: store_global_v3s32
269 legalized:       true
270 tracksRegLiveness: true
271 regBankSelected: true
273 body: |
274   bb.0:
275     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
277     ; GFX7-LABEL: name: store_global_v3s32
278     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
279     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
280     ; GFX7: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
281     ; GFX7: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16, addrspace 1)
282     ; GFX8-LABEL: name: store_global_v3s32
283     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
284     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
285     ; GFX8: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
286     ; GFX8: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16, addrspace 1)
287     ; GFX9-LABEL: name: store_global_v3s32
288     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
289     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
290     ; GFX9: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
291     ; GFX9: GLOBAL_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 12, align 16, addrspace 1)
292     ; GFX10-LABEL: name: store_global_v3s32
293     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
294     ; GFX10: $vcc_hi = IMPLICIT_DEF
295     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
296     ; GFX10: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4
297     ; GFX10: GLOBAL_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 12, align 16, addrspace 1)
298     %0:vgpr(p1) = COPY $vgpr0_vgpr1
299     %1:vgpr(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4
300     G_STORE %1, %0 :: (store 12, align 16, addrspace 1)
305 name: store_global_v4s32
306 legalized:       true
307 tracksRegLiveness: true
308 regBankSelected: true
310 body: |
311   bb.0:
312     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
314     ; GFX7-LABEL: name: store_global_v4s32
315     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
316     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
317     ; GFX7: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
318     ; GFX7: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16, addrspace 1)
319     ; GFX8-LABEL: name: store_global_v4s32
320     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
321     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
322     ; GFX8: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
323     ; GFX8: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16, addrspace 1)
324     ; GFX9-LABEL: name: store_global_v4s32
325     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
326     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
327     ; GFX9: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
328     ; GFX9: GLOBAL_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 16, addrspace 1)
329     ; GFX10-LABEL: name: store_global_v4s32
330     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
331     ; GFX10: $vcc_hi = IMPLICIT_DEF
332     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
333     ; GFX10: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5
334     ; GFX10: GLOBAL_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 16, addrspace 1)
335     %0:vgpr(p1) = COPY $vgpr0_vgpr1
336     %1:vgpr(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
337     G_STORE %1, %0 :: (store 16, align 16, addrspace 1)
343 name: store_global_v2s16
344 legalized:       true
345 tracksRegLiveness: true
346 regBankSelected: true
348 body: |
349   bb.0:
350     liveins:  $vgpr0_vgpr1, $vgpr2
352     ; GFX7-LABEL: name: store_global_v2s16
353     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
354     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
355     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
356     ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
357     ; GFX8-LABEL: name: store_global_v2s16
358     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
359     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
360     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
361     ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
362     ; GFX9-LABEL: name: store_global_v2s16
363     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
364     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
365     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
366     ; GFX9: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
367     ; GFX10-LABEL: name: store_global_v2s16
368     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
369     ; GFX10: $vcc_hi = IMPLICIT_DEF
370     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
371     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
372     ; GFX10: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
373     %0:vgpr(p1) = COPY $vgpr0_vgpr1
374     %1:vgpr(<2 x s16>) = COPY $vgpr2
375     G_STORE %1, %0 :: (store 4, align 4, addrspace 1)
381 name: store_global_v4s16
382 legalized:       true
383 tracksRegLiveness: true
384 regBankSelected: true
386 body: |
387   bb.0:
388     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
390     ; GFX7-LABEL: name: store_global_v4s16
391     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
392     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
393     ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
394     ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
395     ; GFX8-LABEL: name: store_global_v4s16
396     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
397     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
398     ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
399     ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
400     ; GFX9-LABEL: name: store_global_v4s16
401     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
402     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
403     ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
404     ; GFX9: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
405     ; GFX10-LABEL: name: store_global_v4s16
406     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
407     ; GFX10: $vcc_hi = IMPLICIT_DEF
408     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
409     ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
410     ; GFX10: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
411     %0:vgpr(p1) = COPY $vgpr0_vgpr1
412     %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3
413     G_STORE %1, %0 :: (store 8, align 8, addrspace 1)
419 name: store_global_v6s16
420 legalized:       true
421 tracksRegLiveness: true
422 regBankSelected: true
424 body: |
425   bb.0:
426     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
428     ; GFX7-LABEL: name: store_global_v6s16
429     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
430     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
431     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
432     ; GFX7: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16, addrspace 1)
433     ; GFX8-LABEL: name: store_global_v6s16
434     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
435     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
436     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
437     ; GFX8: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16, addrspace 1)
438     ; GFX9-LABEL: name: store_global_v6s16
439     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
440     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
441     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
442     ; GFX9: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16, addrspace 1)
443     ; GFX10-LABEL: name: store_global_v6s16
444     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
445     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
446     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
447     ; GFX10: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16, addrspace 1)
448     %0:vgpr(p1) = COPY $vgpr0_vgpr1
449     %1:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4
450     G_STORE %1, %0 :: (store 12, align 16, addrspace 1)
455 name: store_global_v8s16
456 legalized:       true
457 tracksRegLiveness: true
458 regBankSelected: true
460 body: |
461   bb.0:
462     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
464     ; GFX7-LABEL: name: store_global_v8s16
465     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
466     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
467     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
468     ; GFX7: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16, addrspace 1)
469     ; GFX8-LABEL: name: store_global_v8s16
470     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
471     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
472     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
473     ; GFX8: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16, addrspace 1)
474     ; GFX9-LABEL: name: store_global_v8s16
475     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
476     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
477     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
478     ; GFX9: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16, addrspace 1)
479     ; GFX10-LABEL: name: store_global_v8s16
480     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
481     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
482     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
483     ; GFX10: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16, addrspace 1)
484     %0:vgpr(p1) = COPY $vgpr0_vgpr1
485     %1:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
486     G_STORE %1, %0 :: (store 16, align 16, addrspace 1)
492 name: store_global_v2s64
493 legalized:       true
494 tracksRegLiveness: true
495 regBankSelected: true
497 body: |
498   bb.0:
499     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
501     ; GFX7-LABEL: name: store_global_v2s64
502     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
503     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
504     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
505     ; GFX7: G_STORE [[COPY1]](<2 x s64>), [[COPY]](p1) :: (store 16, addrspace 1)
506     ; GFX8-LABEL: name: store_global_v2s64
507     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
508     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
509     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
510     ; GFX8: G_STORE [[COPY1]](<2 x s64>), [[COPY]](p1) :: (store 16, addrspace 1)
511     ; GFX9-LABEL: name: store_global_v2s64
512     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
513     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
514     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
515     ; GFX9: G_STORE [[COPY1]](<2 x s64>), [[COPY]](p1) :: (store 16, addrspace 1)
516     ; GFX10-LABEL: name: store_global_v2s64
517     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
518     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
519     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
520     ; GFX10: G_STORE [[COPY1]](<2 x s64>), [[COPY]](p1) :: (store 16, addrspace 1)
521     %0:vgpr(p1) = COPY $vgpr0_vgpr1
522     %1:vgpr(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
523     G_STORE %1, %0 :: (store 16, align 16, addrspace 1)
529 name: store_global_p1
530 legalized:       true
531 tracksRegLiveness: true
532 regBankSelected: true
534 body: |
535   bb.0:
536     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
538     ; GFX7-LABEL: name: store_global_p1
539     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
540     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
541     ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
542     ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
543     ; GFX8-LABEL: name: store_global_p1
544     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
545     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
546     ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
547     ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
548     ; GFX9-LABEL: name: store_global_p1
549     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
550     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
551     ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
552     ; GFX9: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
553     ; GFX10-LABEL: name: store_global_p1
554     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
555     ; GFX10: $vcc_hi = IMPLICIT_DEF
556     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
557     ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
558     ; GFX10: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
559     %0:vgpr(p1) = COPY $vgpr0_vgpr1
560     %1:vgpr(p1) = COPY $vgpr2_vgpr3
561     G_STORE %1, %0 :: (store 8, align 8, addrspace 1)
567 name: store_global_v2p1
568 legalized:       true
569 tracksRegLiveness: true
570 regBankSelected: true
572 body: |
573   bb.0:
574     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
576     ; GFX7-LABEL: name: store_global_v2p1
577     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
578     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
579     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
580     ; GFX7: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16, addrspace 1)
581     ; GFX8-LABEL: name: store_global_v2p1
582     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
583     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
584     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
585     ; GFX8: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16, addrspace 1)
586     ; GFX9-LABEL: name: store_global_v2p1
587     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
588     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
589     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
590     ; GFX9: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16, addrspace 1)
591     ; GFX10-LABEL: name: store_global_v2p1
592     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
593     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
594     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
595     ; GFX10: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16, addrspace 1)
596     %0:vgpr(p1) = COPY $vgpr0_vgpr1
597     %1:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5
598     G_STORE %1, %0 :: (store 16, align 16, addrspace 1)
604 name: store_global_p3
605 legalized:       true
606 tracksRegLiveness: true
607 regBankSelected: true
609 body: |
610   bb.0:
611     liveins:  $vgpr0_vgpr1, $vgpr2
613     ; GFX7-LABEL: name: store_global_p3
614     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
615     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
616     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
617     ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
618     ; GFX8-LABEL: name: store_global_p3
619     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
620     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
621     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
622     ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
623     ; GFX9-LABEL: name: store_global_p3
624     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
625     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
626     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
627     ; GFX9: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
628     ; GFX10-LABEL: name: store_global_p3
629     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
630     ; GFX10: $vcc_hi = IMPLICIT_DEF
631     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
632     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
633     ; GFX10: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
634     %0:vgpr(p1) = COPY $vgpr0_vgpr1
635     %1:vgpr(p3) = COPY $vgpr2
636     G_STORE %1, %0 :: (store 4, align 4, addrspace 1)
642 name: store_global_v2p3
643 legalized:       true
644 tracksRegLiveness: true
645 regBankSelected: true
647 body: |
648   bb.0:
649     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
651     ; GFX7-LABEL: name: store_global_v2p3
652     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
653     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
654     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
655     ; GFX7: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8, addrspace 1)
656     ; GFX8-LABEL: name: store_global_v2p3
657     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
658     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
659     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
660     ; GFX8: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8, addrspace 1)
661     ; GFX9-LABEL: name: store_global_v2p3
662     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
663     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
664     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
665     ; GFX9: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8, addrspace 1)
666     ; GFX10-LABEL: name: store_global_v2p3
667     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
668     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
669     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
670     ; GFX10: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8, addrspace 1)
671     %0:vgpr(p1) = COPY $vgpr0_vgpr1
672     %1:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3
673     G_STORE %1, %0 :: (store 8, align 8, addrspace 1)
678 name: store_atomic_global_s32
679 legalized:       true
680 tracksRegLiveness: true
681 regBankSelected: true
683 body: |
684   bb.0:
685     liveins:  $vgpr0_vgpr1, $vgpr2
687     ; GFX7-LABEL: name: store_atomic_global_s32
688     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
689     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
690     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
691     ; GFX7: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store monotonic 4, addrspace 1)
692     ; GFX8-LABEL: name: store_atomic_global_s32
693     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
694     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
695     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
696     ; GFX8: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store monotonic 4, addrspace 1)
697     ; GFX9-LABEL: name: store_atomic_global_s32
698     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
699     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
700     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
701     ; GFX9: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store monotonic 4, addrspace 1)
702     ; GFX10-LABEL: name: store_atomic_global_s32
703     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
704     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
705     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
706     ; GFX10: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store monotonic 4, addrspace 1)
707     %0:vgpr(p1) = COPY $vgpr0_vgpr1
708     %1:vgpr(s32) = COPY $vgpr2
709     G_STORE %1, %0 :: (store monotonic 4, align 4, addrspace 1)
715 name: store_atomic_global_s64
716 legalized:       true
717 tracksRegLiveness: true
718 regBankSelected: true
720 body: |
721   bb.0:
722     liveins:  $vgpr0_vgpr1, $vgpr2_vgpr3
724     ; GFX7-LABEL: name: store_atomic_global_s64
725     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
726     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
727     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
728     ; GFX7: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store monotonic 8, addrspace 1)
729     ; GFX8-LABEL: name: store_atomic_global_s64
730     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
731     ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
732     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
733     ; GFX8: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store monotonic 8, addrspace 1)
734     ; GFX9-LABEL: name: store_atomic_global_s64
735     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
736     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
737     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
738     ; GFX9: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store monotonic 8, addrspace 1)
739     ; GFX10-LABEL: name: store_atomic_global_s64
740     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
741     ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
742     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3
743     ; GFX10: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store monotonic 8, addrspace 1)
744     %0:vgpr(p1) = COPY $vgpr0_vgpr1
745     %1:vgpr(s64) = COPY $vgpr2_vgpr3
746     G_STORE %1, %0 :: (store monotonic 8, align 8, addrspace 1)
752 name: store_global_s32_gep_2047
753 legalized:       true
754 tracksRegLiveness: true
755 regBankSelected: true
757 body: |
758   bb.0:
759     liveins:  $vgpr0_vgpr1, $vgpr2
761     ; GFX7-LABEL: name: store_global_s32_gep_2047
762     ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
763     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
764     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
765     ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec
766     ; GFX7: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
767     ; GFX7: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1
768     ; GFX7: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
769     ; GFX7: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0
770     ; GFX7: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
771     ; GFX7: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1
772     ; GFX7: [[V_ADD_I32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_I32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_I32_e64 [[COPY2]], [[COPY3]], 0, implicit $exec
773     ; GFX7: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_I32_e64_1]], 0, implicit $exec
774     ; GFX7: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_I32_e64_]], %subreg.sub0, %9, %subreg.sub1
775     ; GFX7: FLAT_STORE_DWORD [[REG_SEQUENCE1]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
776     ; GFX8-LABEL: name: store_global_s32_gep_2047
777     ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
778     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
779     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
780     ; GFX8: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec
781     ; GFX8: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
782     ; GFX8: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1
783     ; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0
784     ; GFX8: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0
785     ; GFX8: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1
786     ; GFX8: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1
787     ; GFX8: [[V_ADD_I32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_I32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_I32_e64 [[COPY2]], [[COPY3]], 0, implicit $exec
788     ; GFX8: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_I32_e64_1]], 0, implicit $exec
789     ; GFX8: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_I32_e64_]], %subreg.sub0, %9, %subreg.sub1
790     ; GFX8: FLAT_STORE_DWORD [[REG_SEQUENCE1]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
791     ; GFX9-LABEL: name: store_global_s32_gep_2047
792     ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
793     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
794     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
795     ; GFX9: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 2047, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
796     ; GFX10-LABEL: name: store_global_s32_gep_2047
797     ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
798     ; GFX10: $vcc_hi = IMPLICIT_DEF
799     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
800     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
801     ; GFX10: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 2047, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
802     %0:vgpr(p1) = COPY $vgpr0_vgpr1
803     %1:vgpr(s32) = COPY $vgpr2
804     %2:vgpr(s64) = G_CONSTANT i64 2047
805     %3:vgpr(p1) = G_GEP %0, %2
806     G_STORE %1, %3 :: (store 4, align 4, addrspace 1)