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
9 name: store_global_s32_to_4
11 tracksRegLiveness: true
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)
46 name: store_global_s32_to_2
48 tracksRegLiveness: true
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)
83 name: store_global_s32_to_1
85 tracksRegLiveness: true
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
123 tracksRegLiveness: true
124 regBankSelected: true
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
160 tracksRegLiveness: true
161 regBankSelected: true
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
196 tracksRegLiveness: true
197 regBankSelected: true
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
233 tracksRegLiveness: true
234 regBankSelected: true
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
270 tracksRegLiveness: true
271 regBankSelected: true
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
307 tracksRegLiveness: true
308 regBankSelected: true
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
345 tracksRegLiveness: true
346 regBankSelected: true
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
383 tracksRegLiveness: true
384 regBankSelected: true
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
421 tracksRegLiveness: true
422 regBankSelected: true
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
457 tracksRegLiveness: true
458 regBankSelected: true
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
494 tracksRegLiveness: true
495 regBankSelected: true
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
531 tracksRegLiveness: true
532 regBankSelected: true
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
569 tracksRegLiveness: true
570 regBankSelected: true
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
606 tracksRegLiveness: true
607 regBankSelected: true
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
644 tracksRegLiveness: true
645 regBankSelected: true
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
680 tracksRegLiveness: true
681 regBankSelected: true
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
717 tracksRegLiveness: true
718 regBankSelected: true
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
754 tracksRegLiveness: true
755 regBankSelected: true
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)