1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s
3 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s
4 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s
7 define void @v_shuffle_v2i32_v4i32__u_u(ptr addrspace(1) inreg %ptr) {
8 ; GFX9-LABEL: v_shuffle_v2i32_v4i32__u_u:
10 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11 ; GFX9-NEXT: s_setpc_b64 s[30:31]
12 %vec0 = call <4 x i32> asm "; def $0", "=v"()
13 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> poison
14 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
18 define void @v_shuffle_v2i32_v4i32__0_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_u:
21 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
23 ; GFX900-NEXT: ;;#ASMSTART
24 ; GFX900-NEXT: ; def v[0:3]
25 ; GFX900-NEXT: ;;#ASMEND
26 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
27 ; GFX900-NEXT: s_waitcnt vmcnt(0)
28 ; GFX900-NEXT: s_setpc_b64 s[30:31]
30 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_u:
32 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
34 ; GFX90A-NEXT: ;;#ASMSTART
35 ; GFX90A-NEXT: ; def v[0:3]
36 ; GFX90A-NEXT: ;;#ASMEND
37 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
38 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
39 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
41 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_u:
43 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
45 ; GFX940-NEXT: ;;#ASMSTART
46 ; GFX940-NEXT: ; def v[0:3]
47 ; GFX940-NEXT: ;;#ASMEND
48 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
49 ; GFX940-NEXT: s_waitcnt vmcnt(0)
50 ; GFX940-NEXT: s_setpc_b64 s[30:31]
51 %vec0 = call <4 x i32> asm "; def $0", "=v"()
52 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 poison>
53 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
57 define void @v_shuffle_v2i32_v4i32__1_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_u:
60 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
62 ; GFX900-NEXT: ;;#ASMSTART
63 ; GFX900-NEXT: ; def v[0:3]
64 ; GFX900-NEXT: ;;#ASMEND
65 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
66 ; GFX900-NEXT: s_waitcnt vmcnt(0)
67 ; GFX900-NEXT: s_setpc_b64 s[30:31]
69 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_u:
71 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72 ; GFX90A-NEXT: ;;#ASMSTART
73 ; GFX90A-NEXT: ; def v[0:3]
74 ; GFX90A-NEXT: ;;#ASMEND
75 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
76 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
77 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
78 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
79 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
81 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_u:
83 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
84 ; GFX940-NEXT: ;;#ASMSTART
85 ; GFX940-NEXT: ; def v[0:3]
86 ; GFX940-NEXT: ;;#ASMEND
87 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
88 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
89 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
90 ; GFX940-NEXT: s_waitcnt vmcnt(0)
91 ; GFX940-NEXT: s_setpc_b64 s[30:31]
92 %vec0 = call <4 x i32> asm "; def $0", "=v"()
93 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 poison>
94 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
98 define void @v_shuffle_v2i32_v4i32__2_u(ptr addrspace(1) inreg %ptr) {
99 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_u:
101 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
102 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
103 ; GFX900-NEXT: ;;#ASMSTART
104 ; GFX900-NEXT: ; def v[0:3]
105 ; GFX900-NEXT: ;;#ASMEND
106 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
107 ; GFX900-NEXT: s_waitcnt vmcnt(0)
108 ; GFX900-NEXT: s_setpc_b64 s[30:31]
110 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_u:
112 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
113 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
114 ; GFX90A-NEXT: ;;#ASMSTART
115 ; GFX90A-NEXT: ; def v[0:3]
116 ; GFX90A-NEXT: ;;#ASMEND
117 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
118 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
119 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
121 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_u:
123 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
124 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
125 ; GFX940-NEXT: ;;#ASMSTART
126 ; GFX940-NEXT: ; def v[0:3]
127 ; GFX940-NEXT: ;;#ASMEND
128 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
129 ; GFX940-NEXT: s_waitcnt vmcnt(0)
130 ; GFX940-NEXT: s_setpc_b64 s[30:31]
131 %vec0 = call <4 x i32> asm "; def $0", "=v"()
132 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 poison>
133 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
137 define void @v_shuffle_v2i32_v4i32__3_u(ptr addrspace(1) inreg %ptr) {
138 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_u:
140 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
141 ; GFX900-NEXT: ;;#ASMSTART
142 ; GFX900-NEXT: ; def v[0:3]
143 ; GFX900-NEXT: ;;#ASMEND
144 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
145 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
146 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
147 ; GFX900-NEXT: s_waitcnt vmcnt(0)
148 ; GFX900-NEXT: s_setpc_b64 s[30:31]
150 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_u:
152 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
153 ; GFX90A-NEXT: ;;#ASMSTART
154 ; GFX90A-NEXT: ; def v[0:3]
155 ; GFX90A-NEXT: ;;#ASMEND
156 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
157 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
158 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
159 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
160 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
162 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_u:
164 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
165 ; GFX940-NEXT: ;;#ASMSTART
166 ; GFX940-NEXT: ; def v[0:3]
167 ; GFX940-NEXT: ;;#ASMEND
168 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
169 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
170 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
171 ; GFX940-NEXT: s_waitcnt vmcnt(0)
172 ; GFX940-NEXT: s_setpc_b64 s[30:31]
173 %vec0 = call <4 x i32> asm "; def $0", "=v"()
174 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 poison>
175 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
179 define void @v_shuffle_v2i32_v4i32__4_u(ptr addrspace(1) inreg %ptr) {
180 ; GFX9-LABEL: v_shuffle_v2i32_v4i32__4_u:
182 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
183 ; GFX9-NEXT: s_setpc_b64 s[30:31]
184 %vec0 = call <4 x i32> asm "; def $0", "=v"()
185 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 poison>
186 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
190 define void @v_shuffle_v2i32_v4i32__5_u(ptr addrspace(1) inreg %ptr) {
191 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_u:
193 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
194 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
195 ; GFX900-NEXT: ;;#ASMSTART
196 ; GFX900-NEXT: ; def v[0:3]
197 ; GFX900-NEXT: ;;#ASMEND
198 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
199 ; GFX900-NEXT: s_waitcnt vmcnt(0)
200 ; GFX900-NEXT: s_setpc_b64 s[30:31]
202 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_u:
204 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
205 ; GFX90A-NEXT: ;;#ASMSTART
206 ; GFX90A-NEXT: ; def v[0:3]
207 ; GFX90A-NEXT: ;;#ASMEND
208 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
209 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
210 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
211 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
212 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
214 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_u:
216 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
217 ; GFX940-NEXT: ;;#ASMSTART
218 ; GFX940-NEXT: ; def v[0:3]
219 ; GFX940-NEXT: ;;#ASMEND
220 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
221 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
222 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
223 ; GFX940-NEXT: s_waitcnt vmcnt(0)
224 ; GFX940-NEXT: s_setpc_b64 s[30:31]
225 %vec0 = call <4 x i32> asm "; def $0", "=v"()
226 %vec1 = call <4 x i32> asm "; def $0", "=v"()
227 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 poison>
228 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
232 define void @v_shuffle_v2i32_v4i32__6_u(ptr addrspace(1) inreg %ptr) {
233 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_u:
235 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
236 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
237 ; GFX900-NEXT: ;;#ASMSTART
238 ; GFX900-NEXT: ; def v[0:3]
239 ; GFX900-NEXT: ;;#ASMEND
240 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
241 ; GFX900-NEXT: s_waitcnt vmcnt(0)
242 ; GFX900-NEXT: s_setpc_b64 s[30:31]
244 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_u:
246 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
247 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
248 ; GFX90A-NEXT: ;;#ASMSTART
249 ; GFX90A-NEXT: ; def v[0:3]
250 ; GFX90A-NEXT: ;;#ASMEND
251 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
252 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
253 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
255 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_u:
257 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
258 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
259 ; GFX940-NEXT: ;;#ASMSTART
260 ; GFX940-NEXT: ; def v[0:3]
261 ; GFX940-NEXT: ;;#ASMEND
262 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
263 ; GFX940-NEXT: s_waitcnt vmcnt(0)
264 ; GFX940-NEXT: s_setpc_b64 s[30:31]
265 %vec0 = call <4 x i32> asm "; def $0", "=v"()
266 %vec1 = call <4 x i32> asm "; def $0", "=v"()
267 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 poison>
268 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
272 define void @v_shuffle_v2i32_v4i32__7_u(ptr addrspace(1) inreg %ptr) {
273 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_u:
275 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
276 ; GFX900-NEXT: ;;#ASMSTART
277 ; GFX900-NEXT: ; def v[0:3]
278 ; GFX900-NEXT: ;;#ASMEND
279 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
280 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
281 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
282 ; GFX900-NEXT: s_waitcnt vmcnt(0)
283 ; GFX900-NEXT: s_setpc_b64 s[30:31]
285 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_u:
287 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
288 ; GFX90A-NEXT: ;;#ASMSTART
289 ; GFX90A-NEXT: ; def v[0:3]
290 ; GFX90A-NEXT: ;;#ASMEND
291 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
292 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
293 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
294 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
295 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
297 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_u:
299 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
300 ; GFX940-NEXT: ;;#ASMSTART
301 ; GFX940-NEXT: ; def v[0:3]
302 ; GFX940-NEXT: ;;#ASMEND
303 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
304 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
305 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
306 ; GFX940-NEXT: s_waitcnt vmcnt(0)
307 ; GFX940-NEXT: s_setpc_b64 s[30:31]
308 %vec0 = call <4 x i32> asm "; def $0", "=v"()
309 %vec1 = call <4 x i32> asm "; def $0", "=v"()
310 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 poison>
311 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
315 define void @v_shuffle_v2i32_v4i32__7_0(ptr addrspace(1) inreg %ptr) {
316 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_0:
318 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
319 ; GFX900-NEXT: ;;#ASMSTART
320 ; GFX900-NEXT: ; def v[0:3]
321 ; GFX900-NEXT: ;;#ASMEND
322 ; GFX900-NEXT: ;;#ASMSTART
323 ; GFX900-NEXT: ; def v[1:4]
324 ; GFX900-NEXT: ;;#ASMEND
325 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
326 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
327 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
328 ; GFX900-NEXT: global_store_dwordx2 v5, v[1:2], s[16:17]
329 ; GFX900-NEXT: s_waitcnt vmcnt(0)
330 ; GFX900-NEXT: s_setpc_b64 s[30:31]
332 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_0:
334 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
335 ; GFX90A-NEXT: ;;#ASMSTART
336 ; GFX90A-NEXT: ; def v[0:3]
337 ; GFX90A-NEXT: ;;#ASMEND
338 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
339 ; GFX90A-NEXT: ;;#ASMSTART
340 ; GFX90A-NEXT: ; def v[2:5]
341 ; GFX90A-NEXT: ;;#ASMEND
342 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]
343 ; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
344 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
345 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
347 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_0:
349 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
350 ; GFX940-NEXT: ;;#ASMSTART
351 ; GFX940-NEXT: ; def v[0:3]
352 ; GFX940-NEXT: ;;#ASMEND
353 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
354 ; GFX940-NEXT: ;;#ASMSTART
355 ; GFX940-NEXT: ; def v[2:5]
356 ; GFX940-NEXT: ;;#ASMEND
357 ; GFX940-NEXT: s_nop 0
358 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]
359 ; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
360 ; GFX940-NEXT: s_waitcnt vmcnt(0)
361 ; GFX940-NEXT: s_setpc_b64 s[30:31]
362 %vec0 = call <4 x i32> asm "; def $0", "=v"()
363 %vec1 = call <4 x i32> asm "; def $0", "=v"()
364 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 0>
365 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
369 define void @v_shuffle_v2i32_v4i32__7_1(ptr addrspace(1) inreg %ptr) {
370 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_1:
372 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
373 ; GFX900-NEXT: ;;#ASMSTART
374 ; GFX900-NEXT: ; def v[0:3]
375 ; GFX900-NEXT: ;;#ASMEND
376 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
377 ; GFX900-NEXT: ;;#ASMSTART
378 ; GFX900-NEXT: ; def v[2:5]
379 ; GFX900-NEXT: ;;#ASMEND
380 ; GFX900-NEXT: v_mov_b32_e32 v0, v5
381 ; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
382 ; GFX900-NEXT: s_waitcnt vmcnt(0)
383 ; GFX900-NEXT: s_setpc_b64 s[30:31]
385 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_1:
387 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
388 ; GFX90A-NEXT: ;;#ASMSTART
389 ; GFX90A-NEXT: ; def v[0:3]
390 ; GFX90A-NEXT: ;;#ASMEND
391 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
392 ; GFX90A-NEXT: ;;#ASMSTART
393 ; GFX90A-NEXT: ; def v[2:5]
394 ; GFX90A-NEXT: ;;#ASMEND
395 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
396 ; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
397 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
398 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
400 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_1:
402 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
403 ; GFX940-NEXT: ;;#ASMSTART
404 ; GFX940-NEXT: ; def v[0:3]
405 ; GFX940-NEXT: ;;#ASMEND
406 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
407 ; GFX940-NEXT: ;;#ASMSTART
408 ; GFX940-NEXT: ; def v[2:5]
409 ; GFX940-NEXT: ;;#ASMEND
410 ; GFX940-NEXT: s_nop 0
411 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
412 ; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
413 ; GFX940-NEXT: s_waitcnt vmcnt(0)
414 ; GFX940-NEXT: s_setpc_b64 s[30:31]
415 %vec0 = call <4 x i32> asm "; def $0", "=v"()
416 %vec1 = call <4 x i32> asm "; def $0", "=v"()
417 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 1>
418 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
422 define void @v_shuffle_v2i32_v4i32__7_2(ptr addrspace(1) inreg %ptr) {
423 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_2:
425 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
426 ; GFX900-NEXT: ;;#ASMSTART
427 ; GFX900-NEXT: ; def v[0:3]
428 ; GFX900-NEXT: ;;#ASMEND
429 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
430 ; GFX900-NEXT: ;;#ASMSTART
431 ; GFX900-NEXT: ; def v[3:6]
432 ; GFX900-NEXT: ;;#ASMEND
433 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
434 ; GFX900-NEXT: global_store_dwordx2 v7, v[1:2], s[16:17]
435 ; GFX900-NEXT: s_waitcnt vmcnt(0)
436 ; GFX900-NEXT: s_setpc_b64 s[30:31]
438 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_2:
440 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
441 ; GFX90A-NEXT: ;;#ASMSTART
442 ; GFX90A-NEXT: ; def v[0:3]
443 ; GFX90A-NEXT: ;;#ASMEND
444 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
445 ; GFX90A-NEXT: ;;#ASMSTART
446 ; GFX90A-NEXT: ; def v[4:7]
447 ; GFX90A-NEXT: ;;#ASMEND
448 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]
449 ; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17]
450 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
451 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
453 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_2:
455 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
456 ; GFX940-NEXT: ;;#ASMSTART
457 ; GFX940-NEXT: ; def v[0:3]
458 ; GFX940-NEXT: ;;#ASMEND
459 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
460 ; GFX940-NEXT: ;;#ASMSTART
461 ; GFX940-NEXT: ; def v[4:7]
462 ; GFX940-NEXT: ;;#ASMEND
463 ; GFX940-NEXT: s_nop 0
464 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]
465 ; GFX940-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] sc0 sc1
466 ; GFX940-NEXT: s_waitcnt vmcnt(0)
467 ; GFX940-NEXT: s_setpc_b64 s[30:31]
468 %vec0 = call <4 x i32> asm "; def $0", "=v"()
469 %vec1 = call <4 x i32> asm "; def $0", "=v"()
470 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 2>
471 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
475 define void @v_shuffle_v2i32_v4i32__7_3(ptr addrspace(1) inreg %ptr) {
476 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_3:
478 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
479 ; GFX900-NEXT: ;;#ASMSTART
480 ; GFX900-NEXT: ; def v[0:3]
481 ; GFX900-NEXT: ;;#ASMEND
482 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
483 ; GFX900-NEXT: ;;#ASMSTART
484 ; GFX900-NEXT: ; def v[4:7]
485 ; GFX900-NEXT: ;;#ASMEND
486 ; GFX900-NEXT: v_mov_b32_e32 v2, v7
487 ; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17]
488 ; GFX900-NEXT: s_waitcnt vmcnt(0)
489 ; GFX900-NEXT: s_setpc_b64 s[30:31]
491 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_3:
493 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
494 ; GFX90A-NEXT: ;;#ASMSTART
495 ; GFX90A-NEXT: ; def v[0:3]
496 ; GFX90A-NEXT: ;;#ASMEND
497 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
498 ; GFX90A-NEXT: ;;#ASMSTART
499 ; GFX90A-NEXT: ; def v[4:7]
500 ; GFX90A-NEXT: ;;#ASMEND
501 ; GFX90A-NEXT: v_mov_b32_e32 v2, v7
502 ; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17]
503 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
504 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
506 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_3:
508 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
509 ; GFX940-NEXT: ;;#ASMSTART
510 ; GFX940-NEXT: ; def v[0:3]
511 ; GFX940-NEXT: ;;#ASMEND
512 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
513 ; GFX940-NEXT: ;;#ASMSTART
514 ; GFX940-NEXT: ; def v[4:7]
515 ; GFX940-NEXT: ;;#ASMEND
516 ; GFX940-NEXT: s_nop 0
517 ; GFX940-NEXT: v_mov_b32_e32 v2, v7
518 ; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
519 ; GFX940-NEXT: s_waitcnt vmcnt(0)
520 ; GFX940-NEXT: s_setpc_b64 s[30:31]
521 %vec0 = call <4 x i32> asm "; def $0", "=v"()
522 %vec1 = call <4 x i32> asm "; def $0", "=v"()
523 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 3>
524 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
528 define void @v_shuffle_v2i32_v4i32__7_4(ptr addrspace(1) inreg %ptr) {
529 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_4:
531 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
532 ; GFX900-NEXT: ;;#ASMSTART
533 ; GFX900-NEXT: ; def v[0:3]
534 ; GFX900-NEXT: ;;#ASMEND
535 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
536 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
537 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
538 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
539 ; GFX900-NEXT: s_waitcnt vmcnt(0)
540 ; GFX900-NEXT: s_setpc_b64 s[30:31]
542 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_4:
544 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
545 ; GFX90A-NEXT: ;;#ASMSTART
546 ; GFX90A-NEXT: ; def v[0:3]
547 ; GFX90A-NEXT: ;;#ASMEND
548 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
549 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
550 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
551 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
552 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
553 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
555 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_4:
557 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
558 ; GFX940-NEXT: ;;#ASMSTART
559 ; GFX940-NEXT: ; def v[0:3]
560 ; GFX940-NEXT: ;;#ASMEND
561 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
562 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
563 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
564 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
565 ; GFX940-NEXT: s_waitcnt vmcnt(0)
566 ; GFX940-NEXT: s_setpc_b64 s[30:31]
567 %vec0 = call <4 x i32> asm "; def $0", "=v"()
568 %vec1 = call <4 x i32> asm "; def $0", "=v"()
569 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 4>
570 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
574 define void @v_shuffle_v2i32_v4i32__7_5(ptr addrspace(1) inreg %ptr) {
575 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_5:
577 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
578 ; GFX900-NEXT: ;;#ASMSTART
579 ; GFX900-NEXT: ; def v[0:3]
580 ; GFX900-NEXT: ;;#ASMEND
581 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
582 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
583 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
584 ; GFX900-NEXT: s_waitcnt vmcnt(0)
585 ; GFX900-NEXT: s_setpc_b64 s[30:31]
587 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_5:
589 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
590 ; GFX90A-NEXT: ;;#ASMSTART
591 ; GFX90A-NEXT: ; def v[0:3]
592 ; GFX90A-NEXT: ;;#ASMEND
593 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
594 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
595 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
596 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
597 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
599 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_5:
601 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
602 ; GFX940-NEXT: ;;#ASMSTART
603 ; GFX940-NEXT: ; def v[0:3]
604 ; GFX940-NEXT: ;;#ASMEND
605 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
606 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
607 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
608 ; GFX940-NEXT: s_waitcnt vmcnt(0)
609 ; GFX940-NEXT: s_setpc_b64 s[30:31]
610 %vec0 = call <4 x i32> asm "; def $0", "=v"()
611 %vec1 = call <4 x i32> asm "; def $0", "=v"()
612 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 5>
613 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
617 define void @v_shuffle_v2i32_v4i32__7_6(ptr addrspace(1) inreg %ptr) {
618 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_6:
620 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
621 ; GFX900-NEXT: ;;#ASMSTART
622 ; GFX900-NEXT: ; def v[0:3]
623 ; GFX900-NEXT: ;;#ASMEND
624 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
625 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
626 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
627 ; GFX900-NEXT: s_waitcnt vmcnt(0)
628 ; GFX900-NEXT: s_setpc_b64 s[30:31]
630 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_6:
632 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
633 ; GFX90A-NEXT: ;;#ASMSTART
634 ; GFX90A-NEXT: ; def v[0:3]
635 ; GFX90A-NEXT: ;;#ASMEND
636 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
637 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]
638 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
639 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
640 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
642 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_6:
644 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
645 ; GFX940-NEXT: ;;#ASMSTART
646 ; GFX940-NEXT: ; def v[0:3]
647 ; GFX940-NEXT: ;;#ASMEND
648 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
649 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]
650 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
651 ; GFX940-NEXT: s_waitcnt vmcnt(0)
652 ; GFX940-NEXT: s_setpc_b64 s[30:31]
653 %vec0 = call <4 x i32> asm "; def $0", "=v"()
654 %vec1 = call <4 x i32> asm "; def $0", "=v"()
655 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 6>
656 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
660 define void @v_shuffle_v2i32_v4i32__7_7(ptr addrspace(1) inreg %ptr) {
661 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_7:
663 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
664 ; GFX900-NEXT: ;;#ASMSTART
665 ; GFX900-NEXT: ; def v[0:3]
666 ; GFX900-NEXT: ;;#ASMEND
667 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
668 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
669 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
670 ; GFX900-NEXT: s_waitcnt vmcnt(0)
671 ; GFX900-NEXT: s_setpc_b64 s[30:31]
673 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__7_7:
675 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
676 ; GFX90A-NEXT: ;;#ASMSTART
677 ; GFX90A-NEXT: ; def v[0:3]
678 ; GFX90A-NEXT: ;;#ASMEND
679 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
680 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
681 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
682 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
683 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
685 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__7_7:
687 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
688 ; GFX940-NEXT: ;;#ASMSTART
689 ; GFX940-NEXT: ; def v[0:3]
690 ; GFX940-NEXT: ;;#ASMEND
691 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
692 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
693 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
694 ; GFX940-NEXT: s_waitcnt vmcnt(0)
695 ; GFX940-NEXT: s_setpc_b64 s[30:31]
696 %vec0 = call <4 x i32> asm "; def $0", "=v"()
697 %vec1 = call <4 x i32> asm "; def $0", "=v"()
698 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 7>
699 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
703 define void @v_shuffle_v2i32_v4i32__u_0(ptr addrspace(1) inreg %ptr) {
704 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_0:
706 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
707 ; GFX900-NEXT: ;;#ASMSTART
708 ; GFX900-NEXT: ; def v[0:3]
709 ; GFX900-NEXT: ;;#ASMEND
710 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
711 ; GFX900-NEXT: v_mov_b32_e32 v1, v0
712 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
713 ; GFX900-NEXT: s_waitcnt vmcnt(0)
714 ; GFX900-NEXT: s_setpc_b64 s[30:31]
716 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__u_0:
718 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
719 ; GFX90A-NEXT: ;;#ASMSTART
720 ; GFX90A-NEXT: ; def v[0:3]
721 ; GFX90A-NEXT: ;;#ASMEND
722 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
723 ; GFX90A-NEXT: v_mov_b32_e32 v1, v0
724 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
725 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
726 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
728 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__u_0:
730 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
731 ; GFX940-NEXT: ;;#ASMSTART
732 ; GFX940-NEXT: ; def v[0:3]
733 ; GFX940-NEXT: ;;#ASMEND
734 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
735 ; GFX940-NEXT: v_mov_b32_e32 v1, v0
736 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
737 ; GFX940-NEXT: s_waitcnt vmcnt(0)
738 ; GFX940-NEXT: s_setpc_b64 s[30:31]
739 %vec0 = call <4 x i32> asm "; def $0", "=v"()
740 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 0>
741 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
745 define void @v_shuffle_v2i32_v4i32__0_0(ptr addrspace(1) inreg %ptr) {
746 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_0:
748 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
749 ; GFX900-NEXT: ;;#ASMSTART
750 ; GFX900-NEXT: ; def v[0:3]
751 ; GFX900-NEXT: ;;#ASMEND
752 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
753 ; GFX900-NEXT: v_mov_b32_e32 v1, v0
754 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
755 ; GFX900-NEXT: s_waitcnt vmcnt(0)
756 ; GFX900-NEXT: s_setpc_b64 s[30:31]
758 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_0:
760 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
761 ; GFX90A-NEXT: ;;#ASMSTART
762 ; GFX90A-NEXT: ; def v[0:3]
763 ; GFX90A-NEXT: ;;#ASMEND
764 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
765 ; GFX90A-NEXT: v_mov_b32_e32 v1, v0
766 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
767 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
768 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
770 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_0:
772 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
773 ; GFX940-NEXT: ;;#ASMSTART
774 ; GFX940-NEXT: ; def v[0:3]
775 ; GFX940-NEXT: ;;#ASMEND
776 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
777 ; GFX940-NEXT: v_mov_b32_e32 v1, v0
778 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
779 ; GFX940-NEXT: s_waitcnt vmcnt(0)
780 ; GFX940-NEXT: s_setpc_b64 s[30:31]
781 %vec0 = call <4 x i32> asm "; def $0", "=v"()
782 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> zeroinitializer
783 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
787 define void @v_shuffle_v2i32_v4i32__1_0(ptr addrspace(1) inreg %ptr) {
788 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_0:
790 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
791 ; GFX900-NEXT: ;;#ASMSTART
792 ; GFX900-NEXT: ; def v[0:3]
793 ; GFX900-NEXT: ;;#ASMEND
794 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
795 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
796 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
797 ; GFX900-NEXT: s_waitcnt vmcnt(0)
798 ; GFX900-NEXT: s_setpc_b64 s[30:31]
800 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_0:
802 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
803 ; GFX90A-NEXT: ;;#ASMSTART
804 ; GFX90A-NEXT: ; def v[0:3]
805 ; GFX90A-NEXT: ;;#ASMEND
806 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
807 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
808 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
809 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
810 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
812 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_0:
814 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
815 ; GFX940-NEXT: ;;#ASMSTART
816 ; GFX940-NEXT: ; def v[0:3]
817 ; GFX940-NEXT: ;;#ASMEND
818 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
819 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
820 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
821 ; GFX940-NEXT: s_waitcnt vmcnt(0)
822 ; GFX940-NEXT: s_setpc_b64 s[30:31]
823 %vec0 = call <4 x i32> asm "; def $0", "=v"()
824 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 0>
825 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
829 define void @v_shuffle_v2i32_v4i32__2_0(ptr addrspace(1) inreg %ptr) {
830 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_0:
832 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
833 ; GFX900-NEXT: ;;#ASMSTART
834 ; GFX900-NEXT: ; def v[0:3]
835 ; GFX900-NEXT: ;;#ASMEND
836 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
837 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
838 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
839 ; GFX900-NEXT: s_waitcnt vmcnt(0)
840 ; GFX900-NEXT: s_setpc_b64 s[30:31]
842 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_0:
844 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
845 ; GFX90A-NEXT: ;;#ASMSTART
846 ; GFX90A-NEXT: ; def v[0:3]
847 ; GFX90A-NEXT: ;;#ASMEND
848 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
849 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
850 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
851 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
852 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
854 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_0:
856 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857 ; GFX940-NEXT: ;;#ASMSTART
858 ; GFX940-NEXT: ; def v[0:3]
859 ; GFX940-NEXT: ;;#ASMEND
860 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
861 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
862 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
863 ; GFX940-NEXT: s_waitcnt vmcnt(0)
864 ; GFX940-NEXT: s_setpc_b64 s[30:31]
865 %vec0 = call <4 x i32> asm "; def $0", "=v"()
866 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 0>
867 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
871 define void @v_shuffle_v2i32_v4i32__3_0(ptr addrspace(1) inreg %ptr) {
872 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_0:
874 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
875 ; GFX900-NEXT: ;;#ASMSTART
876 ; GFX900-NEXT: ; def v[0:3]
877 ; GFX900-NEXT: ;;#ASMEND
878 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
879 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
880 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
881 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
882 ; GFX900-NEXT: s_waitcnt vmcnt(0)
883 ; GFX900-NEXT: s_setpc_b64 s[30:31]
885 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_0:
887 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
888 ; GFX90A-NEXT: ;;#ASMSTART
889 ; GFX90A-NEXT: ; def v[0:3]
890 ; GFX90A-NEXT: ;;#ASMEND
891 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
892 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
893 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
894 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
895 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
896 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
898 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_0:
900 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
901 ; GFX940-NEXT: ;;#ASMSTART
902 ; GFX940-NEXT: ; def v[0:3]
903 ; GFX940-NEXT: ;;#ASMEND
904 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
905 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
906 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
907 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
908 ; GFX940-NEXT: s_waitcnt vmcnt(0)
909 ; GFX940-NEXT: s_setpc_b64 s[30:31]
910 %vec0 = call <4 x i32> asm "; def $0", "=v"()
911 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 0>
912 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
916 define void @v_shuffle_v2i32_v4i32__4_0(ptr addrspace(1) inreg %ptr) {
917 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_0:
919 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
920 ; GFX900-NEXT: ;;#ASMSTART
921 ; GFX900-NEXT: ; def v[0:3]
922 ; GFX900-NEXT: ;;#ASMEND
923 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
924 ; GFX900-NEXT: v_mov_b32_e32 v1, v0
925 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
926 ; GFX900-NEXT: s_waitcnt vmcnt(0)
927 ; GFX900-NEXT: s_setpc_b64 s[30:31]
929 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__4_0:
931 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
932 ; GFX90A-NEXT: ;;#ASMSTART
933 ; GFX90A-NEXT: ; def v[0:3]
934 ; GFX90A-NEXT: ;;#ASMEND
935 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
936 ; GFX90A-NEXT: v_mov_b32_e32 v1, v0
937 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
938 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
939 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
941 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__4_0:
943 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
944 ; GFX940-NEXT: ;;#ASMSTART
945 ; GFX940-NEXT: ; def v[0:3]
946 ; GFX940-NEXT: ;;#ASMEND
947 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
948 ; GFX940-NEXT: v_mov_b32_e32 v1, v0
949 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
950 ; GFX940-NEXT: s_waitcnt vmcnt(0)
951 ; GFX940-NEXT: s_setpc_b64 s[30:31]
952 %vec0 = call <4 x i32> asm "; def $0", "=v"()
953 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 0>
954 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
958 define void @v_shuffle_v2i32_v4i32__5_0(ptr addrspace(1) inreg %ptr) {
959 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_0:
961 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
962 ; GFX900-NEXT: ;;#ASMSTART
963 ; GFX900-NEXT: ; def v[0:3]
964 ; GFX900-NEXT: ;;#ASMEND
965 ; GFX900-NEXT: ;;#ASMSTART
966 ; GFX900-NEXT: ; def v[1:4]
967 ; GFX900-NEXT: ;;#ASMEND
968 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
969 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
970 ; GFX900-NEXT: global_store_dwordx2 v5, v[2:3], s[16:17]
971 ; GFX900-NEXT: s_waitcnt vmcnt(0)
972 ; GFX900-NEXT: s_setpc_b64 s[30:31]
974 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_0:
976 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
977 ; GFX90A-NEXT: ;;#ASMSTART
978 ; GFX90A-NEXT: ; def v[0:3]
979 ; GFX90A-NEXT: ;;#ASMEND
980 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
981 ; GFX90A-NEXT: ;;#ASMSTART
982 ; GFX90A-NEXT: ; def v[2:5]
983 ; GFX90A-NEXT: ;;#ASMEND
984 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
985 ; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
986 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
987 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
989 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_0:
991 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
992 ; GFX940-NEXT: ;;#ASMSTART
993 ; GFX940-NEXT: ; def v[0:3]
994 ; GFX940-NEXT: ;;#ASMEND
995 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
996 ; GFX940-NEXT: ;;#ASMSTART
997 ; GFX940-NEXT: ; def v[2:5]
998 ; GFX940-NEXT: ;;#ASMEND
999 ; GFX940-NEXT: s_nop 0
1000 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
1001 ; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
1002 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1003 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1004 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1005 %vec1 = call <4 x i32> asm "; def $0", "=v"()
1006 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 0>
1007 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1011 define void @v_shuffle_v2i32_v4i32__6_0(ptr addrspace(1) inreg %ptr) {
1012 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_0:
1014 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1015 ; GFX900-NEXT: ;;#ASMSTART
1016 ; GFX900-NEXT: ; def v[0:3]
1017 ; GFX900-NEXT: ;;#ASMEND
1018 ; GFX900-NEXT: ;;#ASMSTART
1019 ; GFX900-NEXT: ; def v[1:4]
1020 ; GFX900-NEXT: ;;#ASMEND
1021 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1022 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
1023 ; GFX900-NEXT: global_store_dwordx2 v5, v[3:4], s[16:17]
1024 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1025 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1027 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_0:
1029 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1030 ; GFX90A-NEXT: ;;#ASMSTART
1031 ; GFX90A-NEXT: ; def v[0:3]
1032 ; GFX90A-NEXT: ;;#ASMEND
1033 ; GFX90A-NEXT: ;;#ASMSTART
1034 ; GFX90A-NEXT: ; def v[2:5]
1035 ; GFX90A-NEXT: ;;#ASMEND
1036 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1037 ; GFX90A-NEXT: v_mov_b32_e32 v5, v0
1038 ; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17]
1039 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1040 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1042 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_0:
1044 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1045 ; GFX940-NEXT: ;;#ASMSTART
1046 ; GFX940-NEXT: ; def v[0:3]
1047 ; GFX940-NEXT: ;;#ASMEND
1048 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1049 ; GFX940-NEXT: ;;#ASMSTART
1050 ; GFX940-NEXT: ; def v[2:5]
1051 ; GFX940-NEXT: ;;#ASMEND
1052 ; GFX940-NEXT: s_nop 0
1053 ; GFX940-NEXT: v_mov_b32_e32 v5, v0
1054 ; GFX940-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1
1055 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1056 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1057 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1058 %vec1 = call <4 x i32> asm "; def $0", "=v"()
1059 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 0>
1060 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1064 define void @v_shuffle_v2i32_v4i32__u_1(ptr addrspace(1) inreg %ptr) {
1065 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_1:
1067 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1068 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1069 ; GFX900-NEXT: ;;#ASMSTART
1070 ; GFX900-NEXT: ; def v[0:3]
1071 ; GFX900-NEXT: ;;#ASMEND
1072 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1073 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1074 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1076 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__u_1:
1078 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1079 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1080 ; GFX90A-NEXT: ;;#ASMSTART
1081 ; GFX90A-NEXT: ; def v[0:3]
1082 ; GFX90A-NEXT: ;;#ASMEND
1083 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1084 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1085 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1087 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__u_1:
1089 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1090 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1091 ; GFX940-NEXT: ;;#ASMSTART
1092 ; GFX940-NEXT: ; def v[0:3]
1093 ; GFX940-NEXT: ;;#ASMEND
1094 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1095 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1096 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1097 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1098 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 1>
1099 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1103 define void @v_shuffle_v2i32_v4i32__0_1(ptr addrspace(1) inreg %ptr) {
1104 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_1:
1106 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1107 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1108 ; GFX900-NEXT: ;;#ASMSTART
1109 ; GFX900-NEXT: ; def v[0:3]
1110 ; GFX900-NEXT: ;;#ASMEND
1111 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1112 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1113 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1115 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_1:
1117 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1118 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1119 ; GFX90A-NEXT: ;;#ASMSTART
1120 ; GFX90A-NEXT: ; def v[0:3]
1121 ; GFX90A-NEXT: ;;#ASMEND
1122 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1123 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1124 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1126 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_1:
1128 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1129 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1130 ; GFX940-NEXT: ;;#ASMSTART
1131 ; GFX940-NEXT: ; def v[0:3]
1132 ; GFX940-NEXT: ;;#ASMEND
1133 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1134 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1135 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1136 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1137 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 1>
1138 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1142 define void @v_shuffle_v2i32_v4i32__1_1(ptr addrspace(1) inreg %ptr) {
1143 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_1:
1145 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1146 ; GFX900-NEXT: ;;#ASMSTART
1147 ; GFX900-NEXT: ; def v[0:3]
1148 ; GFX900-NEXT: ;;#ASMEND
1149 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1150 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
1151 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
1152 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1153 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1155 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_1:
1157 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1158 ; GFX90A-NEXT: ;;#ASMSTART
1159 ; GFX90A-NEXT: ; def v[0:3]
1160 ; GFX90A-NEXT: ;;#ASMEND
1161 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1162 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
1163 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1164 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1165 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1167 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_1:
1169 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1170 ; GFX940-NEXT: ;;#ASMSTART
1171 ; GFX940-NEXT: ; def v[0:3]
1172 ; GFX940-NEXT: ;;#ASMEND
1173 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1174 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
1175 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1176 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1177 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1178 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1179 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 1>
1180 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1184 define void @v_shuffle_v2i32_v4i32__2_1(ptr addrspace(1) inreg %ptr) {
1185 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_1:
1187 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1188 ; GFX900-NEXT: ;;#ASMSTART
1189 ; GFX900-NEXT: ; def v[0:3]
1190 ; GFX900-NEXT: ;;#ASMEND
1191 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1192 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
1193 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1194 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1195 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1197 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_1:
1199 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1200 ; GFX90A-NEXT: ;;#ASMSTART
1201 ; GFX90A-NEXT: ; def v[0:3]
1202 ; GFX90A-NEXT: ;;#ASMEND
1203 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1204 ; GFX90A-NEXT: v_mov_b32_e32 v3, v1
1205 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1206 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1207 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1209 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_1:
1211 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1212 ; GFX940-NEXT: ;;#ASMSTART
1213 ; GFX940-NEXT: ; def v[0:3]
1214 ; GFX940-NEXT: ;;#ASMEND
1215 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1216 ; GFX940-NEXT: v_mov_b32_e32 v3, v1
1217 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
1218 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1219 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1220 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1221 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 1>
1222 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1226 define void @v_shuffle_v2i32_v4i32__3_1(ptr addrspace(1) inreg %ptr) {
1227 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_1:
1229 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1230 ; GFX900-NEXT: ;;#ASMSTART
1231 ; GFX900-NEXT: ; def v[0:3]
1232 ; GFX900-NEXT: ;;#ASMEND
1233 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1234 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
1235 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1236 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1237 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1239 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_1:
1241 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1242 ; GFX90A-NEXT: ;;#ASMSTART
1243 ; GFX90A-NEXT: ; def v[0:3]
1244 ; GFX90A-NEXT: ;;#ASMEND
1245 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1246 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
1247 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1248 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1249 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1251 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_1:
1253 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1254 ; GFX940-NEXT: ;;#ASMSTART
1255 ; GFX940-NEXT: ; def v[0:3]
1256 ; GFX940-NEXT: ;;#ASMEND
1257 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1258 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
1259 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1260 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1261 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1262 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1263 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 1>
1264 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1268 define void @v_shuffle_v2i32_v4i32__4_1(ptr addrspace(1) inreg %ptr) {
1269 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_1:
1271 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1272 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1273 ; GFX900-NEXT: ;;#ASMSTART
1274 ; GFX900-NEXT: ; def v[0:3]
1275 ; GFX900-NEXT: ;;#ASMEND
1276 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1277 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1278 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1280 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__4_1:
1282 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1283 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1284 ; GFX90A-NEXT: ;;#ASMSTART
1285 ; GFX90A-NEXT: ; def v[0:3]
1286 ; GFX90A-NEXT: ;;#ASMEND
1287 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1288 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1289 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1291 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__4_1:
1293 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1294 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1295 ; GFX940-NEXT: ;;#ASMSTART
1296 ; GFX940-NEXT: ; def v[0:3]
1297 ; GFX940-NEXT: ;;#ASMEND
1298 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1299 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1300 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1301 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1302 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 1>
1303 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1307 define void @v_shuffle_v2i32_v4i32__5_1(ptr addrspace(1) inreg %ptr) {
1308 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_1:
1310 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1311 ; GFX900-NEXT: ;;#ASMSTART
1312 ; GFX900-NEXT: ; def v[0:3]
1313 ; GFX900-NEXT: ;;#ASMEND
1314 ; GFX900-NEXT: ;;#ASMSTART
1315 ; GFX900-NEXT: ; def v[2:5]
1316 ; GFX900-NEXT: ;;#ASMEND
1317 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
1318 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
1319 ; GFX900-NEXT: global_store_dwordx2 v6, v[3:4], s[16:17]
1320 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1321 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1323 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_1:
1325 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1326 ; GFX90A-NEXT: ;;#ASMSTART
1327 ; GFX90A-NEXT: ; def v[0:3]
1328 ; GFX90A-NEXT: ;;#ASMEND
1329 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1330 ; GFX90A-NEXT: ;;#ASMSTART
1331 ; GFX90A-NEXT: ; def v[2:5]
1332 ; GFX90A-NEXT: ;;#ASMEND
1333 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
1334 ; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
1335 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1336 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1338 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_1:
1340 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1341 ; GFX940-NEXT: ;;#ASMSTART
1342 ; GFX940-NEXT: ; def v[0:3]
1343 ; GFX940-NEXT: ;;#ASMEND
1344 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1345 ; GFX940-NEXT: ;;#ASMSTART
1346 ; GFX940-NEXT: ; def v[2:5]
1347 ; GFX940-NEXT: ;;#ASMEND
1348 ; GFX940-NEXT: s_nop 0
1349 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
1350 ; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
1351 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1352 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1353 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1354 %vec1 = call <4 x i32> asm "; def $0", "=v"()
1355 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 1>
1356 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1360 define void @v_shuffle_v2i32_v4i32__6_1(ptr addrspace(1) inreg %ptr) {
1361 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_1:
1363 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1364 ; GFX900-NEXT: ;;#ASMSTART
1365 ; GFX900-NEXT: ; def v[0:3]
1366 ; GFX900-NEXT: ;;#ASMEND
1367 ; GFX900-NEXT: ;;#ASMSTART
1368 ; GFX900-NEXT: ; def v[2:5]
1369 ; GFX900-NEXT: ;;#ASMEND
1370 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
1371 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
1372 ; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17]
1373 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1374 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1376 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_1:
1378 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1379 ; GFX90A-NEXT: ;;#ASMSTART
1380 ; GFX90A-NEXT: ; def v[0:3]
1381 ; GFX90A-NEXT: ;;#ASMEND
1382 ; GFX90A-NEXT: ;;#ASMSTART
1383 ; GFX90A-NEXT: ; def v[2:5]
1384 ; GFX90A-NEXT: ;;#ASMEND
1385 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1386 ; GFX90A-NEXT: v_mov_b32_e32 v5, v1
1387 ; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17]
1388 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1389 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1391 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_1:
1393 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1394 ; GFX940-NEXT: ;;#ASMSTART
1395 ; GFX940-NEXT: ; def v[0:3]
1396 ; GFX940-NEXT: ;;#ASMEND
1397 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1398 ; GFX940-NEXT: ;;#ASMSTART
1399 ; GFX940-NEXT: ; def v[2:5]
1400 ; GFX940-NEXT: ;;#ASMEND
1401 ; GFX940-NEXT: s_nop 0
1402 ; GFX940-NEXT: v_mov_b32_e32 v5, v1
1403 ; GFX940-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1
1404 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1405 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1406 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1407 %vec1 = call <4 x i32> asm "; def $0", "=v"()
1408 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 1>
1409 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1413 define void @v_shuffle_v2i32_v4i32__u_2(ptr addrspace(1) inreg %ptr) {
1414 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_2:
1416 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1417 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1418 ; GFX900-NEXT: ;;#ASMSTART
1419 ; GFX900-NEXT: ; def v[0:3]
1420 ; GFX900-NEXT: ;;#ASMEND
1421 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
1422 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1423 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1425 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__u_2:
1427 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1428 ; GFX90A-NEXT: ;;#ASMSTART
1429 ; GFX90A-NEXT: ; def v[0:3]
1430 ; GFX90A-NEXT: ;;#ASMEND
1431 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1432 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
1433 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1434 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1435 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1437 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__u_2:
1439 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1440 ; GFX940-NEXT: ;;#ASMSTART
1441 ; GFX940-NEXT: ; def v[0:3]
1442 ; GFX940-NEXT: ;;#ASMEND
1443 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1444 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
1445 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1446 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1447 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1448 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1449 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 2>
1450 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1454 define void @v_shuffle_v2i32_v4i32__0_2(ptr addrspace(1) inreg %ptr) {
1455 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_2:
1457 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1458 ; GFX900-NEXT: ;;#ASMSTART
1459 ; GFX900-NEXT: ; def v[0:3]
1460 ; GFX900-NEXT: ;;#ASMEND
1461 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1462 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
1463 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1464 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1465 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1467 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_2:
1469 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1470 ; GFX90A-NEXT: ;;#ASMSTART
1471 ; GFX90A-NEXT: ; def v[0:3]
1472 ; GFX90A-NEXT: ;;#ASMEND
1473 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1474 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
1475 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1476 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1477 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1479 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_2:
1481 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1482 ; GFX940-NEXT: ;;#ASMSTART
1483 ; GFX940-NEXT: ; def v[0:3]
1484 ; GFX940-NEXT: ;;#ASMEND
1485 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1486 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
1487 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1488 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1489 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1490 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1491 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 2>
1492 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1496 define void @v_shuffle_v2i32_v4i32__1_2(ptr addrspace(1) inreg %ptr) {
1497 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_2:
1499 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1500 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1501 ; GFX900-NEXT: ;;#ASMSTART
1502 ; GFX900-NEXT: ; def v[0:3]
1503 ; GFX900-NEXT: ;;#ASMEND
1504 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
1505 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1506 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1508 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_2:
1510 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1511 ; GFX90A-NEXT: ;;#ASMSTART
1512 ; GFX90A-NEXT: ; def v[0:3]
1513 ; GFX90A-NEXT: ;;#ASMEND
1514 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1515 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
1516 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
1517 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1518 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1519 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1521 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_2:
1523 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1524 ; GFX940-NEXT: ;;#ASMSTART
1525 ; GFX940-NEXT: ; def v[0:3]
1526 ; GFX940-NEXT: ;;#ASMEND
1527 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1528 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
1529 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
1530 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1531 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1532 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1533 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1534 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 2>
1535 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1539 define void @v_shuffle_v2i32_v4i32__2_2(ptr addrspace(1) inreg %ptr) {
1540 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_2:
1542 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1543 ; GFX900-NEXT: ;;#ASMSTART
1544 ; GFX900-NEXT: ; def v[0:3]
1545 ; GFX900-NEXT: ;;#ASMEND
1546 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1547 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
1548 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1549 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1550 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1552 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_2:
1554 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1555 ; GFX90A-NEXT: ;;#ASMSTART
1556 ; GFX90A-NEXT: ; def v[0:3]
1557 ; GFX90A-NEXT: ;;#ASMEND
1558 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1559 ; GFX90A-NEXT: v_mov_b32_e32 v3, v2
1560 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1561 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1562 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1564 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_2:
1566 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1567 ; GFX940-NEXT: ;;#ASMSTART
1568 ; GFX940-NEXT: ; def v[0:3]
1569 ; GFX940-NEXT: ;;#ASMEND
1570 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1571 ; GFX940-NEXT: v_mov_b32_e32 v3, v2
1572 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
1573 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1574 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1575 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1576 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 2>
1577 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1581 define void @v_shuffle_v2i32_v4i32__3_2(ptr addrspace(1) inreg %ptr) {
1582 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_2:
1584 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1585 ; GFX900-NEXT: ;;#ASMSTART
1586 ; GFX900-NEXT: ; def v[0:3]
1587 ; GFX900-NEXT: ;;#ASMEND
1588 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1589 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
1590 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
1591 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1592 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1594 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_2:
1596 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1597 ; GFX90A-NEXT: ;;#ASMSTART
1598 ; GFX90A-NEXT: ; def v[0:3]
1599 ; GFX90A-NEXT: ;;#ASMEND
1600 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1601 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]
1602 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1603 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1604 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1606 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_2:
1608 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1609 ; GFX940-NEXT: ;;#ASMSTART
1610 ; GFX940-NEXT: ; def v[0:3]
1611 ; GFX940-NEXT: ;;#ASMEND
1612 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1613 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]
1614 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1615 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1616 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1617 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1618 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 2>
1619 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1623 define void @v_shuffle_v2i32_v4i32__4_2(ptr addrspace(1) inreg %ptr) {
1624 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_2:
1626 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1627 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1628 ; GFX900-NEXT: ;;#ASMSTART
1629 ; GFX900-NEXT: ; def v[0:3]
1630 ; GFX900-NEXT: ;;#ASMEND
1631 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
1632 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1633 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1635 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__4_2:
1637 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1638 ; GFX90A-NEXT: ;;#ASMSTART
1639 ; GFX90A-NEXT: ; def v[0:3]
1640 ; GFX90A-NEXT: ;;#ASMEND
1641 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1642 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
1643 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1644 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1645 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1647 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__4_2:
1649 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1650 ; GFX940-NEXT: ;;#ASMSTART
1651 ; GFX940-NEXT: ; def v[0:3]
1652 ; GFX940-NEXT: ;;#ASMEND
1653 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1654 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
1655 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1656 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1657 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1658 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1659 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 2>
1660 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1664 define void @v_shuffle_v2i32_v4i32__5_2(ptr addrspace(1) inreg %ptr) {
1665 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_2:
1667 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1668 ; GFX900-NEXT: ;;#ASMSTART
1669 ; GFX900-NEXT: ; def v[0:3]
1670 ; GFX900-NEXT: ;;#ASMEND
1671 ; GFX900-NEXT: ;;#ASMSTART
1672 ; GFX900-NEXT: ; def v[3:6]
1673 ; GFX900-NEXT: ;;#ASMEND
1674 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
1675 ; GFX900-NEXT: v_mov_b32_e32 v5, v2
1676 ; GFX900-NEXT: global_store_dwordx2 v7, v[4:5], s[16:17]
1677 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1678 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1680 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_2:
1682 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1683 ; GFX90A-NEXT: ;;#ASMSTART
1684 ; GFX90A-NEXT: ; def v[0:3]
1685 ; GFX90A-NEXT: ;;#ASMEND
1686 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
1687 ; GFX90A-NEXT: ;;#ASMSTART
1688 ; GFX90A-NEXT: ; def v[4:7]
1689 ; GFX90A-NEXT: ;;#ASMEND
1690 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]
1691 ; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17]
1692 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1693 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1695 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_2:
1697 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1698 ; GFX940-NEXT: ;;#ASMSTART
1699 ; GFX940-NEXT: ; def v[0:3]
1700 ; GFX940-NEXT: ;;#ASMEND
1701 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
1702 ; GFX940-NEXT: ;;#ASMSTART
1703 ; GFX940-NEXT: ; def v[4:7]
1704 ; GFX940-NEXT: ;;#ASMEND
1705 ; GFX940-NEXT: s_nop 0
1706 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]
1707 ; GFX940-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] sc0 sc1
1708 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1709 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1710 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1711 %vec1 = call <4 x i32> asm "; def $0", "=v"()
1712 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 2>
1713 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1717 define void @v_shuffle_v2i32_v4i32__6_2(ptr addrspace(1) inreg %ptr) {
1718 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_2:
1720 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1721 ; GFX900-NEXT: ;;#ASMSTART
1722 ; GFX900-NEXT: ; def v[0:3]
1723 ; GFX900-NEXT: ;;#ASMEND
1724 ; GFX900-NEXT: ;;#ASMSTART
1725 ; GFX900-NEXT: ; def v[3:6]
1726 ; GFX900-NEXT: ;;#ASMEND
1727 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
1728 ; GFX900-NEXT: v_mov_b32_e32 v6, v2
1729 ; GFX900-NEXT: global_store_dwordx2 v7, v[5:6], s[16:17]
1730 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1731 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1733 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_2:
1735 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1736 ; GFX90A-NEXT: ;;#ASMSTART
1737 ; GFX90A-NEXT: ; def v[4:7]
1738 ; GFX90A-NEXT: ;;#ASMEND
1739 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
1740 ; GFX90A-NEXT: ;;#ASMSTART
1741 ; GFX90A-NEXT: ; def v[0:3]
1742 ; GFX90A-NEXT: ;;#ASMEND
1743 ; GFX90A-NEXT: v_mov_b32_e32 v7, v2
1744 ; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17]
1745 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1746 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1748 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_2:
1750 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1751 ; GFX940-NEXT: ;;#ASMSTART
1752 ; GFX940-NEXT: ; def v[4:7]
1753 ; GFX940-NEXT: ;;#ASMEND
1754 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
1755 ; GFX940-NEXT: ;;#ASMSTART
1756 ; GFX940-NEXT: ; def v[0:3]
1757 ; GFX940-NEXT: ;;#ASMEND
1758 ; GFX940-NEXT: s_nop 0
1759 ; GFX940-NEXT: v_mov_b32_e32 v7, v2
1760 ; GFX940-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1
1761 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1762 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1763 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1764 %vec1 = call <4 x i32> asm "; def $0", "=v"()
1765 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 2>
1766 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1770 define void @v_shuffle_v2i32_v4i32__u_3(ptr addrspace(1) inreg %ptr) {
1771 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_3:
1773 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1774 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1775 ; GFX900-NEXT: ;;#ASMSTART
1776 ; GFX900-NEXT: ; def v[0:3]
1777 ; GFX900-NEXT: ;;#ASMEND
1778 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1779 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1780 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1782 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__u_3:
1784 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1785 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1786 ; GFX90A-NEXT: ;;#ASMSTART
1787 ; GFX90A-NEXT: ; def v[0:3]
1788 ; GFX90A-NEXT: ;;#ASMEND
1789 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1790 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1791 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1793 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__u_3:
1795 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1796 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1797 ; GFX940-NEXT: ;;#ASMSTART
1798 ; GFX940-NEXT: ; def v[0:3]
1799 ; GFX940-NEXT: ;;#ASMEND
1800 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
1801 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1802 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1803 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1804 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 3>
1805 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1809 define void @v_shuffle_v2i32_v4i32__0_3(ptr addrspace(1) inreg %ptr) {
1810 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_3:
1812 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1813 ; GFX900-NEXT: ;;#ASMSTART
1814 ; GFX900-NEXT: ; def v[0:3]
1815 ; GFX900-NEXT: ;;#ASMEND
1816 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1817 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
1818 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1819 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1820 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1822 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_3:
1824 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1825 ; GFX90A-NEXT: ;;#ASMSTART
1826 ; GFX90A-NEXT: ; def v[0:3]
1827 ; GFX90A-NEXT: ;;#ASMEND
1828 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1829 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
1830 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
1831 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1832 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1834 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_3:
1836 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1837 ; GFX940-NEXT: ;;#ASMSTART
1838 ; GFX940-NEXT: ; def v[0:3]
1839 ; GFX940-NEXT: ;;#ASMEND
1840 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1841 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
1842 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1843 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1844 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1845 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1846 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 3>
1847 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1851 define void @v_shuffle_v2i32_v4i32__1_3(ptr addrspace(1) inreg %ptr) {
1852 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_3:
1854 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1855 ; GFX900-NEXT: ;;#ASMSTART
1856 ; GFX900-NEXT: ; def v[0:3]
1857 ; GFX900-NEXT: ;;#ASMEND
1858 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1859 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
1860 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
1861 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1862 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1864 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_3:
1866 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1867 ; GFX90A-NEXT: ;;#ASMSTART
1868 ; GFX90A-NEXT: ; def v[0:3]
1869 ; GFX90A-NEXT: ;;#ASMEND
1870 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1871 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
1872 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1873 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1874 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1876 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_3:
1878 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1879 ; GFX940-NEXT: ;;#ASMSTART
1880 ; GFX940-NEXT: ; def v[0:3]
1881 ; GFX940-NEXT: ;;#ASMEND
1882 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1883 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
1884 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
1885 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1886 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1887 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1888 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 3>
1889 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1893 define void @v_shuffle_v2i32_v4i32__2_3(ptr addrspace(1) inreg %ptr) {
1894 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_3:
1896 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1897 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1898 ; GFX900-NEXT: ;;#ASMSTART
1899 ; GFX900-NEXT: ; def v[0:3]
1900 ; GFX900-NEXT: ;;#ASMEND
1901 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1902 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1903 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1905 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_3:
1907 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1908 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1909 ; GFX90A-NEXT: ;;#ASMSTART
1910 ; GFX90A-NEXT: ; def v[0:3]
1911 ; GFX90A-NEXT: ;;#ASMEND
1912 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1913 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1914 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1916 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_3:
1918 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1919 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1920 ; GFX940-NEXT: ;;#ASMSTART
1921 ; GFX940-NEXT: ; def v[0:3]
1922 ; GFX940-NEXT: ;;#ASMEND
1923 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
1924 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1925 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1926 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1927 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 3>
1928 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1932 define void @v_shuffle_v2i32_v4i32__3_3(ptr addrspace(1) inreg %ptr) {
1933 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_3:
1935 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1936 ; GFX900-NEXT: ;;#ASMSTART
1937 ; GFX900-NEXT: ; def v[0:3]
1938 ; GFX900-NEXT: ;;#ASMEND
1939 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1940 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
1941 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1942 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1943 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1945 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_3:
1947 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1948 ; GFX90A-NEXT: ;;#ASMSTART
1949 ; GFX90A-NEXT: ; def v[0:3]
1950 ; GFX90A-NEXT: ;;#ASMEND
1951 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1952 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
1953 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1954 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1955 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1957 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_3:
1959 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1960 ; GFX940-NEXT: ;;#ASMSTART
1961 ; GFX940-NEXT: ; def v[0:3]
1962 ; GFX940-NEXT: ;;#ASMEND
1963 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1964 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
1965 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
1966 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1967 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1968 %vec0 = call <4 x i32> asm "; def $0", "=v"()
1969 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 3>
1970 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1974 define void @v_shuffle_v2i32_v4i32__4_3(ptr addrspace(1) inreg %ptr) {
1975 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_3:
1977 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1978 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1979 ; GFX900-NEXT: ;;#ASMSTART
1980 ; GFX900-NEXT: ; def v[0:3]
1981 ; GFX900-NEXT: ;;#ASMEND
1982 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1983 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1984 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1986 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__4_3:
1988 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1989 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1990 ; GFX90A-NEXT: ;;#ASMSTART
1991 ; GFX90A-NEXT: ; def v[0:3]
1992 ; GFX90A-NEXT: ;;#ASMEND
1993 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
1994 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1995 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1997 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__4_3:
1999 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2000 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2001 ; GFX940-NEXT: ;;#ASMSTART
2002 ; GFX940-NEXT: ; def v[0:3]
2003 ; GFX940-NEXT: ;;#ASMEND
2004 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
2005 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2006 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2007 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2008 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 3>
2009 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2013 define void @v_shuffle_v2i32_v4i32__5_3(ptr addrspace(1) inreg %ptr) {
2014 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_3:
2016 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2017 ; GFX900-NEXT: ;;#ASMSTART
2018 ; GFX900-NEXT: ; def v[4:7]
2019 ; GFX900-NEXT: ;;#ASMEND
2020 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
2021 ; GFX900-NEXT: ;;#ASMSTART
2022 ; GFX900-NEXT: ; def v[0:3]
2023 ; GFX900-NEXT: ;;#ASMEND
2024 ; GFX900-NEXT: v_mov_b32_e32 v6, v3
2025 ; GFX900-NEXT: global_store_dwordx2 v8, v[5:6], s[16:17]
2026 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2027 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2029 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_3:
2031 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2032 ; GFX90A-NEXT: ;;#ASMSTART
2033 ; GFX90A-NEXT: ; def v[0:3]
2034 ; GFX90A-NEXT: ;;#ASMEND
2035 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
2036 ; GFX90A-NEXT: ;;#ASMSTART
2037 ; GFX90A-NEXT: ; def v[4:7]
2038 ; GFX90A-NEXT: ;;#ASMEND
2039 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
2040 ; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17]
2041 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2042 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2044 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_3:
2046 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2047 ; GFX940-NEXT: ;;#ASMSTART
2048 ; GFX940-NEXT: ; def v[0:3]
2049 ; GFX940-NEXT: ;;#ASMEND
2050 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
2051 ; GFX940-NEXT: ;;#ASMSTART
2052 ; GFX940-NEXT: ; def v[4:7]
2053 ; GFX940-NEXT: ;;#ASMEND
2054 ; GFX940-NEXT: s_nop 0
2055 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
2056 ; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
2057 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2058 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2059 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2060 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2061 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 3>
2062 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2066 define void @v_shuffle_v2i32_v4i32__6_3(ptr addrspace(1) inreg %ptr) {
2067 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_3:
2069 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2070 ; GFX900-NEXT: ;;#ASMSTART
2071 ; GFX900-NEXT: ; def v[4:7]
2072 ; GFX900-NEXT: ;;#ASMEND
2073 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
2074 ; GFX900-NEXT: ;;#ASMSTART
2075 ; GFX900-NEXT: ; def v[0:3]
2076 ; GFX900-NEXT: ;;#ASMEND
2077 ; GFX900-NEXT: v_mov_b32_e32 v7, v3
2078 ; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17]
2079 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2080 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2082 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_3:
2084 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2085 ; GFX90A-NEXT: ;;#ASMSTART
2086 ; GFX90A-NEXT: ; def v[4:7]
2087 ; GFX90A-NEXT: ;;#ASMEND
2088 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
2089 ; GFX90A-NEXT: ;;#ASMSTART
2090 ; GFX90A-NEXT: ; def v[0:3]
2091 ; GFX90A-NEXT: ;;#ASMEND
2092 ; GFX90A-NEXT: v_mov_b32_e32 v7, v3
2093 ; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17]
2094 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2095 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2097 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_3:
2099 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2100 ; GFX940-NEXT: ;;#ASMSTART
2101 ; GFX940-NEXT: ; def v[4:7]
2102 ; GFX940-NEXT: ;;#ASMEND
2103 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
2104 ; GFX940-NEXT: ;;#ASMSTART
2105 ; GFX940-NEXT: ; def v[0:3]
2106 ; GFX940-NEXT: ;;#ASMEND
2107 ; GFX940-NEXT: s_nop 0
2108 ; GFX940-NEXT: v_mov_b32_e32 v7, v3
2109 ; GFX940-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1
2110 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2111 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2112 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2113 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2114 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 3>
2115 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2119 define void @v_shuffle_v2i32_v4i32__u_4(ptr addrspace(1) inreg %ptr) {
2120 ; GFX9-LABEL: v_shuffle_v2i32_v4i32__u_4:
2122 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2123 ; GFX9-NEXT: s_setpc_b64 s[30:31]
2124 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2125 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 4>
2126 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2130 define void @v_shuffle_v2i32_v4i32__0_4(ptr addrspace(1) inreg %ptr) {
2131 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_4:
2133 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2134 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2135 ; GFX900-NEXT: ;;#ASMSTART
2136 ; GFX900-NEXT: ; def v[0:3]
2137 ; GFX900-NEXT: ;;#ASMEND
2138 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2139 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2140 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2142 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_4:
2144 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2145 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2146 ; GFX90A-NEXT: ;;#ASMSTART
2147 ; GFX90A-NEXT: ; def v[0:3]
2148 ; GFX90A-NEXT: ;;#ASMEND
2149 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2150 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2151 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2153 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_4:
2155 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2156 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2157 ; GFX940-NEXT: ;;#ASMSTART
2158 ; GFX940-NEXT: ; def v[0:3]
2159 ; GFX940-NEXT: ;;#ASMEND
2160 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2161 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2162 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2163 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2164 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 4>
2165 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2169 define void @v_shuffle_v2i32_v4i32__1_4(ptr addrspace(1) inreg %ptr) {
2170 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_4:
2172 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2173 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2174 ; GFX900-NEXT: ;;#ASMSTART
2175 ; GFX900-NEXT: ; def v[0:3]
2176 ; GFX900-NEXT: ;;#ASMEND
2177 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
2178 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2179 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2181 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_4:
2183 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2184 ; GFX90A-NEXT: ;;#ASMSTART
2185 ; GFX90A-NEXT: ; def v[0:3]
2186 ; GFX90A-NEXT: ;;#ASMEND
2187 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2188 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
2189 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2190 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2191 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2193 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_4:
2195 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2196 ; GFX940-NEXT: ;;#ASMSTART
2197 ; GFX940-NEXT: ; def v[0:3]
2198 ; GFX940-NEXT: ;;#ASMEND
2199 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2200 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
2201 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2202 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2203 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2204 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2205 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 4>
2206 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2210 define void @v_shuffle_v2i32_v4i32__2_4(ptr addrspace(1) inreg %ptr) {
2211 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_4:
2213 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2214 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2215 ; GFX900-NEXT: ;;#ASMSTART
2216 ; GFX900-NEXT: ; def v[0:3]
2217 ; GFX900-NEXT: ;;#ASMEND
2218 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
2219 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2220 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2222 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_4:
2224 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2225 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2226 ; GFX90A-NEXT: ;;#ASMSTART
2227 ; GFX90A-NEXT: ; def v[0:3]
2228 ; GFX90A-NEXT: ;;#ASMEND
2229 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
2230 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2231 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2233 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_4:
2235 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2236 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2237 ; GFX940-NEXT: ;;#ASMSTART
2238 ; GFX940-NEXT: ; def v[0:3]
2239 ; GFX940-NEXT: ;;#ASMEND
2240 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
2241 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2242 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2243 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2244 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 4>
2245 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2249 define void @v_shuffle_v2i32_v4i32__3_4(ptr addrspace(1) inreg %ptr) {
2250 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_4:
2252 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2253 ; GFX900-NEXT: ;;#ASMSTART
2254 ; GFX900-NEXT: ; def v[0:3]
2255 ; GFX900-NEXT: ;;#ASMEND
2256 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2257 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
2258 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2259 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2260 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2262 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_4:
2264 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2265 ; GFX90A-NEXT: ;;#ASMSTART
2266 ; GFX90A-NEXT: ; def v[0:3]
2267 ; GFX90A-NEXT: ;;#ASMEND
2268 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2269 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
2270 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2271 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2272 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2274 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_4:
2276 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2277 ; GFX940-NEXT: ;;#ASMSTART
2278 ; GFX940-NEXT: ; def v[0:3]
2279 ; GFX940-NEXT: ;;#ASMEND
2280 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2281 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
2282 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2283 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2284 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2285 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2286 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 4>
2287 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2291 define void @v_shuffle_v2i32_v4i32__4_4(ptr addrspace(1) inreg %ptr) {
2292 ; GFX9-LABEL: v_shuffle_v2i32_v4i32__4_4:
2294 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2295 ; GFX9-NEXT: s_setpc_b64 s[30:31]
2296 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2297 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 4>
2298 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2302 define void @v_shuffle_v2i32_v4i32__5_4(ptr addrspace(1) inreg %ptr) {
2303 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_4:
2305 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2306 ; GFX900-NEXT: ;;#ASMSTART
2307 ; GFX900-NEXT: ; def v[0:3]
2308 ; GFX900-NEXT: ;;#ASMEND
2309 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2310 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
2311 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
2312 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2313 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2315 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_4:
2317 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2318 ; GFX90A-NEXT: ;;#ASMSTART
2319 ; GFX90A-NEXT: ; def v[0:3]
2320 ; GFX90A-NEXT: ;;#ASMEND
2321 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2322 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
2323 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2324 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2325 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2327 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_4:
2329 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2330 ; GFX940-NEXT: ;;#ASMSTART
2331 ; GFX940-NEXT: ; def v[0:3]
2332 ; GFX940-NEXT: ;;#ASMEND
2333 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2334 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
2335 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2336 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2337 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2338 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2339 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2340 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 4>
2341 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2345 define void @v_shuffle_v2i32_v4i32__6_4(ptr addrspace(1) inreg %ptr) {
2346 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_4:
2348 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2349 ; GFX900-NEXT: ;;#ASMSTART
2350 ; GFX900-NEXT: ; def v[0:3]
2351 ; GFX900-NEXT: ;;#ASMEND
2352 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2353 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
2354 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
2355 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2356 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2358 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_4:
2360 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2361 ; GFX90A-NEXT: ;;#ASMSTART
2362 ; GFX90A-NEXT: ; def v[0:3]
2363 ; GFX90A-NEXT: ;;#ASMEND
2364 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2365 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
2366 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
2367 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2368 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2370 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_4:
2372 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2373 ; GFX940-NEXT: ;;#ASMSTART
2374 ; GFX940-NEXT: ; def v[0:3]
2375 ; GFX940-NEXT: ;;#ASMEND
2376 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2377 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
2378 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
2379 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2380 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2381 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2382 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2383 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 4>
2384 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2388 define void @v_shuffle_v2i32_v4i32__u_5(ptr addrspace(1) inreg %ptr) {
2389 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_5:
2391 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2392 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2393 ; GFX900-NEXT: ;;#ASMSTART
2394 ; GFX900-NEXT: ; def v[0:3]
2395 ; GFX900-NEXT: ;;#ASMEND
2396 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2397 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2398 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2400 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__u_5:
2402 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2403 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2404 ; GFX90A-NEXT: ;;#ASMSTART
2405 ; GFX90A-NEXT: ; def v[0:3]
2406 ; GFX90A-NEXT: ;;#ASMEND
2407 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2408 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2409 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2411 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__u_5:
2413 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2414 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2415 ; GFX940-NEXT: ;;#ASMSTART
2416 ; GFX940-NEXT: ; def v[0:3]
2417 ; GFX940-NEXT: ;;#ASMEND
2418 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2419 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2420 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2421 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2422 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2423 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 poison, i32 5>
2424 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2428 define void @v_shuffle_v2i32_v4i32__0_5(ptr addrspace(1) inreg %ptr) {
2429 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_5:
2431 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2432 ; GFX900-NEXT: ;;#ASMSTART
2433 ; GFX900-NEXT: ; def v[0:3]
2434 ; GFX900-NEXT: ;;#ASMEND
2435 ; GFX900-NEXT: ;;#ASMSTART
2436 ; GFX900-NEXT: ; def v[1:4]
2437 ; GFX900-NEXT: ;;#ASMEND
2438 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
2439 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
2440 ; GFX900-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17]
2441 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2442 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2444 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_5:
2446 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2447 ; GFX90A-NEXT: ;;#ASMSTART
2448 ; GFX90A-NEXT: ; def v[0:3]
2449 ; GFX90A-NEXT: ;;#ASMEND
2450 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2451 ; GFX90A-NEXT: ;;#ASMSTART
2452 ; GFX90A-NEXT: ; def v[2:5]
2453 ; GFX90A-NEXT: ;;#ASMEND
2454 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
2455 ; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
2456 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2457 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2459 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_5:
2461 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2462 ; GFX940-NEXT: ;;#ASMSTART
2463 ; GFX940-NEXT: ; def v[0:3]
2464 ; GFX940-NEXT: ;;#ASMEND
2465 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2466 ; GFX940-NEXT: ;;#ASMSTART
2467 ; GFX940-NEXT: ; def v[2:5]
2468 ; GFX940-NEXT: ;;#ASMEND
2469 ; GFX940-NEXT: s_nop 0
2470 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
2471 ; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
2472 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2473 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2474 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2475 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2476 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 0, i32 5>
2477 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2481 define void @v_shuffle_v2i32_v4i32__1_5(ptr addrspace(1) inreg %ptr) {
2482 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_5:
2484 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2485 ; GFX900-NEXT: ;;#ASMSTART
2486 ; GFX900-NEXT: ; def v[0:3]
2487 ; GFX900-NEXT: ;;#ASMEND
2488 ; GFX900-NEXT: ;;#ASMSTART
2489 ; GFX900-NEXT: ; def v[2:5]
2490 ; GFX900-NEXT: ;;#ASMEND
2491 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2492 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
2493 ; GFX900-NEXT: global_store_dwordx2 v6, v[1:2], s[16:17]
2494 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2495 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2497 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_5:
2499 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2500 ; GFX90A-NEXT: ;;#ASMSTART
2501 ; GFX90A-NEXT: ; def v[0:3]
2502 ; GFX90A-NEXT: ;;#ASMEND
2503 ; GFX90A-NEXT: ;;#ASMSTART
2504 ; GFX90A-NEXT: ; def v[2:5]
2505 ; GFX90A-NEXT: ;;#ASMEND
2506 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2507 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2508 ; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17]
2509 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2510 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2512 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_5:
2514 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2515 ; GFX940-NEXT: ;;#ASMSTART
2516 ; GFX940-NEXT: ; def v[0:3]
2517 ; GFX940-NEXT: ;;#ASMEND
2518 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2519 ; GFX940-NEXT: ;;#ASMSTART
2520 ; GFX940-NEXT: ; def v[2:5]
2521 ; GFX940-NEXT: ;;#ASMEND
2522 ; GFX940-NEXT: s_nop 0
2523 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2524 ; GFX940-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] sc0 sc1
2525 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2526 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2527 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2528 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2529 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 1, i32 5>
2530 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2534 define void @v_shuffle_v2i32_v4i32__2_5(ptr addrspace(1) inreg %ptr) {
2535 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_5:
2537 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2538 ; GFX900-NEXT: ;;#ASMSTART
2539 ; GFX900-NEXT: ; def v[0:3]
2540 ; GFX900-NEXT: ;;#ASMEND
2541 ; GFX900-NEXT: ;;#ASMSTART
2542 ; GFX900-NEXT: ; def v[3:6]
2543 ; GFX900-NEXT: ;;#ASMEND
2544 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
2545 ; GFX900-NEXT: v_mov_b32_e32 v3, v4
2546 ; GFX900-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17]
2547 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2548 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2550 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_5:
2552 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2553 ; GFX90A-NEXT: ;;#ASMSTART
2554 ; GFX90A-NEXT: ; def v[0:3]
2555 ; GFX90A-NEXT: ;;#ASMEND
2556 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
2557 ; GFX90A-NEXT: ;;#ASMSTART
2558 ; GFX90A-NEXT: ; def v[4:7]
2559 ; GFX90A-NEXT: ;;#ASMEND
2560 ; GFX90A-NEXT: v_mov_b32_e32 v3, v5
2561 ; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17]
2562 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2563 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2565 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_5:
2567 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2568 ; GFX940-NEXT: ;;#ASMSTART
2569 ; GFX940-NEXT: ; def v[0:3]
2570 ; GFX940-NEXT: ;;#ASMEND
2571 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
2572 ; GFX940-NEXT: ;;#ASMSTART
2573 ; GFX940-NEXT: ; def v[4:7]
2574 ; GFX940-NEXT: ;;#ASMEND
2575 ; GFX940-NEXT: s_nop 0
2576 ; GFX940-NEXT: v_mov_b32_e32 v3, v5
2577 ; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
2578 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2579 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2580 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2581 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2582 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 2, i32 5>
2583 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2587 define void @v_shuffle_v2i32_v4i32__3_5(ptr addrspace(1) inreg %ptr) {
2588 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_5:
2590 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2591 ; GFX900-NEXT: ;;#ASMSTART
2592 ; GFX900-NEXT: ; def v[4:7]
2593 ; GFX900-NEXT: ;;#ASMEND
2594 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
2595 ; GFX900-NEXT: ;;#ASMSTART
2596 ; GFX900-NEXT: ; def v[0:3]
2597 ; GFX900-NEXT: ;;#ASMEND
2598 ; GFX900-NEXT: v_mov_b32_e32 v4, v3
2599 ; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17]
2600 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2601 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2603 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_5:
2605 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2606 ; GFX90A-NEXT: ;;#ASMSTART
2607 ; GFX90A-NEXT: ; def v[4:7]
2608 ; GFX90A-NEXT: ;;#ASMEND
2609 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
2610 ; GFX90A-NEXT: ;;#ASMSTART
2611 ; GFX90A-NEXT: ; def v[0:3]
2612 ; GFX90A-NEXT: ;;#ASMEND
2613 ; GFX90A-NEXT: v_mov_b32_e32 v4, v3
2614 ; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17]
2615 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2616 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2618 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_5:
2620 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2621 ; GFX940-NEXT: ;;#ASMSTART
2622 ; GFX940-NEXT: ; def v[4:7]
2623 ; GFX940-NEXT: ;;#ASMEND
2624 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
2625 ; GFX940-NEXT: ;;#ASMSTART
2626 ; GFX940-NEXT: ; def v[0:3]
2627 ; GFX940-NEXT: ;;#ASMEND
2628 ; GFX940-NEXT: s_nop 0
2629 ; GFX940-NEXT: v_mov_b32_e32 v4, v3
2630 ; GFX940-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] sc0 sc1
2631 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2632 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2633 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2634 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2635 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 3, i32 5>
2636 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2640 define void @v_shuffle_v2i32_v4i32__4_5(ptr addrspace(1) inreg %ptr) {
2641 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_5:
2643 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2644 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2645 ; GFX900-NEXT: ;;#ASMSTART
2646 ; GFX900-NEXT: ; def v[0:3]
2647 ; GFX900-NEXT: ;;#ASMEND
2648 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2649 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2650 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2652 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__4_5:
2654 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2655 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2656 ; GFX90A-NEXT: ;;#ASMSTART
2657 ; GFX90A-NEXT: ; def v[0:3]
2658 ; GFX90A-NEXT: ;;#ASMEND
2659 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2660 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2661 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2663 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__4_5:
2665 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2666 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2667 ; GFX940-NEXT: ;;#ASMSTART
2668 ; GFX940-NEXT: ; def v[0:3]
2669 ; GFX940-NEXT: ;;#ASMEND
2670 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2671 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2672 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2673 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2674 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2675 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 4, i32 5>
2676 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2680 define void @v_shuffle_v2i32_v4i32__5_5(ptr addrspace(1) inreg %ptr) {
2681 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_5:
2683 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2684 ; GFX900-NEXT: ;;#ASMSTART
2685 ; GFX900-NEXT: ; def v[0:3]
2686 ; GFX900-NEXT: ;;#ASMEND
2687 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2688 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2689 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
2690 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2691 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2693 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_5:
2695 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2696 ; GFX90A-NEXT: ;;#ASMSTART
2697 ; GFX90A-NEXT: ; def v[0:3]
2698 ; GFX90A-NEXT: ;;#ASMEND
2699 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2700 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
2701 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2702 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2703 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2705 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_5:
2707 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2708 ; GFX940-NEXT: ;;#ASMSTART
2709 ; GFX940-NEXT: ; def v[0:3]
2710 ; GFX940-NEXT: ;;#ASMEND
2711 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2712 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
2713 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2714 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2715 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2716 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2717 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2718 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 5>
2719 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2723 define void @v_shuffle_v2i32_v4i32__6_5(ptr addrspace(1) inreg %ptr) {
2724 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_5:
2726 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2727 ; GFX900-NEXT: ;;#ASMSTART
2728 ; GFX900-NEXT: ; def v[0:3]
2729 ; GFX900-NEXT: ;;#ASMEND
2730 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2731 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
2732 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
2733 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2734 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2736 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_5:
2738 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2739 ; GFX90A-NEXT: ;;#ASMSTART
2740 ; GFX90A-NEXT: ; def v[0:3]
2741 ; GFX90A-NEXT: ;;#ASMEND
2742 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2743 ; GFX90A-NEXT: v_mov_b32_e32 v3, v1
2744 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
2745 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2746 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2748 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_5:
2750 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2751 ; GFX940-NEXT: ;;#ASMSTART
2752 ; GFX940-NEXT: ; def v[0:3]
2753 ; GFX940-NEXT: ;;#ASMEND
2754 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2755 ; GFX940-NEXT: v_mov_b32_e32 v3, v1
2756 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
2757 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2758 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2759 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2760 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2761 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 5>
2762 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2766 define void @v_shuffle_v2i32_v4i32__u_6(ptr addrspace(1) inreg %ptr) {
2767 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_6:
2769 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2770 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2771 ; GFX900-NEXT: ;;#ASMSTART
2772 ; GFX900-NEXT: ; def v[0:3]
2773 ; GFX900-NEXT: ;;#ASMEND
2774 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
2775 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2776 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2778 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__u_6:
2780 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2781 ; GFX90A-NEXT: ;;#ASMSTART
2782 ; GFX90A-NEXT: ; def v[0:3]
2783 ; GFX90A-NEXT: ;;#ASMEND
2784 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2785 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
2786 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
2787 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2788 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2790 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__u_6:
2792 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2793 ; GFX940-NEXT: ;;#ASMSTART
2794 ; GFX940-NEXT: ; def v[0:3]
2795 ; GFX940-NEXT: ;;#ASMEND
2796 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2797 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
2798 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2799 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2800 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2801 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2802 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2803 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 poison, i32 6>
2804 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2808 define void @v_shuffle_v2i32_v4i32__0_6(ptr addrspace(1) inreg %ptr) {
2809 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_6:
2811 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2812 ; GFX900-NEXT: ;;#ASMSTART
2813 ; GFX900-NEXT: ; def v[0:3]
2814 ; GFX900-NEXT: ;;#ASMEND
2815 ; GFX900-NEXT: ;;#ASMSTART
2816 ; GFX900-NEXT: ; def v[1:4]
2817 ; GFX900-NEXT: ;;#ASMEND
2818 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
2819 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
2820 ; GFX900-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17]
2821 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2822 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2824 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_6:
2826 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2827 ; GFX90A-NEXT: ;;#ASMSTART
2828 ; GFX90A-NEXT: ; def v[0:3]
2829 ; GFX90A-NEXT: ;;#ASMEND
2830 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2831 ; GFX90A-NEXT: ;;#ASMSTART
2832 ; GFX90A-NEXT: ; def v[2:5]
2833 ; GFX90A-NEXT: ;;#ASMEND
2834 ; GFX90A-NEXT: v_mov_b32_e32 v1, v4
2835 ; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
2836 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2837 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2839 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_6:
2841 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2842 ; GFX940-NEXT: ;;#ASMSTART
2843 ; GFX940-NEXT: ; def v[0:3]
2844 ; GFX940-NEXT: ;;#ASMEND
2845 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2846 ; GFX940-NEXT: ;;#ASMSTART
2847 ; GFX940-NEXT: ; def v[2:5]
2848 ; GFX940-NEXT: ;;#ASMEND
2849 ; GFX940-NEXT: s_nop 0
2850 ; GFX940-NEXT: v_mov_b32_e32 v1, v4
2851 ; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
2852 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2853 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2854 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2855 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2856 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 0, i32 6>
2857 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2861 define void @v_shuffle_v2i32_v4i32__1_6(ptr addrspace(1) inreg %ptr) {
2862 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_6:
2864 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2865 ; GFX900-NEXT: ;;#ASMSTART
2866 ; GFX900-NEXT: ; def v[0:3]
2867 ; GFX900-NEXT: ;;#ASMEND
2868 ; GFX900-NEXT: ;;#ASMSTART
2869 ; GFX900-NEXT: ; def v[2:5]
2870 ; GFX900-NEXT: ;;#ASMEND
2871 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2872 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
2873 ; GFX900-NEXT: global_store_dwordx2 v6, v[1:2], s[16:17]
2874 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2875 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2877 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_6:
2879 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2880 ; GFX90A-NEXT: ;;#ASMSTART
2881 ; GFX90A-NEXT: ; def v[0:3]
2882 ; GFX90A-NEXT: ;;#ASMEND
2883 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2884 ; GFX90A-NEXT: ;;#ASMSTART
2885 ; GFX90A-NEXT: ; def v[2:5]
2886 ; GFX90A-NEXT: ;;#ASMEND
2887 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[4:5] op_sel:[1,0]
2888 ; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
2889 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2890 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2892 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_6:
2894 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2895 ; GFX940-NEXT: ;;#ASMSTART
2896 ; GFX940-NEXT: ; def v[0:3]
2897 ; GFX940-NEXT: ;;#ASMEND
2898 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2899 ; GFX940-NEXT: ;;#ASMSTART
2900 ; GFX940-NEXT: ; def v[2:5]
2901 ; GFX940-NEXT: ;;#ASMEND
2902 ; GFX940-NEXT: s_nop 0
2903 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[4:5] op_sel:[1,0]
2904 ; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
2905 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2906 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2907 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2908 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2909 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 1, i32 6>
2910 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2914 define void @v_shuffle_v2i32_v4i32__2_6(ptr addrspace(1) inreg %ptr) {
2915 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_6:
2917 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2918 ; GFX900-NEXT: ;;#ASMSTART
2919 ; GFX900-NEXT: ; def v[0:3]
2920 ; GFX900-NEXT: ;;#ASMEND
2921 ; GFX900-NEXT: ;;#ASMSTART
2922 ; GFX900-NEXT: ; def v[3:6]
2923 ; GFX900-NEXT: ;;#ASMEND
2924 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
2925 ; GFX900-NEXT: v_mov_b32_e32 v3, v5
2926 ; GFX900-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17]
2927 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2928 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2930 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_6:
2932 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2933 ; GFX90A-NEXT: ;;#ASMSTART
2934 ; GFX90A-NEXT: ; def v[0:3]
2935 ; GFX90A-NEXT: ;;#ASMEND
2936 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
2937 ; GFX90A-NEXT: ;;#ASMSTART
2938 ; GFX90A-NEXT: ; def v[4:7]
2939 ; GFX90A-NEXT: ;;#ASMEND
2940 ; GFX90A-NEXT: v_mov_b32_e32 v3, v6
2941 ; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17]
2942 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2943 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2945 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_6:
2947 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2948 ; GFX940-NEXT: ;;#ASMSTART
2949 ; GFX940-NEXT: ; def v[0:3]
2950 ; GFX940-NEXT: ;;#ASMEND
2951 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
2952 ; GFX940-NEXT: ;;#ASMSTART
2953 ; GFX940-NEXT: ; def v[4:7]
2954 ; GFX940-NEXT: ;;#ASMEND
2955 ; GFX940-NEXT: s_nop 0
2956 ; GFX940-NEXT: v_mov_b32_e32 v3, v6
2957 ; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
2958 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2959 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2960 %vec0 = call <4 x i32> asm "; def $0", "=v"()
2961 %vec1 = call <4 x i32> asm "; def $0", "=v"()
2962 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 2, i32 6>
2963 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2967 define void @v_shuffle_v2i32_v4i32__3_6(ptr addrspace(1) inreg %ptr) {
2968 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_6:
2970 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2971 ; GFX900-NEXT: ;;#ASMSTART
2972 ; GFX900-NEXT: ; def v[4:7]
2973 ; GFX900-NEXT: ;;#ASMEND
2974 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
2975 ; GFX900-NEXT: ;;#ASMSTART
2976 ; GFX900-NEXT: ; def v[0:3]
2977 ; GFX900-NEXT: ;;#ASMEND
2978 ; GFX900-NEXT: v_mov_b32_e32 v5, v3
2979 ; GFX900-NEXT: global_store_dwordx2 v8, v[5:6], s[16:17]
2980 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2981 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2983 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_6:
2985 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2986 ; GFX90A-NEXT: ;;#ASMSTART
2987 ; GFX90A-NEXT: ; def v[0:3]
2988 ; GFX90A-NEXT: ;;#ASMEND
2989 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
2990 ; GFX90A-NEXT: ;;#ASMSTART
2991 ; GFX90A-NEXT: ; def v[4:7]
2992 ; GFX90A-NEXT: ;;#ASMEND
2993 ; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[6:7] op_sel:[1,0]
2994 ; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17]
2995 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2996 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2998 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_6:
3000 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3001 ; GFX940-NEXT: ;;#ASMSTART
3002 ; GFX940-NEXT: ; def v[0:3]
3003 ; GFX940-NEXT: ;;#ASMEND
3004 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3005 ; GFX940-NEXT: ;;#ASMSTART
3006 ; GFX940-NEXT: ; def v[4:7]
3007 ; GFX940-NEXT: ;;#ASMEND
3008 ; GFX940-NEXT: s_nop 0
3009 ; GFX940-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[6:7] op_sel:[1,0]
3010 ; GFX940-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] sc0 sc1
3011 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3012 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3013 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3014 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3015 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 3, i32 6>
3016 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3020 define void @v_shuffle_v2i32_v4i32__4_6(ptr addrspace(1) inreg %ptr) {
3021 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_6:
3023 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3024 ; GFX900-NEXT: ;;#ASMSTART
3025 ; GFX900-NEXT: ; def v[0:3]
3026 ; GFX900-NEXT: ;;#ASMEND
3027 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3028 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
3029 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
3030 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3031 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3033 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__4_6:
3035 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3036 ; GFX90A-NEXT: ;;#ASMSTART
3037 ; GFX90A-NEXT: ; def v[0:3]
3038 ; GFX90A-NEXT: ;;#ASMEND
3039 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3040 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
3041 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
3042 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3043 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3045 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__4_6:
3047 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3048 ; GFX940-NEXT: ;;#ASMSTART
3049 ; GFX940-NEXT: ; def v[0:3]
3050 ; GFX940-NEXT: ;;#ASMEND
3051 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3052 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
3053 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
3054 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3055 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3056 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3057 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3058 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 4, i32 6>
3059 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3063 define void @v_shuffle_v2i32_v4i32__5_6(ptr addrspace(1) inreg %ptr) {
3064 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_6:
3066 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3067 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3068 ; GFX900-NEXT: ;;#ASMSTART
3069 ; GFX900-NEXT: ; def v[0:3]
3070 ; GFX900-NEXT: ;;#ASMEND
3071 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
3072 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3073 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3075 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_6:
3077 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3078 ; GFX90A-NEXT: ;;#ASMSTART
3079 ; GFX90A-NEXT: ; def v[0:3]
3080 ; GFX90A-NEXT: ;;#ASMEND
3081 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3082 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
3083 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
3084 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
3085 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3086 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3088 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_6:
3090 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3091 ; GFX940-NEXT: ;;#ASMSTART
3092 ; GFX940-NEXT: ; def v[0:3]
3093 ; GFX940-NEXT: ;;#ASMEND
3094 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3095 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
3096 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
3097 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
3098 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3099 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3100 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3101 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3102 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 6>
3103 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3107 define void @v_shuffle_v2i32_v4i32__6_6(ptr addrspace(1) inreg %ptr) {
3108 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_6:
3110 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3111 ; GFX900-NEXT: ;;#ASMSTART
3112 ; GFX900-NEXT: ; def v[0:3]
3113 ; GFX900-NEXT: ;;#ASMEND
3114 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3115 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
3116 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
3117 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3118 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3120 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_6:
3122 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3123 ; GFX90A-NEXT: ;;#ASMSTART
3124 ; GFX90A-NEXT: ; def v[0:3]
3125 ; GFX90A-NEXT: ;;#ASMEND
3126 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3127 ; GFX90A-NEXT: v_mov_b32_e32 v3, v2
3128 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
3129 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3130 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3132 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_6:
3134 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3135 ; GFX940-NEXT: ;;#ASMSTART
3136 ; GFX940-NEXT: ; def v[0:3]
3137 ; GFX940-NEXT: ;;#ASMEND
3138 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3139 ; GFX940-NEXT: v_mov_b32_e32 v3, v2
3140 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
3141 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3142 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3143 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3144 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3145 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 6>
3146 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3150 define void @v_shuffle_v2i32_v4i32__u_7(ptr addrspace(1) inreg %ptr) {
3151 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_7:
3153 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3154 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3155 ; GFX900-NEXT: ;;#ASMSTART
3156 ; GFX900-NEXT: ; def v[0:3]
3157 ; GFX900-NEXT: ;;#ASMEND
3158 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
3159 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3160 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3162 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__u_7:
3164 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3165 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3166 ; GFX90A-NEXT: ;;#ASMSTART
3167 ; GFX90A-NEXT: ; def v[0:3]
3168 ; GFX90A-NEXT: ;;#ASMEND
3169 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
3170 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3171 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3173 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__u_7:
3175 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3176 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3177 ; GFX940-NEXT: ;;#ASMSTART
3178 ; GFX940-NEXT: ; def v[0:3]
3179 ; GFX940-NEXT: ;;#ASMEND
3180 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
3181 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3182 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3183 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3184 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3185 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 poison, i32 7>
3186 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3190 define void @v_shuffle_v2i32_v4i32__0_7(ptr addrspace(1) inreg %ptr) {
3191 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_7:
3193 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3194 ; GFX900-NEXT: ;;#ASMSTART
3195 ; GFX900-NEXT: ; def v[0:3]
3196 ; GFX900-NEXT: ;;#ASMEND
3197 ; GFX900-NEXT: ;;#ASMSTART
3198 ; GFX900-NEXT: ; def v[1:4]
3199 ; GFX900-NEXT: ;;#ASMEND
3200 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
3201 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
3202 ; GFX900-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17]
3203 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3204 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3206 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__0_7:
3208 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3209 ; GFX90A-NEXT: ;;#ASMSTART
3210 ; GFX90A-NEXT: ; def v[0:3]
3211 ; GFX90A-NEXT: ;;#ASMEND
3212 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
3213 ; GFX90A-NEXT: ;;#ASMSTART
3214 ; GFX90A-NEXT: ; def v[2:5]
3215 ; GFX90A-NEXT: ;;#ASMEND
3216 ; GFX90A-NEXT: v_mov_b32_e32 v1, v5
3217 ; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17]
3218 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3219 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3221 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__0_7:
3223 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3224 ; GFX940-NEXT: ;;#ASMSTART
3225 ; GFX940-NEXT: ; def v[0:3]
3226 ; GFX940-NEXT: ;;#ASMEND
3227 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
3228 ; GFX940-NEXT: ;;#ASMSTART
3229 ; GFX940-NEXT: ; def v[2:5]
3230 ; GFX940-NEXT: ;;#ASMEND
3231 ; GFX940-NEXT: s_nop 0
3232 ; GFX940-NEXT: v_mov_b32_e32 v1, v5
3233 ; GFX940-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
3234 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3235 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3236 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3237 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3238 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 0, i32 7>
3239 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3243 define void @v_shuffle_v2i32_v4i32__1_7(ptr addrspace(1) inreg %ptr) {
3244 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_7:
3246 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3247 ; GFX900-NEXT: ;;#ASMSTART
3248 ; GFX900-NEXT: ; def v[0:3]
3249 ; GFX900-NEXT: ;;#ASMEND
3250 ; GFX900-NEXT: ;;#ASMSTART
3251 ; GFX900-NEXT: ; def v[2:5]
3252 ; GFX900-NEXT: ;;#ASMEND
3253 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
3254 ; GFX900-NEXT: v_mov_b32_e32 v2, v5
3255 ; GFX900-NEXT: global_store_dwordx2 v6, v[1:2], s[16:17]
3256 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3257 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3259 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__1_7:
3261 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3262 ; GFX90A-NEXT: ;;#ASMSTART
3263 ; GFX90A-NEXT: ; def v[0:3]
3264 ; GFX90A-NEXT: ;;#ASMEND
3265 ; GFX90A-NEXT: ;;#ASMSTART
3266 ; GFX90A-NEXT: ; def v[2:5]
3267 ; GFX90A-NEXT: ;;#ASMEND
3268 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
3269 ; GFX90A-NEXT: v_mov_b32_e32 v4, v1
3270 ; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17]
3271 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3272 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3274 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__1_7:
3276 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3277 ; GFX940-NEXT: ;;#ASMSTART
3278 ; GFX940-NEXT: ; def v[0:3]
3279 ; GFX940-NEXT: ;;#ASMEND
3280 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
3281 ; GFX940-NEXT: ;;#ASMSTART
3282 ; GFX940-NEXT: ; def v[2:5]
3283 ; GFX940-NEXT: ;;#ASMEND
3284 ; GFX940-NEXT: s_nop 0
3285 ; GFX940-NEXT: v_mov_b32_e32 v4, v1
3286 ; GFX940-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1
3287 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3288 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3289 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3290 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3291 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 1, i32 7>
3292 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3296 define void @v_shuffle_v2i32_v4i32__2_7(ptr addrspace(1) inreg %ptr) {
3297 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_7:
3299 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3300 ; GFX900-NEXT: ;;#ASMSTART
3301 ; GFX900-NEXT: ; def v[0:3]
3302 ; GFX900-NEXT: ;;#ASMEND
3303 ; GFX900-NEXT: ;;#ASMSTART
3304 ; GFX900-NEXT: ; def v[3:6]
3305 ; GFX900-NEXT: ;;#ASMEND
3306 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3307 ; GFX900-NEXT: v_mov_b32_e32 v3, v6
3308 ; GFX900-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17]
3309 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3310 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3312 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__2_7:
3314 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3315 ; GFX90A-NEXT: ;;#ASMSTART
3316 ; GFX90A-NEXT: ; def v[0:3]
3317 ; GFX90A-NEXT: ;;#ASMEND
3318 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3319 ; GFX90A-NEXT: ;;#ASMSTART
3320 ; GFX90A-NEXT: ; def v[4:7]
3321 ; GFX90A-NEXT: ;;#ASMEND
3322 ; GFX90A-NEXT: v_mov_b32_e32 v3, v7
3323 ; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17]
3324 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3325 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3327 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__2_7:
3329 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3330 ; GFX940-NEXT: ;;#ASMSTART
3331 ; GFX940-NEXT: ; def v[0:3]
3332 ; GFX940-NEXT: ;;#ASMEND
3333 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3334 ; GFX940-NEXT: ;;#ASMSTART
3335 ; GFX940-NEXT: ; def v[4:7]
3336 ; GFX940-NEXT: ;;#ASMEND
3337 ; GFX940-NEXT: s_nop 0
3338 ; GFX940-NEXT: v_mov_b32_e32 v3, v7
3339 ; GFX940-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
3340 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3341 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3342 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3343 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3344 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 2, i32 7>
3345 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3349 define void @v_shuffle_v2i32_v4i32__3_7(ptr addrspace(1) inreg %ptr) {
3350 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_7:
3352 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3353 ; GFX900-NEXT: ;;#ASMSTART
3354 ; GFX900-NEXT: ; def v[4:7]
3355 ; GFX900-NEXT: ;;#ASMEND
3356 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
3357 ; GFX900-NEXT: ;;#ASMSTART
3358 ; GFX900-NEXT: ; def v[0:3]
3359 ; GFX900-NEXT: ;;#ASMEND
3360 ; GFX900-NEXT: v_mov_b32_e32 v6, v3
3361 ; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17]
3362 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3363 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3365 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__3_7:
3367 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3368 ; GFX90A-NEXT: ;;#ASMSTART
3369 ; GFX90A-NEXT: ; def v[4:7]
3370 ; GFX90A-NEXT: ;;#ASMEND
3371 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3372 ; GFX90A-NEXT: ;;#ASMSTART
3373 ; GFX90A-NEXT: ; def v[0:3]
3374 ; GFX90A-NEXT: ;;#ASMEND
3375 ; GFX90A-NEXT: v_mov_b32_e32 v6, v3
3376 ; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17]
3377 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3378 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3380 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__3_7:
3382 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3383 ; GFX940-NEXT: ;;#ASMSTART
3384 ; GFX940-NEXT: ; def v[4:7]
3385 ; GFX940-NEXT: ;;#ASMEND
3386 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3387 ; GFX940-NEXT: ;;#ASMSTART
3388 ; GFX940-NEXT: ; def v[0:3]
3389 ; GFX940-NEXT: ;;#ASMEND
3390 ; GFX940-NEXT: s_nop 0
3391 ; GFX940-NEXT: v_mov_b32_e32 v6, v3
3392 ; GFX940-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1
3393 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3394 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3395 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3396 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3397 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 3, i32 7>
3398 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3402 define void @v_shuffle_v2i32_v4i32__4_7(ptr addrspace(1) inreg %ptr) {
3403 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_7:
3405 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3406 ; GFX900-NEXT: ;;#ASMSTART
3407 ; GFX900-NEXT: ; def v[0:3]
3408 ; GFX900-NEXT: ;;#ASMEND
3409 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3410 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
3411 ; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
3412 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3413 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3415 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__4_7:
3417 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3418 ; GFX90A-NEXT: ;;#ASMSTART
3419 ; GFX90A-NEXT: ; def v[0:3]
3420 ; GFX90A-NEXT: ;;#ASMEND
3421 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3422 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3423 ; GFX90A-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]
3424 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3425 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3427 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__4_7:
3429 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3430 ; GFX940-NEXT: ;;#ASMSTART
3431 ; GFX940-NEXT: ; def v[0:3]
3432 ; GFX940-NEXT: ;;#ASMEND
3433 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3434 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3435 ; GFX940-NEXT: global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
3436 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3437 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3438 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3439 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3440 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 4, i32 7>
3441 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3445 define void @v_shuffle_v2i32_v4i32__5_7(ptr addrspace(1) inreg %ptr) {
3446 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_7:
3448 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3449 ; GFX900-NEXT: ;;#ASMSTART
3450 ; GFX900-NEXT: ; def v[0:3]
3451 ; GFX900-NEXT: ;;#ASMEND
3452 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3453 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
3454 ; GFX900-NEXT: global_store_dwordx2 v4, v[1:2], s[16:17]
3455 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3456 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3458 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__5_7:
3460 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3461 ; GFX90A-NEXT: ;;#ASMSTART
3462 ; GFX90A-NEXT: ; def v[0:3]
3463 ; GFX90A-NEXT: ;;#ASMEND
3464 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3465 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
3466 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
3467 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3468 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3470 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__5_7:
3472 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3473 ; GFX940-NEXT: ;;#ASMSTART
3474 ; GFX940-NEXT: ; def v[0:3]
3475 ; GFX940-NEXT: ;;#ASMEND
3476 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3477 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
3478 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
3479 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3480 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3481 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3482 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3483 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 7>
3484 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3488 define void @v_shuffle_v2i32_v4i32__6_7(ptr addrspace(1) inreg %ptr) {
3489 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_7:
3491 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3492 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3493 ; GFX900-NEXT: ;;#ASMSTART
3494 ; GFX900-NEXT: ; def v[0:3]
3495 ; GFX900-NEXT: ;;#ASMEND
3496 ; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
3497 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3498 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3500 ; GFX90A-LABEL: v_shuffle_v2i32_v4i32__6_7:
3502 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3503 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3504 ; GFX90A-NEXT: ;;#ASMSTART
3505 ; GFX90A-NEXT: ; def v[0:3]
3506 ; GFX90A-NEXT: ;;#ASMEND
3507 ; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]
3508 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3509 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3511 ; GFX940-LABEL: v_shuffle_v2i32_v4i32__6_7:
3513 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3514 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3515 ; GFX940-NEXT: ;;#ASMSTART
3516 ; GFX940-NEXT: ; def v[0:3]
3517 ; GFX940-NEXT: ;;#ASMEND
3518 ; GFX940-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
3519 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3520 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3521 %vec0 = call <4 x i32> asm "; def $0", "=v"()
3522 %vec1 = call <4 x i32> asm "; def $0", "=v"()
3523 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 7>
3524 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3528 define void @s_shuffle_v2i32_v4i32__u_u() {
3529 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__u_u:
3531 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3532 ; GFX9-NEXT: ;;#ASMSTART
3533 ; GFX9-NEXT: ; use s[8:9]
3534 ; GFX9-NEXT: ;;#ASMEND
3535 ; GFX9-NEXT: s_setpc_b64 s[30:31]
3536 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3537 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> poison
3538 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3542 define void @s_shuffle_v2i32_v4i32__0_u() {
3543 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_u:
3545 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3546 ; GFX900-NEXT: ;;#ASMSTART
3547 ; GFX900-NEXT: ; def s[8:11]
3548 ; GFX900-NEXT: ;;#ASMEND
3549 ; GFX900-NEXT: ;;#ASMSTART
3550 ; GFX900-NEXT: ; use s[8:9]
3551 ; GFX900-NEXT: ;;#ASMEND
3552 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3554 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__0_u:
3556 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3557 ; GFX90A-NEXT: ;;#ASMSTART
3558 ; GFX90A-NEXT: ; def s[8:11]
3559 ; GFX90A-NEXT: ;;#ASMEND
3560 ; GFX90A-NEXT: ;;#ASMSTART
3561 ; GFX90A-NEXT: ; use s[8:9]
3562 ; GFX90A-NEXT: ;;#ASMEND
3563 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3565 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__0_u:
3567 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3568 ; GFX940-NEXT: ;;#ASMSTART
3569 ; GFX940-NEXT: ; def s[8:11]
3570 ; GFX940-NEXT: ;;#ASMEND
3571 ; GFX940-NEXT: s_nop 0
3572 ; GFX940-NEXT: ;;#ASMSTART
3573 ; GFX940-NEXT: ; use s[8:9]
3574 ; GFX940-NEXT: ;;#ASMEND
3575 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3576 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3577 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 poison>
3578 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3582 define void @s_shuffle_v2i32_v4i32__1_u() {
3583 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_u:
3585 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3586 ; GFX900-NEXT: ;;#ASMSTART
3587 ; GFX900-NEXT: ; def s[4:7]
3588 ; GFX900-NEXT: ;;#ASMEND
3589 ; GFX900-NEXT: s_mov_b32 s8, s5
3590 ; GFX900-NEXT: ;;#ASMSTART
3591 ; GFX900-NEXT: ; use s[8:9]
3592 ; GFX900-NEXT: ;;#ASMEND
3593 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3595 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__1_u:
3597 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3598 ; GFX90A-NEXT: ;;#ASMSTART
3599 ; GFX90A-NEXT: ; def s[4:7]
3600 ; GFX90A-NEXT: ;;#ASMEND
3601 ; GFX90A-NEXT: s_mov_b32 s8, s5
3602 ; GFX90A-NEXT: ;;#ASMSTART
3603 ; GFX90A-NEXT: ; use s[8:9]
3604 ; GFX90A-NEXT: ;;#ASMEND
3605 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3607 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__1_u:
3609 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3610 ; GFX940-NEXT: ;;#ASMSTART
3611 ; GFX940-NEXT: ; def s[0:3]
3612 ; GFX940-NEXT: ;;#ASMEND
3613 ; GFX940-NEXT: s_mov_b32 s8, s1
3614 ; GFX940-NEXT: ;;#ASMSTART
3615 ; GFX940-NEXT: ; use s[8:9]
3616 ; GFX940-NEXT: ;;#ASMEND
3617 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3618 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3619 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 poison>
3620 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3624 define void @s_shuffle_v2i32_v4i32__2_u() {
3625 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_u:
3627 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3628 ; GFX900-NEXT: ;;#ASMSTART
3629 ; GFX900-NEXT: ; def s[4:7]
3630 ; GFX900-NEXT: ;;#ASMEND
3631 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
3632 ; GFX900-NEXT: ;;#ASMSTART
3633 ; GFX900-NEXT: ; use s[8:9]
3634 ; GFX900-NEXT: ;;#ASMEND
3635 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3637 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_u:
3639 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3640 ; GFX90A-NEXT: ;;#ASMSTART
3641 ; GFX90A-NEXT: ; def s[4:7]
3642 ; GFX90A-NEXT: ;;#ASMEND
3643 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
3644 ; GFX90A-NEXT: ;;#ASMSTART
3645 ; GFX90A-NEXT: ; use s[8:9]
3646 ; GFX90A-NEXT: ;;#ASMEND
3647 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3649 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_u:
3651 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3652 ; GFX940-NEXT: ;;#ASMSTART
3653 ; GFX940-NEXT: ; def s[0:3]
3654 ; GFX940-NEXT: ;;#ASMEND
3655 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
3656 ; GFX940-NEXT: ;;#ASMSTART
3657 ; GFX940-NEXT: ; use s[8:9]
3658 ; GFX940-NEXT: ;;#ASMEND
3659 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3660 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3661 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 poison>
3662 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3666 define void @s_shuffle_v2i32_v4i32__3_u() {
3667 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_u:
3669 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3670 ; GFX900-NEXT: ;;#ASMSTART
3671 ; GFX900-NEXT: ; def s[4:7]
3672 ; GFX900-NEXT: ;;#ASMEND
3673 ; GFX900-NEXT: s_mov_b32 s8, s7
3674 ; GFX900-NEXT: ;;#ASMSTART
3675 ; GFX900-NEXT: ; use s[8:9]
3676 ; GFX900-NEXT: ;;#ASMEND
3677 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3679 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__3_u:
3681 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3682 ; GFX90A-NEXT: ;;#ASMSTART
3683 ; GFX90A-NEXT: ; def s[4:7]
3684 ; GFX90A-NEXT: ;;#ASMEND
3685 ; GFX90A-NEXT: s_mov_b32 s8, s7
3686 ; GFX90A-NEXT: ;;#ASMSTART
3687 ; GFX90A-NEXT: ; use s[8:9]
3688 ; GFX90A-NEXT: ;;#ASMEND
3689 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3691 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__3_u:
3693 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3694 ; GFX940-NEXT: ;;#ASMSTART
3695 ; GFX940-NEXT: ; def s[0:3]
3696 ; GFX940-NEXT: ;;#ASMEND
3697 ; GFX940-NEXT: s_mov_b32 s8, s3
3698 ; GFX940-NEXT: ;;#ASMSTART
3699 ; GFX940-NEXT: ; use s[8:9]
3700 ; GFX940-NEXT: ;;#ASMEND
3701 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3702 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3703 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 poison>
3704 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3708 define void @s_shuffle_v2i32_v4i32__4_u() {
3709 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__4_u:
3711 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3712 ; GFX9-NEXT: ;;#ASMSTART
3713 ; GFX9-NEXT: ; use s[8:9]
3714 ; GFX9-NEXT: ;;#ASMEND
3715 ; GFX9-NEXT: s_setpc_b64 s[30:31]
3716 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3717 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 poison>
3718 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3722 define void @s_shuffle_v2i32_v4i32__5_u() {
3723 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_u:
3725 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3726 ; GFX900-NEXT: ;;#ASMSTART
3727 ; GFX900-NEXT: ; def s[4:7]
3728 ; GFX900-NEXT: ;;#ASMEND
3729 ; GFX900-NEXT: s_mov_b32 s8, s5
3730 ; GFX900-NEXT: ;;#ASMSTART
3731 ; GFX900-NEXT: ; use s[8:9]
3732 ; GFX900-NEXT: ;;#ASMEND
3733 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3735 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__5_u:
3737 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3738 ; GFX90A-NEXT: ;;#ASMSTART
3739 ; GFX90A-NEXT: ; def s[4:7]
3740 ; GFX90A-NEXT: ;;#ASMEND
3741 ; GFX90A-NEXT: s_mov_b32 s8, s5
3742 ; GFX90A-NEXT: ;;#ASMSTART
3743 ; GFX90A-NEXT: ; use s[8:9]
3744 ; GFX90A-NEXT: ;;#ASMEND
3745 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3747 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__5_u:
3749 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3750 ; GFX940-NEXT: ;;#ASMSTART
3751 ; GFX940-NEXT: ; def s[0:3]
3752 ; GFX940-NEXT: ;;#ASMEND
3753 ; GFX940-NEXT: s_mov_b32 s8, s1
3754 ; GFX940-NEXT: ;;#ASMSTART
3755 ; GFX940-NEXT: ; use s[8:9]
3756 ; GFX940-NEXT: ;;#ASMEND
3757 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3758 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3759 %vec1 = call <4 x i32> asm "; def $0", "=s"()
3760 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 poison>
3761 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3765 define void @s_shuffle_v2i32_v4i32__6_u() {
3766 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_u:
3768 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3769 ; GFX900-NEXT: ;;#ASMSTART
3770 ; GFX900-NEXT: ; def s[4:7]
3771 ; GFX900-NEXT: ;;#ASMEND
3772 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
3773 ; GFX900-NEXT: ;;#ASMSTART
3774 ; GFX900-NEXT: ; use s[8:9]
3775 ; GFX900-NEXT: ;;#ASMEND
3776 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3778 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_u:
3780 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3781 ; GFX90A-NEXT: ;;#ASMSTART
3782 ; GFX90A-NEXT: ; def s[4:7]
3783 ; GFX90A-NEXT: ;;#ASMEND
3784 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
3785 ; GFX90A-NEXT: ;;#ASMSTART
3786 ; GFX90A-NEXT: ; use s[8:9]
3787 ; GFX90A-NEXT: ;;#ASMEND
3788 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3790 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_u:
3792 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3793 ; GFX940-NEXT: ;;#ASMSTART
3794 ; GFX940-NEXT: ; def s[0:3]
3795 ; GFX940-NEXT: ;;#ASMEND
3796 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
3797 ; GFX940-NEXT: ;;#ASMSTART
3798 ; GFX940-NEXT: ; use s[8:9]
3799 ; GFX940-NEXT: ;;#ASMEND
3800 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3801 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3802 %vec1 = call <4 x i32> asm "; def $0", "=s"()
3803 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 poison>
3804 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3808 define void @s_shuffle_v2i32_v4i32__7_u() {
3809 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_u:
3811 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3812 ; GFX900-NEXT: ;;#ASMSTART
3813 ; GFX900-NEXT: ; def s[4:7]
3814 ; GFX900-NEXT: ;;#ASMEND
3815 ; GFX900-NEXT: s_mov_b32 s8, s7
3816 ; GFX900-NEXT: ;;#ASMSTART
3817 ; GFX900-NEXT: ; use s[8:9]
3818 ; GFX900-NEXT: ;;#ASMEND
3819 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3821 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__7_u:
3823 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3824 ; GFX90A-NEXT: ;;#ASMSTART
3825 ; GFX90A-NEXT: ; def s[4:7]
3826 ; GFX90A-NEXT: ;;#ASMEND
3827 ; GFX90A-NEXT: s_mov_b32 s8, s7
3828 ; GFX90A-NEXT: ;;#ASMSTART
3829 ; GFX90A-NEXT: ; use s[8:9]
3830 ; GFX90A-NEXT: ;;#ASMEND
3831 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3833 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__7_u:
3835 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3836 ; GFX940-NEXT: ;;#ASMSTART
3837 ; GFX940-NEXT: ; def s[0:3]
3838 ; GFX940-NEXT: ;;#ASMEND
3839 ; GFX940-NEXT: s_mov_b32 s8, s3
3840 ; GFX940-NEXT: ;;#ASMSTART
3841 ; GFX940-NEXT: ; use s[8:9]
3842 ; GFX940-NEXT: ;;#ASMEND
3843 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3844 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3845 %vec1 = call <4 x i32> asm "; def $0", "=s"()
3846 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 poison>
3847 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3851 define void @s_shuffle_v2i32_v4i32__7_0() {
3852 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_0:
3854 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3855 ; GFX900-NEXT: ;;#ASMSTART
3856 ; GFX900-NEXT: ; def s[8:11]
3857 ; GFX900-NEXT: ;;#ASMEND
3858 ; GFX900-NEXT: ;;#ASMSTART
3859 ; GFX900-NEXT: ; def s[4:7]
3860 ; GFX900-NEXT: ;;#ASMEND
3861 ; GFX900-NEXT: s_mov_b32 s8, s11
3862 ; GFX900-NEXT: s_mov_b32 s9, s4
3863 ; GFX900-NEXT: ;;#ASMSTART
3864 ; GFX900-NEXT: ; use s[8:9]
3865 ; GFX900-NEXT: ;;#ASMEND
3866 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3868 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__7_0:
3870 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3871 ; GFX90A-NEXT: ;;#ASMSTART
3872 ; GFX90A-NEXT: ; def s[8:11]
3873 ; GFX90A-NEXT: ;;#ASMEND
3874 ; GFX90A-NEXT: ;;#ASMSTART
3875 ; GFX90A-NEXT: ; def s[4:7]
3876 ; GFX90A-NEXT: ;;#ASMEND
3877 ; GFX90A-NEXT: s_mov_b32 s8, s11
3878 ; GFX90A-NEXT: s_mov_b32 s9, s4
3879 ; GFX90A-NEXT: ;;#ASMSTART
3880 ; GFX90A-NEXT: ; use s[8:9]
3881 ; GFX90A-NEXT: ;;#ASMEND
3882 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3884 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__7_0:
3886 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3887 ; GFX940-NEXT: ;;#ASMSTART
3888 ; GFX940-NEXT: ; def s[0:3]
3889 ; GFX940-NEXT: ;;#ASMEND
3890 ; GFX940-NEXT: ;;#ASMSTART
3891 ; GFX940-NEXT: ; def s[4:7]
3892 ; GFX940-NEXT: ;;#ASMEND
3893 ; GFX940-NEXT: s_mov_b32 s8, s7
3894 ; GFX940-NEXT: s_mov_b32 s9, s0
3895 ; GFX940-NEXT: ;;#ASMSTART
3896 ; GFX940-NEXT: ; use s[8:9]
3897 ; GFX940-NEXT: ;;#ASMEND
3898 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3899 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3900 %vec1 = call <4 x i32> asm "; def $0", "=s"()
3901 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 0>
3902 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3906 define void @s_shuffle_v2i32_v4i32__7_1() {
3907 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_1:
3909 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3910 ; GFX900-NEXT: ;;#ASMSTART
3911 ; GFX900-NEXT: ; def s[8:11]
3912 ; GFX900-NEXT: ;;#ASMEND
3913 ; GFX900-NEXT: ;;#ASMSTART
3914 ; GFX900-NEXT: ; def s[4:7]
3915 ; GFX900-NEXT: ;;#ASMEND
3916 ; GFX900-NEXT: s_mov_b32 s8, s7
3917 ; GFX900-NEXT: ;;#ASMSTART
3918 ; GFX900-NEXT: ; use s[8:9]
3919 ; GFX900-NEXT: ;;#ASMEND
3920 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3922 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__7_1:
3924 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3925 ; GFX90A-NEXT: ;;#ASMSTART
3926 ; GFX90A-NEXT: ; def s[8:11]
3927 ; GFX90A-NEXT: ;;#ASMEND
3928 ; GFX90A-NEXT: ;;#ASMSTART
3929 ; GFX90A-NEXT: ; def s[4:7]
3930 ; GFX90A-NEXT: ;;#ASMEND
3931 ; GFX90A-NEXT: s_mov_b32 s8, s7
3932 ; GFX90A-NEXT: ;;#ASMSTART
3933 ; GFX90A-NEXT: ; use s[8:9]
3934 ; GFX90A-NEXT: ;;#ASMEND
3935 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3937 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__7_1:
3939 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3940 ; GFX940-NEXT: ;;#ASMSTART
3941 ; GFX940-NEXT: ; def s[8:11]
3942 ; GFX940-NEXT: ;;#ASMEND
3943 ; GFX940-NEXT: ;;#ASMSTART
3944 ; GFX940-NEXT: ; def s[0:3]
3945 ; GFX940-NEXT: ;;#ASMEND
3946 ; GFX940-NEXT: s_mov_b32 s8, s3
3947 ; GFX940-NEXT: ;;#ASMSTART
3948 ; GFX940-NEXT: ; use s[8:9]
3949 ; GFX940-NEXT: ;;#ASMEND
3950 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3951 %vec0 = call <4 x i32> asm "; def $0", "=s"()
3952 %vec1 = call <4 x i32> asm "; def $0", "=s"()
3953 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 1>
3954 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3958 define void @s_shuffle_v2i32_v4i32__7_2() {
3959 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_2:
3961 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3962 ; GFX900-NEXT: ;;#ASMSTART
3963 ; GFX900-NEXT: ; def s[8:11]
3964 ; GFX900-NEXT: ;;#ASMEND
3965 ; GFX900-NEXT: ;;#ASMSTART
3966 ; GFX900-NEXT: ; def s[4:7]
3967 ; GFX900-NEXT: ;;#ASMEND
3968 ; GFX900-NEXT: s_mov_b32 s8, s11
3969 ; GFX900-NEXT: s_mov_b32 s9, s6
3970 ; GFX900-NEXT: ;;#ASMSTART
3971 ; GFX900-NEXT: ; use s[8:9]
3972 ; GFX900-NEXT: ;;#ASMEND
3973 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3975 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__7_2:
3977 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3978 ; GFX90A-NEXT: ;;#ASMSTART
3979 ; GFX90A-NEXT: ; def s[8:11]
3980 ; GFX90A-NEXT: ;;#ASMEND
3981 ; GFX90A-NEXT: ;;#ASMSTART
3982 ; GFX90A-NEXT: ; def s[4:7]
3983 ; GFX90A-NEXT: ;;#ASMEND
3984 ; GFX90A-NEXT: s_mov_b32 s8, s11
3985 ; GFX90A-NEXT: s_mov_b32 s9, s6
3986 ; GFX90A-NEXT: ;;#ASMSTART
3987 ; GFX90A-NEXT: ; use s[8:9]
3988 ; GFX90A-NEXT: ;;#ASMEND
3989 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3991 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__7_2:
3993 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3994 ; GFX940-NEXT: ;;#ASMSTART
3995 ; GFX940-NEXT: ; def s[0:3]
3996 ; GFX940-NEXT: ;;#ASMEND
3997 ; GFX940-NEXT: ;;#ASMSTART
3998 ; GFX940-NEXT: ; def s[4:7]
3999 ; GFX940-NEXT: ;;#ASMEND
4000 ; GFX940-NEXT: s_mov_b32 s8, s7
4001 ; GFX940-NEXT: s_mov_b32 s9, s2
4002 ; GFX940-NEXT: ;;#ASMSTART
4003 ; GFX940-NEXT: ; use s[8:9]
4004 ; GFX940-NEXT: ;;#ASMEND
4005 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4006 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4007 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4008 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 2>
4009 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4013 define void @s_shuffle_v2i32_v4i32__7_3() {
4014 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_3:
4016 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4017 ; GFX900-NEXT: ;;#ASMSTART
4018 ; GFX900-NEXT: ; def s[4:7]
4019 ; GFX900-NEXT: ;;#ASMEND
4020 ; GFX900-NEXT: ;;#ASMSTART
4021 ; GFX900-NEXT: ; def s[8:11]
4022 ; GFX900-NEXT: ;;#ASMEND
4023 ; GFX900-NEXT: s_mov_b32 s6, s11
4024 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
4025 ; GFX900-NEXT: ;;#ASMSTART
4026 ; GFX900-NEXT: ; use s[8:9]
4027 ; GFX900-NEXT: ;;#ASMEND
4028 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4030 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__7_3:
4032 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4033 ; GFX90A-NEXT: ;;#ASMSTART
4034 ; GFX90A-NEXT: ; def s[4:7]
4035 ; GFX90A-NEXT: ;;#ASMEND
4036 ; GFX90A-NEXT: ;;#ASMSTART
4037 ; GFX90A-NEXT: ; def s[8:11]
4038 ; GFX90A-NEXT: ;;#ASMEND
4039 ; GFX90A-NEXT: s_mov_b32 s6, s11
4040 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
4041 ; GFX90A-NEXT: ;;#ASMSTART
4042 ; GFX90A-NEXT: ; use s[8:9]
4043 ; GFX90A-NEXT: ;;#ASMEND
4044 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4046 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__7_3:
4048 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4049 ; GFX940-NEXT: ;;#ASMSTART
4050 ; GFX940-NEXT: ; def s[0:3]
4051 ; GFX940-NEXT: ;;#ASMEND
4052 ; GFX940-NEXT: ;;#ASMSTART
4053 ; GFX940-NEXT: ; def s[4:7]
4054 ; GFX940-NEXT: ;;#ASMEND
4055 ; GFX940-NEXT: s_mov_b32 s2, s7
4056 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
4057 ; GFX940-NEXT: ;;#ASMSTART
4058 ; GFX940-NEXT: ; use s[8:9]
4059 ; GFX940-NEXT: ;;#ASMEND
4060 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4061 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4062 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4063 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 3>
4064 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4068 define void @s_shuffle_v2i32_v4i32__7_4() {
4069 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_4:
4071 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4072 ; GFX900-NEXT: ;;#ASMSTART
4073 ; GFX900-NEXT: ; def s[4:7]
4074 ; GFX900-NEXT: ;;#ASMEND
4075 ; GFX900-NEXT: s_mov_b32 s8, s7
4076 ; GFX900-NEXT: s_mov_b32 s9, s4
4077 ; GFX900-NEXT: ;;#ASMSTART
4078 ; GFX900-NEXT: ; use s[8:9]
4079 ; GFX900-NEXT: ;;#ASMEND
4080 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4082 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__7_4:
4084 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4085 ; GFX90A-NEXT: ;;#ASMSTART
4086 ; GFX90A-NEXT: ; def s[4:7]
4087 ; GFX90A-NEXT: ;;#ASMEND
4088 ; GFX90A-NEXT: s_mov_b32 s8, s7
4089 ; GFX90A-NEXT: s_mov_b32 s9, s4
4090 ; GFX90A-NEXT: ;;#ASMSTART
4091 ; GFX90A-NEXT: ; use s[8:9]
4092 ; GFX90A-NEXT: ;;#ASMEND
4093 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4095 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__7_4:
4097 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4098 ; GFX940-NEXT: ;;#ASMSTART
4099 ; GFX940-NEXT: ; def s[0:3]
4100 ; GFX940-NEXT: ;;#ASMEND
4101 ; GFX940-NEXT: s_mov_b32 s8, s3
4102 ; GFX940-NEXT: s_mov_b32 s9, s0
4103 ; GFX940-NEXT: ;;#ASMSTART
4104 ; GFX940-NEXT: ; use s[8:9]
4105 ; GFX940-NEXT: ;;#ASMEND
4106 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4107 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4108 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4109 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 4>
4110 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4114 define void @s_shuffle_v2i32_v4i32__7_5() {
4115 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__7_5:
4117 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4118 ; GFX9-NEXT: ;;#ASMSTART
4119 ; GFX9-NEXT: ; def s[8:11]
4120 ; GFX9-NEXT: ;;#ASMEND
4121 ; GFX9-NEXT: s_mov_b32 s8, s11
4122 ; GFX9-NEXT: ;;#ASMSTART
4123 ; GFX9-NEXT: ; use s[8:9]
4124 ; GFX9-NEXT: ;;#ASMEND
4125 ; GFX9-NEXT: s_setpc_b64 s[30:31]
4126 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4127 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4128 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 5>
4129 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4133 define void @s_shuffle_v2i32_v4i32__7_6() {
4134 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_6:
4136 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4137 ; GFX900-NEXT: ;;#ASMSTART
4138 ; GFX900-NEXT: ; def s[4:7]
4139 ; GFX900-NEXT: ;;#ASMEND
4140 ; GFX900-NEXT: s_mov_b32 s8, s7
4141 ; GFX900-NEXT: s_mov_b32 s9, s6
4142 ; GFX900-NEXT: ;;#ASMSTART
4143 ; GFX900-NEXT: ; use s[8:9]
4144 ; GFX900-NEXT: ;;#ASMEND
4145 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4147 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__7_6:
4149 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4150 ; GFX90A-NEXT: ;;#ASMSTART
4151 ; GFX90A-NEXT: ; def s[4:7]
4152 ; GFX90A-NEXT: ;;#ASMEND
4153 ; GFX90A-NEXT: s_mov_b32 s8, s7
4154 ; GFX90A-NEXT: s_mov_b32 s9, s6
4155 ; GFX90A-NEXT: ;;#ASMSTART
4156 ; GFX90A-NEXT: ; use s[8:9]
4157 ; GFX90A-NEXT: ;;#ASMEND
4158 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4160 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__7_6:
4162 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4163 ; GFX940-NEXT: ;;#ASMSTART
4164 ; GFX940-NEXT: ; def s[0:3]
4165 ; GFX940-NEXT: ;;#ASMEND
4166 ; GFX940-NEXT: s_mov_b32 s8, s3
4167 ; GFX940-NEXT: s_mov_b32 s9, s2
4168 ; GFX940-NEXT: ;;#ASMSTART
4169 ; GFX940-NEXT: ; use s[8:9]
4170 ; GFX940-NEXT: ;;#ASMEND
4171 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4172 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4173 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4174 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 6>
4175 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4179 define void @s_shuffle_v2i32_v4i32__7_7() {
4180 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_7:
4182 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4183 ; GFX900-NEXT: ;;#ASMSTART
4184 ; GFX900-NEXT: ; def s[4:7]
4185 ; GFX900-NEXT: ;;#ASMEND
4186 ; GFX900-NEXT: s_mov_b32 s6, s7
4187 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
4188 ; GFX900-NEXT: ;;#ASMSTART
4189 ; GFX900-NEXT: ; use s[8:9]
4190 ; GFX900-NEXT: ;;#ASMEND
4191 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4193 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__7_7:
4195 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4196 ; GFX90A-NEXT: ;;#ASMSTART
4197 ; GFX90A-NEXT: ; def s[4:7]
4198 ; GFX90A-NEXT: ;;#ASMEND
4199 ; GFX90A-NEXT: s_mov_b32 s6, s7
4200 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
4201 ; GFX90A-NEXT: ;;#ASMSTART
4202 ; GFX90A-NEXT: ; use s[8:9]
4203 ; GFX90A-NEXT: ;;#ASMEND
4204 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4206 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__7_7:
4208 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4209 ; GFX940-NEXT: ;;#ASMSTART
4210 ; GFX940-NEXT: ; def s[0:3]
4211 ; GFX940-NEXT: ;;#ASMEND
4212 ; GFX940-NEXT: s_mov_b32 s2, s3
4213 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
4214 ; GFX940-NEXT: ;;#ASMSTART
4215 ; GFX940-NEXT: ; use s[8:9]
4216 ; GFX940-NEXT: ;;#ASMEND
4217 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4218 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4219 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4220 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 7, i32 7>
4221 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4225 define void @s_shuffle_v2i32_v4i32__u_0() {
4226 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_0:
4228 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4229 ; GFX900-NEXT: ;;#ASMSTART
4230 ; GFX900-NEXT: ; def s[4:7]
4231 ; GFX900-NEXT: ;;#ASMEND
4232 ; GFX900-NEXT: s_mov_b32 s9, s4
4233 ; GFX900-NEXT: ;;#ASMSTART
4234 ; GFX900-NEXT: ; use s[8:9]
4235 ; GFX900-NEXT: ;;#ASMEND
4236 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4238 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__u_0:
4240 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4241 ; GFX90A-NEXT: ;;#ASMSTART
4242 ; GFX90A-NEXT: ; def s[4:7]
4243 ; GFX90A-NEXT: ;;#ASMEND
4244 ; GFX90A-NEXT: s_mov_b32 s9, s4
4245 ; GFX90A-NEXT: ;;#ASMSTART
4246 ; GFX90A-NEXT: ; use s[8:9]
4247 ; GFX90A-NEXT: ;;#ASMEND
4248 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4250 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__u_0:
4252 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4253 ; GFX940-NEXT: ;;#ASMSTART
4254 ; GFX940-NEXT: ; def s[0:3]
4255 ; GFX940-NEXT: ;;#ASMEND
4256 ; GFX940-NEXT: s_mov_b32 s9, s0
4257 ; GFX940-NEXT: ;;#ASMSTART
4258 ; GFX940-NEXT: ; use s[8:9]
4259 ; GFX940-NEXT: ;;#ASMEND
4260 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4261 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4262 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 0>
4263 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4267 define void @s_shuffle_v2i32_v4i32__0_0() {
4268 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__0_0:
4270 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4271 ; GFX9-NEXT: ;;#ASMSTART
4272 ; GFX9-NEXT: ; def s[8:11]
4273 ; GFX9-NEXT: ;;#ASMEND
4274 ; GFX9-NEXT: s_mov_b32 s9, s8
4275 ; GFX9-NEXT: ;;#ASMSTART
4276 ; GFX9-NEXT: ; use s[8:9]
4277 ; GFX9-NEXT: ;;#ASMEND
4278 ; GFX9-NEXT: s_setpc_b64 s[30:31]
4279 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4280 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> zeroinitializer
4281 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4285 define void @s_shuffle_v2i32_v4i32__1_0() {
4286 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_0:
4288 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4289 ; GFX900-NEXT: ;;#ASMSTART
4290 ; GFX900-NEXT: ; def s[4:7]
4291 ; GFX900-NEXT: ;;#ASMEND
4292 ; GFX900-NEXT: s_mov_b32 s8, s5
4293 ; GFX900-NEXT: s_mov_b32 s9, s4
4294 ; GFX900-NEXT: ;;#ASMSTART
4295 ; GFX900-NEXT: ; use s[8:9]
4296 ; GFX900-NEXT: ;;#ASMEND
4297 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4299 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__1_0:
4301 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4302 ; GFX90A-NEXT: ;;#ASMSTART
4303 ; GFX90A-NEXT: ; def s[4:7]
4304 ; GFX90A-NEXT: ;;#ASMEND
4305 ; GFX90A-NEXT: s_mov_b32 s8, s5
4306 ; GFX90A-NEXT: s_mov_b32 s9, s4
4307 ; GFX90A-NEXT: ;;#ASMSTART
4308 ; GFX90A-NEXT: ; use s[8:9]
4309 ; GFX90A-NEXT: ;;#ASMEND
4310 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4312 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__1_0:
4314 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4315 ; GFX940-NEXT: ;;#ASMSTART
4316 ; GFX940-NEXT: ; def s[0:3]
4317 ; GFX940-NEXT: ;;#ASMEND
4318 ; GFX940-NEXT: s_mov_b32 s8, s1
4319 ; GFX940-NEXT: s_mov_b32 s9, s0
4320 ; GFX940-NEXT: ;;#ASMSTART
4321 ; GFX940-NEXT: ; use s[8:9]
4322 ; GFX940-NEXT: ;;#ASMEND
4323 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4324 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4325 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 0>
4326 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4330 define void @s_shuffle_v2i32_v4i32__2_0() {
4331 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_0:
4333 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4334 ; GFX900-NEXT: ;;#ASMSTART
4335 ; GFX900-NEXT: ; def s[4:7]
4336 ; GFX900-NEXT: ;;#ASMEND
4337 ; GFX900-NEXT: s_mov_b32 s7, s4
4338 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
4339 ; GFX900-NEXT: ;;#ASMSTART
4340 ; GFX900-NEXT: ; use s[8:9]
4341 ; GFX900-NEXT: ;;#ASMEND
4342 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4344 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_0:
4346 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4347 ; GFX90A-NEXT: ;;#ASMSTART
4348 ; GFX90A-NEXT: ; def s[4:7]
4349 ; GFX90A-NEXT: ;;#ASMEND
4350 ; GFX90A-NEXT: s_mov_b32 s7, s4
4351 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
4352 ; GFX90A-NEXT: ;;#ASMSTART
4353 ; GFX90A-NEXT: ; use s[8:9]
4354 ; GFX90A-NEXT: ;;#ASMEND
4355 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4357 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_0:
4359 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4360 ; GFX940-NEXT: ;;#ASMSTART
4361 ; GFX940-NEXT: ; def s[0:3]
4362 ; GFX940-NEXT: ;;#ASMEND
4363 ; GFX940-NEXT: s_mov_b32 s3, s0
4364 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
4365 ; GFX940-NEXT: ;;#ASMSTART
4366 ; GFX940-NEXT: ; use s[8:9]
4367 ; GFX940-NEXT: ;;#ASMEND
4368 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4369 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4370 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 0>
4371 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4375 define void @s_shuffle_v2i32_v4i32__3_0() {
4376 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_0:
4378 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4379 ; GFX900-NEXT: ;;#ASMSTART
4380 ; GFX900-NEXT: ; def s[4:7]
4381 ; GFX900-NEXT: ;;#ASMEND
4382 ; GFX900-NEXT: s_mov_b32 s8, s7
4383 ; GFX900-NEXT: s_mov_b32 s9, s4
4384 ; GFX900-NEXT: ;;#ASMSTART
4385 ; GFX900-NEXT: ; use s[8:9]
4386 ; GFX900-NEXT: ;;#ASMEND
4387 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4389 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__3_0:
4391 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4392 ; GFX90A-NEXT: ;;#ASMSTART
4393 ; GFX90A-NEXT: ; def s[4:7]
4394 ; GFX90A-NEXT: ;;#ASMEND
4395 ; GFX90A-NEXT: s_mov_b32 s8, s7
4396 ; GFX90A-NEXT: s_mov_b32 s9, s4
4397 ; GFX90A-NEXT: ;;#ASMSTART
4398 ; GFX90A-NEXT: ; use s[8:9]
4399 ; GFX90A-NEXT: ;;#ASMEND
4400 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4402 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__3_0:
4404 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4405 ; GFX940-NEXT: ;;#ASMSTART
4406 ; GFX940-NEXT: ; def s[0:3]
4407 ; GFX940-NEXT: ;;#ASMEND
4408 ; GFX940-NEXT: s_mov_b32 s8, s3
4409 ; GFX940-NEXT: s_mov_b32 s9, s0
4410 ; GFX940-NEXT: ;;#ASMSTART
4411 ; GFX940-NEXT: ; use s[8:9]
4412 ; GFX940-NEXT: ;;#ASMEND
4413 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4414 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4415 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 0>
4416 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4420 define void @s_shuffle_v2i32_v4i32__4_0() {
4421 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_0:
4423 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4424 ; GFX900-NEXT: ;;#ASMSTART
4425 ; GFX900-NEXT: ; def s[4:7]
4426 ; GFX900-NEXT: ;;#ASMEND
4427 ; GFX900-NEXT: s_mov_b32 s9, s4
4428 ; GFX900-NEXT: ;;#ASMSTART
4429 ; GFX900-NEXT: ; use s[8:9]
4430 ; GFX900-NEXT: ;;#ASMEND
4431 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4433 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__4_0:
4435 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4436 ; GFX90A-NEXT: ;;#ASMSTART
4437 ; GFX90A-NEXT: ; def s[4:7]
4438 ; GFX90A-NEXT: ;;#ASMEND
4439 ; GFX90A-NEXT: s_mov_b32 s9, s4
4440 ; GFX90A-NEXT: ;;#ASMSTART
4441 ; GFX90A-NEXT: ; use s[8:9]
4442 ; GFX90A-NEXT: ;;#ASMEND
4443 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4445 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__4_0:
4447 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4448 ; GFX940-NEXT: ;;#ASMSTART
4449 ; GFX940-NEXT: ; def s[0:3]
4450 ; GFX940-NEXT: ;;#ASMEND
4451 ; GFX940-NEXT: s_mov_b32 s9, s0
4452 ; GFX940-NEXT: ;;#ASMSTART
4453 ; GFX940-NEXT: ; use s[8:9]
4454 ; GFX940-NEXT: ;;#ASMEND
4455 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4456 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4457 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 0>
4458 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4462 define void @s_shuffle_v2i32_v4i32__5_0() {
4463 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_0:
4465 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4466 ; GFX900-NEXT: ;;#ASMSTART
4467 ; GFX900-NEXT: ; def s[8:11]
4468 ; GFX900-NEXT: ;;#ASMEND
4469 ; GFX900-NEXT: ;;#ASMSTART
4470 ; GFX900-NEXT: ; def s[4:7]
4471 ; GFX900-NEXT: ;;#ASMEND
4472 ; GFX900-NEXT: s_mov_b32 s8, s9
4473 ; GFX900-NEXT: s_mov_b32 s9, s4
4474 ; GFX900-NEXT: ;;#ASMSTART
4475 ; GFX900-NEXT: ; use s[8:9]
4476 ; GFX900-NEXT: ;;#ASMEND
4477 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4479 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__5_0:
4481 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4482 ; GFX90A-NEXT: ;;#ASMSTART
4483 ; GFX90A-NEXT: ; def s[8:11]
4484 ; GFX90A-NEXT: ;;#ASMEND
4485 ; GFX90A-NEXT: ;;#ASMSTART
4486 ; GFX90A-NEXT: ; def s[4:7]
4487 ; GFX90A-NEXT: ;;#ASMEND
4488 ; GFX90A-NEXT: s_mov_b32 s8, s9
4489 ; GFX90A-NEXT: s_mov_b32 s9, s4
4490 ; GFX90A-NEXT: ;;#ASMSTART
4491 ; GFX90A-NEXT: ; use s[8:9]
4492 ; GFX90A-NEXT: ;;#ASMEND
4493 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4495 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__5_0:
4497 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4498 ; GFX940-NEXT: ;;#ASMSTART
4499 ; GFX940-NEXT: ; def s[0:3]
4500 ; GFX940-NEXT: ;;#ASMEND
4501 ; GFX940-NEXT: ;;#ASMSTART
4502 ; GFX940-NEXT: ; def s[4:7]
4503 ; GFX940-NEXT: ;;#ASMEND
4504 ; GFX940-NEXT: s_mov_b32 s8, s5
4505 ; GFX940-NEXT: s_mov_b32 s9, s0
4506 ; GFX940-NEXT: ;;#ASMSTART
4507 ; GFX940-NEXT: ; use s[8:9]
4508 ; GFX940-NEXT: ;;#ASMEND
4509 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4510 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4511 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4512 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 0>
4513 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4517 define void @s_shuffle_v2i32_v4i32__6_0() {
4518 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_0:
4520 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4521 ; GFX900-NEXT: ;;#ASMSTART
4522 ; GFX900-NEXT: ; def s[8:11]
4523 ; GFX900-NEXT: ;;#ASMEND
4524 ; GFX900-NEXT: ;;#ASMSTART
4525 ; GFX900-NEXT: ; def s[4:7]
4526 ; GFX900-NEXT: ;;#ASMEND
4527 ; GFX900-NEXT: s_mov_b32 s11, s4
4528 ; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11]
4529 ; GFX900-NEXT: ;;#ASMSTART
4530 ; GFX900-NEXT: ; use s[8:9]
4531 ; GFX900-NEXT: ;;#ASMEND
4532 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4534 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_0:
4536 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4537 ; GFX90A-NEXT: ;;#ASMSTART
4538 ; GFX90A-NEXT: ; def s[8:11]
4539 ; GFX90A-NEXT: ;;#ASMEND
4540 ; GFX90A-NEXT: ;;#ASMSTART
4541 ; GFX90A-NEXT: ; def s[4:7]
4542 ; GFX90A-NEXT: ;;#ASMEND
4543 ; GFX90A-NEXT: s_mov_b32 s11, s4
4544 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11]
4545 ; GFX90A-NEXT: ;;#ASMSTART
4546 ; GFX90A-NEXT: ; use s[8:9]
4547 ; GFX90A-NEXT: ;;#ASMEND
4548 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4550 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_0:
4552 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4553 ; GFX940-NEXT: ;;#ASMSTART
4554 ; GFX940-NEXT: ; def s[4:7]
4555 ; GFX940-NEXT: ;;#ASMEND
4556 ; GFX940-NEXT: ;;#ASMSTART
4557 ; GFX940-NEXT: ; def s[0:3]
4558 ; GFX940-NEXT: ;;#ASMEND
4559 ; GFX940-NEXT: s_mov_b32 s7, s0
4560 ; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7]
4561 ; GFX940-NEXT: ;;#ASMSTART
4562 ; GFX940-NEXT: ; use s[8:9]
4563 ; GFX940-NEXT: ;;#ASMEND
4564 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4565 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4566 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4567 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 0>
4568 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4572 define void @s_shuffle_v2i32_v4i32__u_1() {
4573 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_1:
4575 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4576 ; GFX900-NEXT: ;;#ASMSTART
4577 ; GFX900-NEXT: ; def s[8:11]
4578 ; GFX900-NEXT: ;;#ASMEND
4579 ; GFX900-NEXT: ;;#ASMSTART
4580 ; GFX900-NEXT: ; use s[8:9]
4581 ; GFX900-NEXT: ;;#ASMEND
4582 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4584 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__u_1:
4586 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4587 ; GFX90A-NEXT: ;;#ASMSTART
4588 ; GFX90A-NEXT: ; def s[8:11]
4589 ; GFX90A-NEXT: ;;#ASMEND
4590 ; GFX90A-NEXT: ;;#ASMSTART
4591 ; GFX90A-NEXT: ; use s[8:9]
4592 ; GFX90A-NEXT: ;;#ASMEND
4593 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4595 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__u_1:
4597 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4598 ; GFX940-NEXT: ;;#ASMSTART
4599 ; GFX940-NEXT: ; def s[8:11]
4600 ; GFX940-NEXT: ;;#ASMEND
4601 ; GFX940-NEXT: s_nop 0
4602 ; GFX940-NEXT: ;;#ASMSTART
4603 ; GFX940-NEXT: ; use s[8:9]
4604 ; GFX940-NEXT: ;;#ASMEND
4605 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4606 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4607 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 1>
4608 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4612 define void @s_shuffle_v2i32_v4i32__0_1() {
4613 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_1:
4615 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4616 ; GFX900-NEXT: ;;#ASMSTART
4617 ; GFX900-NEXT: ; def s[8:11]
4618 ; GFX900-NEXT: ;;#ASMEND
4619 ; GFX900-NEXT: ;;#ASMSTART
4620 ; GFX900-NEXT: ; use s[8:9]
4621 ; GFX900-NEXT: ;;#ASMEND
4622 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4624 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__0_1:
4626 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4627 ; GFX90A-NEXT: ;;#ASMSTART
4628 ; GFX90A-NEXT: ; def s[8:11]
4629 ; GFX90A-NEXT: ;;#ASMEND
4630 ; GFX90A-NEXT: ;;#ASMSTART
4631 ; GFX90A-NEXT: ; use s[8:9]
4632 ; GFX90A-NEXT: ;;#ASMEND
4633 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4635 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__0_1:
4637 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4638 ; GFX940-NEXT: ;;#ASMSTART
4639 ; GFX940-NEXT: ; def s[8:11]
4640 ; GFX940-NEXT: ;;#ASMEND
4641 ; GFX940-NEXT: s_nop 0
4642 ; GFX940-NEXT: ;;#ASMSTART
4643 ; GFX940-NEXT: ; use s[8:9]
4644 ; GFX940-NEXT: ;;#ASMEND
4645 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4646 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4647 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 1>
4648 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4652 define void @s_shuffle_v2i32_v4i32__1_1() {
4653 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__1_1:
4655 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4656 ; GFX9-NEXT: ;;#ASMSTART
4657 ; GFX9-NEXT: ; def s[8:11]
4658 ; GFX9-NEXT: ;;#ASMEND
4659 ; GFX9-NEXT: s_mov_b32 s8, s9
4660 ; GFX9-NEXT: ;;#ASMSTART
4661 ; GFX9-NEXT: ; use s[8:9]
4662 ; GFX9-NEXT: ;;#ASMEND
4663 ; GFX9-NEXT: s_setpc_b64 s[30:31]
4664 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4665 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 1>
4666 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4670 define void @s_shuffle_v2i32_v4i32__2_1() {
4671 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_1:
4673 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4674 ; GFX900-NEXT: ;;#ASMSTART
4675 ; GFX900-NEXT: ; def s[4:7]
4676 ; GFX900-NEXT: ;;#ASMEND
4677 ; GFX900-NEXT: s_mov_b32 s7, s5
4678 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
4679 ; GFX900-NEXT: ;;#ASMSTART
4680 ; GFX900-NEXT: ; use s[8:9]
4681 ; GFX900-NEXT: ;;#ASMEND
4682 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4684 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_1:
4686 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4687 ; GFX90A-NEXT: ;;#ASMSTART
4688 ; GFX90A-NEXT: ; def s[4:7]
4689 ; GFX90A-NEXT: ;;#ASMEND
4690 ; GFX90A-NEXT: s_mov_b32 s7, s5
4691 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
4692 ; GFX90A-NEXT: ;;#ASMSTART
4693 ; GFX90A-NEXT: ; use s[8:9]
4694 ; GFX90A-NEXT: ;;#ASMEND
4695 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4697 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_1:
4699 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4700 ; GFX940-NEXT: ;;#ASMSTART
4701 ; GFX940-NEXT: ; def s[0:3]
4702 ; GFX940-NEXT: ;;#ASMEND
4703 ; GFX940-NEXT: s_mov_b32 s3, s1
4704 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
4705 ; GFX940-NEXT: ;;#ASMSTART
4706 ; GFX940-NEXT: ; use s[8:9]
4707 ; GFX940-NEXT: ;;#ASMEND
4708 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4709 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4710 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 1>
4711 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4715 define void @s_shuffle_v2i32_v4i32__3_1() {
4716 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__3_1:
4718 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4719 ; GFX9-NEXT: ;;#ASMSTART
4720 ; GFX9-NEXT: ; def s[8:11]
4721 ; GFX9-NEXT: ;;#ASMEND
4722 ; GFX9-NEXT: s_mov_b32 s8, s11
4723 ; GFX9-NEXT: ;;#ASMSTART
4724 ; GFX9-NEXT: ; use s[8:9]
4725 ; GFX9-NEXT: ;;#ASMEND
4726 ; GFX9-NEXT: s_setpc_b64 s[30:31]
4727 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4728 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 1>
4729 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4733 define void @s_shuffle_v2i32_v4i32__4_1() {
4734 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_1:
4736 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4737 ; GFX900-NEXT: ;;#ASMSTART
4738 ; GFX900-NEXT: ; def s[8:11]
4739 ; GFX900-NEXT: ;;#ASMEND
4740 ; GFX900-NEXT: ;;#ASMSTART
4741 ; GFX900-NEXT: ; use s[8:9]
4742 ; GFX900-NEXT: ;;#ASMEND
4743 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4745 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__4_1:
4747 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4748 ; GFX90A-NEXT: ;;#ASMSTART
4749 ; GFX90A-NEXT: ; def s[8:11]
4750 ; GFX90A-NEXT: ;;#ASMEND
4751 ; GFX90A-NEXT: ;;#ASMSTART
4752 ; GFX90A-NEXT: ; use s[8:9]
4753 ; GFX90A-NEXT: ;;#ASMEND
4754 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4756 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__4_1:
4758 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4759 ; GFX940-NEXT: ;;#ASMSTART
4760 ; GFX940-NEXT: ; def s[8:11]
4761 ; GFX940-NEXT: ;;#ASMEND
4762 ; GFX940-NEXT: s_nop 0
4763 ; GFX940-NEXT: ;;#ASMSTART
4764 ; GFX940-NEXT: ; use s[8:9]
4765 ; GFX940-NEXT: ;;#ASMEND
4766 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4767 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4768 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 1>
4769 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4773 define void @s_shuffle_v2i32_v4i32__5_1() {
4774 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_1:
4776 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4777 ; GFX900-NEXT: ;;#ASMSTART
4778 ; GFX900-NEXT: ; def s[8:11]
4779 ; GFX900-NEXT: ;;#ASMEND
4780 ; GFX900-NEXT: ;;#ASMSTART
4781 ; GFX900-NEXT: ; def s[4:7]
4782 ; GFX900-NEXT: ;;#ASMEND
4783 ; GFX900-NEXT: s_mov_b32 s8, s5
4784 ; GFX900-NEXT: ;;#ASMSTART
4785 ; GFX900-NEXT: ; use s[8:9]
4786 ; GFX900-NEXT: ;;#ASMEND
4787 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4789 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__5_1:
4791 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4792 ; GFX90A-NEXT: ;;#ASMSTART
4793 ; GFX90A-NEXT: ; def s[8:11]
4794 ; GFX90A-NEXT: ;;#ASMEND
4795 ; GFX90A-NEXT: ;;#ASMSTART
4796 ; GFX90A-NEXT: ; def s[4:7]
4797 ; GFX90A-NEXT: ;;#ASMEND
4798 ; GFX90A-NEXT: s_mov_b32 s8, s5
4799 ; GFX90A-NEXT: ;;#ASMSTART
4800 ; GFX90A-NEXT: ; use s[8:9]
4801 ; GFX90A-NEXT: ;;#ASMEND
4802 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4804 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__5_1:
4806 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4807 ; GFX940-NEXT: ;;#ASMSTART
4808 ; GFX940-NEXT: ; def s[8:11]
4809 ; GFX940-NEXT: ;;#ASMEND
4810 ; GFX940-NEXT: ;;#ASMSTART
4811 ; GFX940-NEXT: ; def s[0:3]
4812 ; GFX940-NEXT: ;;#ASMEND
4813 ; GFX940-NEXT: s_mov_b32 s8, s1
4814 ; GFX940-NEXT: ;;#ASMSTART
4815 ; GFX940-NEXT: ; use s[8:9]
4816 ; GFX940-NEXT: ;;#ASMEND
4817 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4818 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4819 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4820 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 1>
4821 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4825 define void @s_shuffle_v2i32_v4i32__6_1() {
4826 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_1:
4828 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4829 ; GFX900-NEXT: ;;#ASMSTART
4830 ; GFX900-NEXT: ; def s[8:11]
4831 ; GFX900-NEXT: ;;#ASMEND
4832 ; GFX900-NEXT: ;;#ASMSTART
4833 ; GFX900-NEXT: ; def s[4:7]
4834 ; GFX900-NEXT: ;;#ASMEND
4835 ; GFX900-NEXT: s_mov_b32 s11, s5
4836 ; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11]
4837 ; GFX900-NEXT: ;;#ASMSTART
4838 ; GFX900-NEXT: ; use s[8:9]
4839 ; GFX900-NEXT: ;;#ASMEND
4840 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4842 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_1:
4844 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4845 ; GFX90A-NEXT: ;;#ASMSTART
4846 ; GFX90A-NEXT: ; def s[8:11]
4847 ; GFX90A-NEXT: ;;#ASMEND
4848 ; GFX90A-NEXT: ;;#ASMSTART
4849 ; GFX90A-NEXT: ; def s[4:7]
4850 ; GFX90A-NEXT: ;;#ASMEND
4851 ; GFX90A-NEXT: s_mov_b32 s11, s5
4852 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11]
4853 ; GFX90A-NEXT: ;;#ASMSTART
4854 ; GFX90A-NEXT: ; use s[8:9]
4855 ; GFX90A-NEXT: ;;#ASMEND
4856 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4858 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_1:
4860 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4861 ; GFX940-NEXT: ;;#ASMSTART
4862 ; GFX940-NEXT: ; def s[4:7]
4863 ; GFX940-NEXT: ;;#ASMEND
4864 ; GFX940-NEXT: ;;#ASMSTART
4865 ; GFX940-NEXT: ; def s[0:3]
4866 ; GFX940-NEXT: ;;#ASMEND
4867 ; GFX940-NEXT: s_mov_b32 s7, s1
4868 ; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7]
4869 ; GFX940-NEXT: ;;#ASMSTART
4870 ; GFX940-NEXT: ; use s[8:9]
4871 ; GFX940-NEXT: ;;#ASMEND
4872 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4873 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4874 %vec1 = call <4 x i32> asm "; def $0", "=s"()
4875 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 1>
4876 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4880 define void @s_shuffle_v2i32_v4i32__u_2() {
4881 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_2:
4883 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4884 ; GFX900-NEXT: ;;#ASMSTART
4885 ; GFX900-NEXT: ; def s[4:7]
4886 ; GFX900-NEXT: ;;#ASMEND
4887 ; GFX900-NEXT: s_mov_b32 s9, s6
4888 ; GFX900-NEXT: ;;#ASMSTART
4889 ; GFX900-NEXT: ; use s[8:9]
4890 ; GFX900-NEXT: ;;#ASMEND
4891 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4893 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__u_2:
4895 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4896 ; GFX90A-NEXT: ;;#ASMSTART
4897 ; GFX90A-NEXT: ; def s[4:7]
4898 ; GFX90A-NEXT: ;;#ASMEND
4899 ; GFX90A-NEXT: s_mov_b32 s9, s6
4900 ; GFX90A-NEXT: ;;#ASMSTART
4901 ; GFX90A-NEXT: ; use s[8:9]
4902 ; GFX90A-NEXT: ;;#ASMEND
4903 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4905 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__u_2:
4907 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4908 ; GFX940-NEXT: ;;#ASMSTART
4909 ; GFX940-NEXT: ; def s[0:3]
4910 ; GFX940-NEXT: ;;#ASMEND
4911 ; GFX940-NEXT: s_mov_b32 s9, s2
4912 ; GFX940-NEXT: ;;#ASMSTART
4913 ; GFX940-NEXT: ; use s[8:9]
4914 ; GFX940-NEXT: ;;#ASMEND
4915 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4916 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4917 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 2>
4918 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4922 define void @s_shuffle_v2i32_v4i32__0_2() {
4923 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__0_2:
4925 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4926 ; GFX9-NEXT: ;;#ASMSTART
4927 ; GFX9-NEXT: ; def s[8:11]
4928 ; GFX9-NEXT: ;;#ASMEND
4929 ; GFX9-NEXT: s_mov_b32 s9, s10
4930 ; GFX9-NEXT: ;;#ASMSTART
4931 ; GFX9-NEXT: ; use s[8:9]
4932 ; GFX9-NEXT: ;;#ASMEND
4933 ; GFX9-NEXT: s_setpc_b64 s[30:31]
4934 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4935 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 2>
4936 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4940 define void @s_shuffle_v2i32_v4i32__1_2() {
4941 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_2:
4943 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4944 ; GFX900-NEXT: ;;#ASMSTART
4945 ; GFX900-NEXT: ; def s[4:7]
4946 ; GFX900-NEXT: ;;#ASMEND
4947 ; GFX900-NEXT: s_mov_b32 s8, s5
4948 ; GFX900-NEXT: s_mov_b32 s9, s6
4949 ; GFX900-NEXT: ;;#ASMSTART
4950 ; GFX900-NEXT: ; use s[8:9]
4951 ; GFX900-NEXT: ;;#ASMEND
4952 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4954 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__1_2:
4956 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4957 ; GFX90A-NEXT: ;;#ASMSTART
4958 ; GFX90A-NEXT: ; def s[4:7]
4959 ; GFX90A-NEXT: ;;#ASMEND
4960 ; GFX90A-NEXT: s_mov_b32 s8, s5
4961 ; GFX90A-NEXT: s_mov_b32 s9, s6
4962 ; GFX90A-NEXT: ;;#ASMSTART
4963 ; GFX90A-NEXT: ; use s[8:9]
4964 ; GFX90A-NEXT: ;;#ASMEND
4965 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4967 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__1_2:
4969 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4970 ; GFX940-NEXT: ;;#ASMSTART
4971 ; GFX940-NEXT: ; def s[0:3]
4972 ; GFX940-NEXT: ;;#ASMEND
4973 ; GFX940-NEXT: s_mov_b32 s8, s1
4974 ; GFX940-NEXT: s_mov_b32 s9, s2
4975 ; GFX940-NEXT: ;;#ASMSTART
4976 ; GFX940-NEXT: ; use s[8:9]
4977 ; GFX940-NEXT: ;;#ASMEND
4978 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4979 %vec0 = call <4 x i32> asm "; def $0", "=s"()
4980 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 2>
4981 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4985 define void @s_shuffle_v2i32_v4i32__2_2() {
4986 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_2:
4988 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4989 ; GFX900-NEXT: ;;#ASMSTART
4990 ; GFX900-NEXT: ; def s[4:7]
4991 ; GFX900-NEXT: ;;#ASMEND
4992 ; GFX900-NEXT: s_mov_b32 s7, s6
4993 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
4994 ; GFX900-NEXT: ;;#ASMSTART
4995 ; GFX900-NEXT: ; use s[8:9]
4996 ; GFX900-NEXT: ;;#ASMEND
4997 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4999 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_2:
5001 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5002 ; GFX90A-NEXT: ;;#ASMSTART
5003 ; GFX90A-NEXT: ; def s[4:7]
5004 ; GFX90A-NEXT: ;;#ASMEND
5005 ; GFX90A-NEXT: s_mov_b32 s7, s6
5006 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5007 ; GFX90A-NEXT: ;;#ASMSTART
5008 ; GFX90A-NEXT: ; use s[8:9]
5009 ; GFX90A-NEXT: ;;#ASMEND
5010 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5012 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_2:
5014 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5015 ; GFX940-NEXT: ;;#ASMSTART
5016 ; GFX940-NEXT: ; def s[0:3]
5017 ; GFX940-NEXT: ;;#ASMEND
5018 ; GFX940-NEXT: s_mov_b32 s3, s2
5019 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5020 ; GFX940-NEXT: ;;#ASMSTART
5021 ; GFX940-NEXT: ; use s[8:9]
5022 ; GFX940-NEXT: ;;#ASMEND
5023 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5024 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5025 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 2>
5026 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5030 define void @s_shuffle_v2i32_v4i32__3_2() {
5031 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_2:
5033 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5034 ; GFX900-NEXT: ;;#ASMSTART
5035 ; GFX900-NEXT: ; def s[4:7]
5036 ; GFX900-NEXT: ;;#ASMEND
5037 ; GFX900-NEXT: s_mov_b32 s8, s7
5038 ; GFX900-NEXT: s_mov_b32 s9, s6
5039 ; GFX900-NEXT: ;;#ASMSTART
5040 ; GFX900-NEXT: ; use s[8:9]
5041 ; GFX900-NEXT: ;;#ASMEND
5042 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5044 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__3_2:
5046 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5047 ; GFX90A-NEXT: ;;#ASMSTART
5048 ; GFX90A-NEXT: ; def s[4:7]
5049 ; GFX90A-NEXT: ;;#ASMEND
5050 ; GFX90A-NEXT: s_mov_b32 s8, s7
5051 ; GFX90A-NEXT: s_mov_b32 s9, s6
5052 ; GFX90A-NEXT: ;;#ASMSTART
5053 ; GFX90A-NEXT: ; use s[8:9]
5054 ; GFX90A-NEXT: ;;#ASMEND
5055 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5057 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__3_2:
5059 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5060 ; GFX940-NEXT: ;;#ASMSTART
5061 ; GFX940-NEXT: ; def s[0:3]
5062 ; GFX940-NEXT: ;;#ASMEND
5063 ; GFX940-NEXT: s_mov_b32 s8, s3
5064 ; GFX940-NEXT: s_mov_b32 s9, s2
5065 ; GFX940-NEXT: ;;#ASMSTART
5066 ; GFX940-NEXT: ; use s[8:9]
5067 ; GFX940-NEXT: ;;#ASMEND
5068 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5069 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5070 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 2>
5071 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5075 define void @s_shuffle_v2i32_v4i32__4_2() {
5076 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_2:
5078 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5079 ; GFX900-NEXT: ;;#ASMSTART
5080 ; GFX900-NEXT: ; def s[4:7]
5081 ; GFX900-NEXT: ;;#ASMEND
5082 ; GFX900-NEXT: s_mov_b32 s9, s6
5083 ; GFX900-NEXT: ;;#ASMSTART
5084 ; GFX900-NEXT: ; use s[8:9]
5085 ; GFX900-NEXT: ;;#ASMEND
5086 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5088 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__4_2:
5090 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5091 ; GFX90A-NEXT: ;;#ASMSTART
5092 ; GFX90A-NEXT: ; def s[4:7]
5093 ; GFX90A-NEXT: ;;#ASMEND
5094 ; GFX90A-NEXT: s_mov_b32 s9, s6
5095 ; GFX90A-NEXT: ;;#ASMSTART
5096 ; GFX90A-NEXT: ; use s[8:9]
5097 ; GFX90A-NEXT: ;;#ASMEND
5098 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5100 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__4_2:
5102 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5103 ; GFX940-NEXT: ;;#ASMSTART
5104 ; GFX940-NEXT: ; def s[0:3]
5105 ; GFX940-NEXT: ;;#ASMEND
5106 ; GFX940-NEXT: s_mov_b32 s9, s2
5107 ; GFX940-NEXT: ;;#ASMSTART
5108 ; GFX940-NEXT: ; use s[8:9]
5109 ; GFX940-NEXT: ;;#ASMEND
5110 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5111 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5112 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 2>
5113 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5117 define void @s_shuffle_v2i32_v4i32__5_2() {
5118 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_2:
5120 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5121 ; GFX900-NEXT: ;;#ASMSTART
5122 ; GFX900-NEXT: ; def s[8:11]
5123 ; GFX900-NEXT: ;;#ASMEND
5124 ; GFX900-NEXT: ;;#ASMSTART
5125 ; GFX900-NEXT: ; def s[4:7]
5126 ; GFX900-NEXT: ;;#ASMEND
5127 ; GFX900-NEXT: s_mov_b32 s8, s9
5128 ; GFX900-NEXT: s_mov_b32 s9, s6
5129 ; GFX900-NEXT: ;;#ASMSTART
5130 ; GFX900-NEXT: ; use s[8:9]
5131 ; GFX900-NEXT: ;;#ASMEND
5132 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5134 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__5_2:
5136 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5137 ; GFX90A-NEXT: ;;#ASMSTART
5138 ; GFX90A-NEXT: ; def s[8:11]
5139 ; GFX90A-NEXT: ;;#ASMEND
5140 ; GFX90A-NEXT: ;;#ASMSTART
5141 ; GFX90A-NEXT: ; def s[4:7]
5142 ; GFX90A-NEXT: ;;#ASMEND
5143 ; GFX90A-NEXT: s_mov_b32 s8, s9
5144 ; GFX90A-NEXT: s_mov_b32 s9, s6
5145 ; GFX90A-NEXT: ;;#ASMSTART
5146 ; GFX90A-NEXT: ; use s[8:9]
5147 ; GFX90A-NEXT: ;;#ASMEND
5148 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5150 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__5_2:
5152 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5153 ; GFX940-NEXT: ;;#ASMSTART
5154 ; GFX940-NEXT: ; def s[0:3]
5155 ; GFX940-NEXT: ;;#ASMEND
5156 ; GFX940-NEXT: ;;#ASMSTART
5157 ; GFX940-NEXT: ; def s[4:7]
5158 ; GFX940-NEXT: ;;#ASMEND
5159 ; GFX940-NEXT: s_mov_b32 s8, s5
5160 ; GFX940-NEXT: s_mov_b32 s9, s2
5161 ; GFX940-NEXT: ;;#ASMSTART
5162 ; GFX940-NEXT: ; use s[8:9]
5163 ; GFX940-NEXT: ;;#ASMEND
5164 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5165 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5166 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5167 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 2>
5168 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5172 define void @s_shuffle_v2i32_v4i32__6_2() {
5173 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_2:
5175 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5176 ; GFX900-NEXT: ;;#ASMSTART
5177 ; GFX900-NEXT: ; def s[8:11]
5178 ; GFX900-NEXT: ;;#ASMEND
5179 ; GFX900-NEXT: ;;#ASMSTART
5180 ; GFX900-NEXT: ; def s[4:7]
5181 ; GFX900-NEXT: ;;#ASMEND
5182 ; GFX900-NEXT: s_mov_b32 s11, s6
5183 ; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11]
5184 ; GFX900-NEXT: ;;#ASMSTART
5185 ; GFX900-NEXT: ; use s[8:9]
5186 ; GFX900-NEXT: ;;#ASMEND
5187 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5189 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_2:
5191 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5192 ; GFX90A-NEXT: ;;#ASMSTART
5193 ; GFX90A-NEXT: ; def s[8:11]
5194 ; GFX90A-NEXT: ;;#ASMEND
5195 ; GFX90A-NEXT: ;;#ASMSTART
5196 ; GFX90A-NEXT: ; def s[4:7]
5197 ; GFX90A-NEXT: ;;#ASMEND
5198 ; GFX90A-NEXT: s_mov_b32 s11, s6
5199 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11]
5200 ; GFX90A-NEXT: ;;#ASMSTART
5201 ; GFX90A-NEXT: ; use s[8:9]
5202 ; GFX90A-NEXT: ;;#ASMEND
5203 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5205 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_2:
5207 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5208 ; GFX940-NEXT: ;;#ASMSTART
5209 ; GFX940-NEXT: ; def s[4:7]
5210 ; GFX940-NEXT: ;;#ASMEND
5211 ; GFX940-NEXT: ;;#ASMSTART
5212 ; GFX940-NEXT: ; def s[0:3]
5213 ; GFX940-NEXT: ;;#ASMEND
5214 ; GFX940-NEXT: s_mov_b32 s7, s2
5215 ; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7]
5216 ; GFX940-NEXT: ;;#ASMSTART
5217 ; GFX940-NEXT: ; use s[8:9]
5218 ; GFX940-NEXT: ;;#ASMEND
5219 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5220 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5221 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5222 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 2>
5223 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5227 define void @s_shuffle_v2i32_v4i32__u_3() {
5228 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_3:
5230 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5231 ; GFX900-NEXT: ;;#ASMSTART
5232 ; GFX900-NEXT: ; def s[4:7]
5233 ; GFX900-NEXT: ;;#ASMEND
5234 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
5235 ; GFX900-NEXT: ;;#ASMSTART
5236 ; GFX900-NEXT: ; use s[8:9]
5237 ; GFX900-NEXT: ;;#ASMEND
5238 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5240 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__u_3:
5242 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5243 ; GFX90A-NEXT: ;;#ASMSTART
5244 ; GFX90A-NEXT: ; def s[4:7]
5245 ; GFX90A-NEXT: ;;#ASMEND
5246 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5247 ; GFX90A-NEXT: ;;#ASMSTART
5248 ; GFX90A-NEXT: ; use s[8:9]
5249 ; GFX90A-NEXT: ;;#ASMEND
5250 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5252 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__u_3:
5254 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5255 ; GFX940-NEXT: ;;#ASMSTART
5256 ; GFX940-NEXT: ; def s[0:3]
5257 ; GFX940-NEXT: ;;#ASMEND
5258 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5259 ; GFX940-NEXT: ;;#ASMSTART
5260 ; GFX940-NEXT: ; use s[8:9]
5261 ; GFX940-NEXT: ;;#ASMEND
5262 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5263 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5264 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 3>
5265 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5269 define void @s_shuffle_v2i32_v4i32__0_3() {
5270 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__0_3:
5272 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5273 ; GFX9-NEXT: ;;#ASMSTART
5274 ; GFX9-NEXT: ; def s[8:11]
5275 ; GFX9-NEXT: ;;#ASMEND
5276 ; GFX9-NEXT: s_mov_b32 s9, s11
5277 ; GFX9-NEXT: ;;#ASMSTART
5278 ; GFX9-NEXT: ; use s[8:9]
5279 ; GFX9-NEXT: ;;#ASMEND
5280 ; GFX9-NEXT: s_setpc_b64 s[30:31]
5281 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5282 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 3>
5283 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5287 define void @s_shuffle_v2i32_v4i32__1_3() {
5288 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_3:
5290 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5291 ; GFX900-NEXT: ;;#ASMSTART
5292 ; GFX900-NEXT: ; def s[4:7]
5293 ; GFX900-NEXT: ;;#ASMEND
5294 ; GFX900-NEXT: s_mov_b32 s6, s5
5295 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
5296 ; GFX900-NEXT: ;;#ASMSTART
5297 ; GFX900-NEXT: ; use s[8:9]
5298 ; GFX900-NEXT: ;;#ASMEND
5299 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5301 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__1_3:
5303 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5304 ; GFX90A-NEXT: ;;#ASMSTART
5305 ; GFX90A-NEXT: ; def s[4:7]
5306 ; GFX90A-NEXT: ;;#ASMEND
5307 ; GFX90A-NEXT: s_mov_b32 s6, s5
5308 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5309 ; GFX90A-NEXT: ;;#ASMSTART
5310 ; GFX90A-NEXT: ; use s[8:9]
5311 ; GFX90A-NEXT: ;;#ASMEND
5312 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5314 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__1_3:
5316 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5317 ; GFX940-NEXT: ;;#ASMSTART
5318 ; GFX940-NEXT: ; def s[0:3]
5319 ; GFX940-NEXT: ;;#ASMEND
5320 ; GFX940-NEXT: s_mov_b32 s2, s1
5321 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5322 ; GFX940-NEXT: ;;#ASMSTART
5323 ; GFX940-NEXT: ; use s[8:9]
5324 ; GFX940-NEXT: ;;#ASMEND
5325 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5326 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5327 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 3>
5328 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5332 define void @s_shuffle_v2i32_v4i32__2_3() {
5333 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_3:
5335 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5336 ; GFX900-NEXT: ;;#ASMSTART
5337 ; GFX900-NEXT: ; def s[4:7]
5338 ; GFX900-NEXT: ;;#ASMEND
5339 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
5340 ; GFX900-NEXT: ;;#ASMSTART
5341 ; GFX900-NEXT: ; use s[8:9]
5342 ; GFX900-NEXT: ;;#ASMEND
5343 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5345 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_3:
5347 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5348 ; GFX90A-NEXT: ;;#ASMSTART
5349 ; GFX90A-NEXT: ; def s[4:7]
5350 ; GFX90A-NEXT: ;;#ASMEND
5351 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5352 ; GFX90A-NEXT: ;;#ASMSTART
5353 ; GFX90A-NEXT: ; use s[8:9]
5354 ; GFX90A-NEXT: ;;#ASMEND
5355 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5357 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_3:
5359 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5360 ; GFX940-NEXT: ;;#ASMSTART
5361 ; GFX940-NEXT: ; def s[0:3]
5362 ; GFX940-NEXT: ;;#ASMEND
5363 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5364 ; GFX940-NEXT: ;;#ASMSTART
5365 ; GFX940-NEXT: ; use s[8:9]
5366 ; GFX940-NEXT: ;;#ASMEND
5367 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5368 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5369 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 3>
5370 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5374 define void @s_shuffle_v2i32_v4i32__3_3() {
5375 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_3:
5377 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5378 ; GFX900-NEXT: ;;#ASMSTART
5379 ; GFX900-NEXT: ; def s[4:7]
5380 ; GFX900-NEXT: ;;#ASMEND
5381 ; GFX900-NEXT: s_mov_b32 s6, s7
5382 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
5383 ; GFX900-NEXT: ;;#ASMSTART
5384 ; GFX900-NEXT: ; use s[8:9]
5385 ; GFX900-NEXT: ;;#ASMEND
5386 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5388 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__3_3:
5390 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5391 ; GFX90A-NEXT: ;;#ASMSTART
5392 ; GFX90A-NEXT: ; def s[4:7]
5393 ; GFX90A-NEXT: ;;#ASMEND
5394 ; GFX90A-NEXT: s_mov_b32 s6, s7
5395 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5396 ; GFX90A-NEXT: ;;#ASMSTART
5397 ; GFX90A-NEXT: ; use s[8:9]
5398 ; GFX90A-NEXT: ;;#ASMEND
5399 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5401 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__3_3:
5403 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5404 ; GFX940-NEXT: ;;#ASMSTART
5405 ; GFX940-NEXT: ; def s[0:3]
5406 ; GFX940-NEXT: ;;#ASMEND
5407 ; GFX940-NEXT: s_mov_b32 s2, s3
5408 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5409 ; GFX940-NEXT: ;;#ASMSTART
5410 ; GFX940-NEXT: ; use s[8:9]
5411 ; GFX940-NEXT: ;;#ASMEND
5412 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5413 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5414 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 3>
5415 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5419 define void @s_shuffle_v2i32_v4i32__4_3() {
5420 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_3:
5422 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5423 ; GFX900-NEXT: ;;#ASMSTART
5424 ; GFX900-NEXT: ; def s[4:7]
5425 ; GFX900-NEXT: ;;#ASMEND
5426 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
5427 ; GFX900-NEXT: ;;#ASMSTART
5428 ; GFX900-NEXT: ; use s[8:9]
5429 ; GFX900-NEXT: ;;#ASMEND
5430 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5432 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__4_3:
5434 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5435 ; GFX90A-NEXT: ;;#ASMSTART
5436 ; GFX90A-NEXT: ; def s[4:7]
5437 ; GFX90A-NEXT: ;;#ASMEND
5438 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5439 ; GFX90A-NEXT: ;;#ASMSTART
5440 ; GFX90A-NEXT: ; use s[8:9]
5441 ; GFX90A-NEXT: ;;#ASMEND
5442 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5444 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__4_3:
5446 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5447 ; GFX940-NEXT: ;;#ASMSTART
5448 ; GFX940-NEXT: ; def s[0:3]
5449 ; GFX940-NEXT: ;;#ASMEND
5450 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5451 ; GFX940-NEXT: ;;#ASMSTART
5452 ; GFX940-NEXT: ; use s[8:9]
5453 ; GFX940-NEXT: ;;#ASMEND
5454 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5455 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5456 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 3>
5457 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5461 define void @s_shuffle_v2i32_v4i32__5_3() {
5462 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_3:
5464 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5465 ; GFX900-NEXT: ;;#ASMSTART
5466 ; GFX900-NEXT: ; def s[4:7]
5467 ; GFX900-NEXT: ;;#ASMEND
5468 ; GFX900-NEXT: ;;#ASMSTART
5469 ; GFX900-NEXT: ; def s[8:11]
5470 ; GFX900-NEXT: ;;#ASMEND
5471 ; GFX900-NEXT: s_mov_b32 s6, s9
5472 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
5473 ; GFX900-NEXT: ;;#ASMSTART
5474 ; GFX900-NEXT: ; use s[8:9]
5475 ; GFX900-NEXT: ;;#ASMEND
5476 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5478 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__5_3:
5480 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5481 ; GFX90A-NEXT: ;;#ASMSTART
5482 ; GFX90A-NEXT: ; def s[4:7]
5483 ; GFX90A-NEXT: ;;#ASMEND
5484 ; GFX90A-NEXT: ;;#ASMSTART
5485 ; GFX90A-NEXT: ; def s[8:11]
5486 ; GFX90A-NEXT: ;;#ASMEND
5487 ; GFX90A-NEXT: s_mov_b32 s6, s9
5488 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5489 ; GFX90A-NEXT: ;;#ASMSTART
5490 ; GFX90A-NEXT: ; use s[8:9]
5491 ; GFX90A-NEXT: ;;#ASMEND
5492 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5494 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__5_3:
5496 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5497 ; GFX940-NEXT: ;;#ASMSTART
5498 ; GFX940-NEXT: ; def s[0:3]
5499 ; GFX940-NEXT: ;;#ASMEND
5500 ; GFX940-NEXT: ;;#ASMSTART
5501 ; GFX940-NEXT: ; def s[4:7]
5502 ; GFX940-NEXT: ;;#ASMEND
5503 ; GFX940-NEXT: s_mov_b32 s2, s5
5504 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5505 ; GFX940-NEXT: ;;#ASMSTART
5506 ; GFX940-NEXT: ; use s[8:9]
5507 ; GFX940-NEXT: ;;#ASMEND
5508 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5509 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5510 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5511 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 3>
5512 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5516 define void @s_shuffle_v2i32_v4i32__6_3() {
5517 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_3:
5519 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5520 ; GFX900-NEXT: ;;#ASMSTART
5521 ; GFX900-NEXT: ; def s[8:11]
5522 ; GFX900-NEXT: ;;#ASMEND
5523 ; GFX900-NEXT: ;;#ASMSTART
5524 ; GFX900-NEXT: ; def s[4:7]
5525 ; GFX900-NEXT: ;;#ASMEND
5526 ; GFX900-NEXT: s_mov_b32 s11, s7
5527 ; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11]
5528 ; GFX900-NEXT: ;;#ASMSTART
5529 ; GFX900-NEXT: ; use s[8:9]
5530 ; GFX900-NEXT: ;;#ASMEND
5531 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5533 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_3:
5535 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5536 ; GFX90A-NEXT: ;;#ASMSTART
5537 ; GFX90A-NEXT: ; def s[8:11]
5538 ; GFX90A-NEXT: ;;#ASMEND
5539 ; GFX90A-NEXT: ;;#ASMSTART
5540 ; GFX90A-NEXT: ; def s[4:7]
5541 ; GFX90A-NEXT: ;;#ASMEND
5542 ; GFX90A-NEXT: s_mov_b32 s11, s7
5543 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11]
5544 ; GFX90A-NEXT: ;;#ASMSTART
5545 ; GFX90A-NEXT: ; use s[8:9]
5546 ; GFX90A-NEXT: ;;#ASMEND
5547 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5549 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_3:
5551 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5552 ; GFX940-NEXT: ;;#ASMSTART
5553 ; GFX940-NEXT: ; def s[4:7]
5554 ; GFX940-NEXT: ;;#ASMEND
5555 ; GFX940-NEXT: ;;#ASMSTART
5556 ; GFX940-NEXT: ; def s[0:3]
5557 ; GFX940-NEXT: ;;#ASMEND
5558 ; GFX940-NEXT: s_mov_b32 s7, s3
5559 ; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7]
5560 ; GFX940-NEXT: ;;#ASMSTART
5561 ; GFX940-NEXT: ; use s[8:9]
5562 ; GFX940-NEXT: ;;#ASMEND
5563 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5564 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5565 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5566 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 3>
5567 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5571 define void @s_shuffle_v2i32_v4i32__u_4() {
5572 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__u_4:
5574 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5575 ; GFX9-NEXT: ;;#ASMSTART
5576 ; GFX9-NEXT: ; use s[8:9]
5577 ; GFX9-NEXT: ;;#ASMEND
5578 ; GFX9-NEXT: s_setpc_b64 s[30:31]
5579 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5580 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 poison, i32 4>
5581 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5585 define void @s_shuffle_v2i32_v4i32__0_4() {
5586 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_4:
5588 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5589 ; GFX900-NEXT: ;;#ASMSTART
5590 ; GFX900-NEXT: ; def s[8:11]
5591 ; GFX900-NEXT: ;;#ASMEND
5592 ; GFX900-NEXT: ;;#ASMSTART
5593 ; GFX900-NEXT: ; use s[8:9]
5594 ; GFX900-NEXT: ;;#ASMEND
5595 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5597 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__0_4:
5599 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5600 ; GFX90A-NEXT: ;;#ASMSTART
5601 ; GFX90A-NEXT: ; def s[8:11]
5602 ; GFX90A-NEXT: ;;#ASMEND
5603 ; GFX90A-NEXT: ;;#ASMSTART
5604 ; GFX90A-NEXT: ; use s[8:9]
5605 ; GFX90A-NEXT: ;;#ASMEND
5606 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5608 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__0_4:
5610 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5611 ; GFX940-NEXT: ;;#ASMSTART
5612 ; GFX940-NEXT: ; def s[8:11]
5613 ; GFX940-NEXT: ;;#ASMEND
5614 ; GFX940-NEXT: s_nop 0
5615 ; GFX940-NEXT: ;;#ASMSTART
5616 ; GFX940-NEXT: ; use s[8:9]
5617 ; GFX940-NEXT: ;;#ASMEND
5618 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5619 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5620 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 0, i32 4>
5621 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5625 define void @s_shuffle_v2i32_v4i32__1_4() {
5626 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_4:
5628 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5629 ; GFX900-NEXT: ;;#ASMSTART
5630 ; GFX900-NEXT: ; def s[4:7]
5631 ; GFX900-NEXT: ;;#ASMEND
5632 ; GFX900-NEXT: s_mov_b32 s8, s5
5633 ; GFX900-NEXT: ;;#ASMSTART
5634 ; GFX900-NEXT: ; use s[8:9]
5635 ; GFX900-NEXT: ;;#ASMEND
5636 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5638 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__1_4:
5640 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5641 ; GFX90A-NEXT: ;;#ASMSTART
5642 ; GFX90A-NEXT: ; def s[4:7]
5643 ; GFX90A-NEXT: ;;#ASMEND
5644 ; GFX90A-NEXT: s_mov_b32 s8, s5
5645 ; GFX90A-NEXT: ;;#ASMSTART
5646 ; GFX90A-NEXT: ; use s[8:9]
5647 ; GFX90A-NEXT: ;;#ASMEND
5648 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5650 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__1_4:
5652 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5653 ; GFX940-NEXT: ;;#ASMSTART
5654 ; GFX940-NEXT: ; def s[0:3]
5655 ; GFX940-NEXT: ;;#ASMEND
5656 ; GFX940-NEXT: s_mov_b32 s8, s1
5657 ; GFX940-NEXT: ;;#ASMSTART
5658 ; GFX940-NEXT: ; use s[8:9]
5659 ; GFX940-NEXT: ;;#ASMEND
5660 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5661 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5662 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 1, i32 4>
5663 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5667 define void @s_shuffle_v2i32_v4i32__2_4() {
5668 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_4:
5670 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5671 ; GFX900-NEXT: ;;#ASMSTART
5672 ; GFX900-NEXT: ; def s[4:7]
5673 ; GFX900-NEXT: ;;#ASMEND
5674 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
5675 ; GFX900-NEXT: ;;#ASMSTART
5676 ; GFX900-NEXT: ; use s[8:9]
5677 ; GFX900-NEXT: ;;#ASMEND
5678 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5680 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_4:
5682 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5683 ; GFX90A-NEXT: ;;#ASMSTART
5684 ; GFX90A-NEXT: ; def s[4:7]
5685 ; GFX90A-NEXT: ;;#ASMEND
5686 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5687 ; GFX90A-NEXT: ;;#ASMSTART
5688 ; GFX90A-NEXT: ; use s[8:9]
5689 ; GFX90A-NEXT: ;;#ASMEND
5690 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5692 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_4:
5694 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5695 ; GFX940-NEXT: ;;#ASMSTART
5696 ; GFX940-NEXT: ; def s[0:3]
5697 ; GFX940-NEXT: ;;#ASMEND
5698 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5699 ; GFX940-NEXT: ;;#ASMSTART
5700 ; GFX940-NEXT: ; use s[8:9]
5701 ; GFX940-NEXT: ;;#ASMEND
5702 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5703 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5704 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 2, i32 4>
5705 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5709 define void @s_shuffle_v2i32_v4i32__3_4() {
5710 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_4:
5712 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5713 ; GFX900-NEXT: ;;#ASMSTART
5714 ; GFX900-NEXT: ; def s[4:7]
5715 ; GFX900-NEXT: ;;#ASMEND
5716 ; GFX900-NEXT: s_mov_b32 s8, s7
5717 ; GFX900-NEXT: ;;#ASMSTART
5718 ; GFX900-NEXT: ; use s[8:9]
5719 ; GFX900-NEXT: ;;#ASMEND
5720 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5722 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__3_4:
5724 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5725 ; GFX90A-NEXT: ;;#ASMSTART
5726 ; GFX90A-NEXT: ; def s[4:7]
5727 ; GFX90A-NEXT: ;;#ASMEND
5728 ; GFX90A-NEXT: s_mov_b32 s8, s7
5729 ; GFX90A-NEXT: ;;#ASMSTART
5730 ; GFX90A-NEXT: ; use s[8:9]
5731 ; GFX90A-NEXT: ;;#ASMEND
5732 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5734 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__3_4:
5736 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5737 ; GFX940-NEXT: ;;#ASMSTART
5738 ; GFX940-NEXT: ; def s[0:3]
5739 ; GFX940-NEXT: ;;#ASMEND
5740 ; GFX940-NEXT: s_mov_b32 s8, s3
5741 ; GFX940-NEXT: ;;#ASMSTART
5742 ; GFX940-NEXT: ; use s[8:9]
5743 ; GFX940-NEXT: ;;#ASMEND
5744 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5745 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5746 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 3, i32 4>
5747 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5751 define void @s_shuffle_v2i32_v4i32__4_4() {
5752 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__4_4:
5754 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5755 ; GFX9-NEXT: ;;#ASMSTART
5756 ; GFX9-NEXT: ; use s[8:9]
5757 ; GFX9-NEXT: ;;#ASMEND
5758 ; GFX9-NEXT: s_setpc_b64 s[30:31]
5759 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5760 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> poison, <2 x i32> <i32 4, i32 4>
5761 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5765 define void @s_shuffle_v2i32_v4i32__5_4() {
5766 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_4:
5768 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5769 ; GFX900-NEXT: ;;#ASMSTART
5770 ; GFX900-NEXT: ; def s[4:7]
5771 ; GFX900-NEXT: ;;#ASMEND
5772 ; GFX900-NEXT: s_mov_b32 s8, s5
5773 ; GFX900-NEXT: s_mov_b32 s9, s4
5774 ; GFX900-NEXT: ;;#ASMSTART
5775 ; GFX900-NEXT: ; use s[8:9]
5776 ; GFX900-NEXT: ;;#ASMEND
5777 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5779 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__5_4:
5781 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5782 ; GFX90A-NEXT: ;;#ASMSTART
5783 ; GFX90A-NEXT: ; def s[4:7]
5784 ; GFX90A-NEXT: ;;#ASMEND
5785 ; GFX90A-NEXT: s_mov_b32 s8, s5
5786 ; GFX90A-NEXT: s_mov_b32 s9, s4
5787 ; GFX90A-NEXT: ;;#ASMSTART
5788 ; GFX90A-NEXT: ; use s[8:9]
5789 ; GFX90A-NEXT: ;;#ASMEND
5790 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5792 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__5_4:
5794 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5795 ; GFX940-NEXT: ;;#ASMSTART
5796 ; GFX940-NEXT: ; def s[0:3]
5797 ; GFX940-NEXT: ;;#ASMEND
5798 ; GFX940-NEXT: s_mov_b32 s8, s1
5799 ; GFX940-NEXT: s_mov_b32 s9, s0
5800 ; GFX940-NEXT: ;;#ASMSTART
5801 ; GFX940-NEXT: ; use s[8:9]
5802 ; GFX940-NEXT: ;;#ASMEND
5803 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5804 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5805 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5806 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 4>
5807 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5811 define void @s_shuffle_v2i32_v4i32__6_4() {
5812 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_4:
5814 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5815 ; GFX900-NEXT: ;;#ASMSTART
5816 ; GFX900-NEXT: ; def s[4:7]
5817 ; GFX900-NEXT: ;;#ASMEND
5818 ; GFX900-NEXT: s_mov_b32 s7, s4
5819 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
5820 ; GFX900-NEXT: ;;#ASMSTART
5821 ; GFX900-NEXT: ; use s[8:9]
5822 ; GFX900-NEXT: ;;#ASMEND
5823 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5825 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_4:
5827 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5828 ; GFX90A-NEXT: ;;#ASMSTART
5829 ; GFX90A-NEXT: ; def s[4:7]
5830 ; GFX90A-NEXT: ;;#ASMEND
5831 ; GFX90A-NEXT: s_mov_b32 s7, s4
5832 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
5833 ; GFX90A-NEXT: ;;#ASMSTART
5834 ; GFX90A-NEXT: ; use s[8:9]
5835 ; GFX90A-NEXT: ;;#ASMEND
5836 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5838 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_4:
5840 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5841 ; GFX940-NEXT: ;;#ASMSTART
5842 ; GFX940-NEXT: ; def s[0:3]
5843 ; GFX940-NEXT: ;;#ASMEND
5844 ; GFX940-NEXT: s_mov_b32 s3, s0
5845 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
5846 ; GFX940-NEXT: ;;#ASMSTART
5847 ; GFX940-NEXT: ; use s[8:9]
5848 ; GFX940-NEXT: ;;#ASMEND
5849 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5850 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5851 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5852 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 4>
5853 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5857 define void @s_shuffle_v2i32_v4i32__u_5() {
5858 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_5:
5860 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5861 ; GFX900-NEXT: ;;#ASMSTART
5862 ; GFX900-NEXT: ; def s[8:11]
5863 ; GFX900-NEXT: ;;#ASMEND
5864 ; GFX900-NEXT: ;;#ASMSTART
5865 ; GFX900-NEXT: ; use s[8:9]
5866 ; GFX900-NEXT: ;;#ASMEND
5867 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5869 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__u_5:
5871 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5872 ; GFX90A-NEXT: ;;#ASMSTART
5873 ; GFX90A-NEXT: ; def s[8:11]
5874 ; GFX90A-NEXT: ;;#ASMEND
5875 ; GFX90A-NEXT: ;;#ASMSTART
5876 ; GFX90A-NEXT: ; use s[8:9]
5877 ; GFX90A-NEXT: ;;#ASMEND
5878 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5880 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__u_5:
5882 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5883 ; GFX940-NEXT: ;;#ASMSTART
5884 ; GFX940-NEXT: ; def s[8:11]
5885 ; GFX940-NEXT: ;;#ASMEND
5886 ; GFX940-NEXT: s_nop 0
5887 ; GFX940-NEXT: ;;#ASMSTART
5888 ; GFX940-NEXT: ; use s[8:9]
5889 ; GFX940-NEXT: ;;#ASMEND
5890 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5891 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5892 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5893 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 poison, i32 5>
5894 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5898 define void @s_shuffle_v2i32_v4i32__0_5() {
5899 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_5:
5901 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5902 ; GFX900-NEXT: ;;#ASMSTART
5903 ; GFX900-NEXT: ; def s[8:11]
5904 ; GFX900-NEXT: ;;#ASMEND
5905 ; GFX900-NEXT: ;;#ASMSTART
5906 ; GFX900-NEXT: ; def s[4:7]
5907 ; GFX900-NEXT: ;;#ASMEND
5908 ; GFX900-NEXT: s_mov_b32 s9, s5
5909 ; GFX900-NEXT: ;;#ASMSTART
5910 ; GFX900-NEXT: ; use s[8:9]
5911 ; GFX900-NEXT: ;;#ASMEND
5912 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5914 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__0_5:
5916 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5917 ; GFX90A-NEXT: ;;#ASMSTART
5918 ; GFX90A-NEXT: ; def s[8:11]
5919 ; GFX90A-NEXT: ;;#ASMEND
5920 ; GFX90A-NEXT: ;;#ASMSTART
5921 ; GFX90A-NEXT: ; def s[4:7]
5922 ; GFX90A-NEXT: ;;#ASMEND
5923 ; GFX90A-NEXT: s_mov_b32 s9, s5
5924 ; GFX90A-NEXT: ;;#ASMSTART
5925 ; GFX90A-NEXT: ; use s[8:9]
5926 ; GFX90A-NEXT: ;;#ASMEND
5927 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5929 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__0_5:
5931 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5932 ; GFX940-NEXT: ;;#ASMSTART
5933 ; GFX940-NEXT: ; def s[8:11]
5934 ; GFX940-NEXT: ;;#ASMEND
5935 ; GFX940-NEXT: ;;#ASMSTART
5936 ; GFX940-NEXT: ; def s[0:3]
5937 ; GFX940-NEXT: ;;#ASMEND
5938 ; GFX940-NEXT: s_mov_b32 s9, s1
5939 ; GFX940-NEXT: ;;#ASMSTART
5940 ; GFX940-NEXT: ; use s[8:9]
5941 ; GFX940-NEXT: ;;#ASMEND
5942 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5943 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5944 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5945 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 0, i32 5>
5946 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
5950 define void @s_shuffle_v2i32_v4i32__1_5() {
5951 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_5:
5953 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5954 ; GFX900-NEXT: ;;#ASMSTART
5955 ; GFX900-NEXT: ; def s[8:11]
5956 ; GFX900-NEXT: ;;#ASMEND
5957 ; GFX900-NEXT: ;;#ASMSTART
5958 ; GFX900-NEXT: ; def s[4:7]
5959 ; GFX900-NEXT: ;;#ASMEND
5960 ; GFX900-NEXT: s_mov_b32 s8, s5
5961 ; GFX900-NEXT: ;;#ASMSTART
5962 ; GFX900-NEXT: ; use s[8:9]
5963 ; GFX900-NEXT: ;;#ASMEND
5964 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5966 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__1_5:
5968 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5969 ; GFX90A-NEXT: ;;#ASMSTART
5970 ; GFX90A-NEXT: ; def s[8:11]
5971 ; GFX90A-NEXT: ;;#ASMEND
5972 ; GFX90A-NEXT: ;;#ASMSTART
5973 ; GFX90A-NEXT: ; def s[4:7]
5974 ; GFX90A-NEXT: ;;#ASMEND
5975 ; GFX90A-NEXT: s_mov_b32 s8, s5
5976 ; GFX90A-NEXT: ;;#ASMSTART
5977 ; GFX90A-NEXT: ; use s[8:9]
5978 ; GFX90A-NEXT: ;;#ASMEND
5979 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5981 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__1_5:
5983 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5984 ; GFX940-NEXT: ;;#ASMSTART
5985 ; GFX940-NEXT: ; def s[8:11]
5986 ; GFX940-NEXT: ;;#ASMEND
5987 ; GFX940-NEXT: ;;#ASMSTART
5988 ; GFX940-NEXT: ; def s[0:3]
5989 ; GFX940-NEXT: ;;#ASMEND
5990 ; GFX940-NEXT: s_mov_b32 s8, s1
5991 ; GFX940-NEXT: ;;#ASMSTART
5992 ; GFX940-NEXT: ; use s[8:9]
5993 ; GFX940-NEXT: ;;#ASMEND
5994 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5995 %vec0 = call <4 x i32> asm "; def $0", "=s"()
5996 %vec1 = call <4 x i32> asm "; def $0", "=s"()
5997 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 1, i32 5>
5998 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6002 define void @s_shuffle_v2i32_v4i32__2_5() {
6003 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_5:
6005 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6006 ; GFX900-NEXT: ;;#ASMSTART
6007 ; GFX900-NEXT: ; def s[4:7]
6008 ; GFX900-NEXT: ;;#ASMEND
6009 ; GFX900-NEXT: ;;#ASMSTART
6010 ; GFX900-NEXT: ; def s[8:11]
6011 ; GFX900-NEXT: ;;#ASMEND
6012 ; GFX900-NEXT: s_mov_b32 s7, s9
6013 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
6014 ; GFX900-NEXT: ;;#ASMSTART
6015 ; GFX900-NEXT: ; use s[8:9]
6016 ; GFX900-NEXT: ;;#ASMEND
6017 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6019 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_5:
6021 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6022 ; GFX90A-NEXT: ;;#ASMSTART
6023 ; GFX90A-NEXT: ; def s[4:7]
6024 ; GFX90A-NEXT: ;;#ASMEND
6025 ; GFX90A-NEXT: ;;#ASMSTART
6026 ; GFX90A-NEXT: ; def s[8:11]
6027 ; GFX90A-NEXT: ;;#ASMEND
6028 ; GFX90A-NEXT: s_mov_b32 s7, s9
6029 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
6030 ; GFX90A-NEXT: ;;#ASMSTART
6031 ; GFX90A-NEXT: ; use s[8:9]
6032 ; GFX90A-NEXT: ;;#ASMEND
6033 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6035 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_5:
6037 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6038 ; GFX940-NEXT: ;;#ASMSTART
6039 ; GFX940-NEXT: ; def s[0:3]
6040 ; GFX940-NEXT: ;;#ASMEND
6041 ; GFX940-NEXT: ;;#ASMSTART
6042 ; GFX940-NEXT: ; def s[4:7]
6043 ; GFX940-NEXT: ;;#ASMEND
6044 ; GFX940-NEXT: s_mov_b32 s3, s5
6045 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
6046 ; GFX940-NEXT: ;;#ASMSTART
6047 ; GFX940-NEXT: ; use s[8:9]
6048 ; GFX940-NEXT: ;;#ASMEND
6049 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6050 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6051 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6052 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 2, i32 5>
6053 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6057 define void @s_shuffle_v2i32_v4i32__3_5() {
6058 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_5:
6060 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6061 ; GFX900-NEXT: ;;#ASMSTART
6062 ; GFX900-NEXT: ; def s[8:11]
6063 ; GFX900-NEXT: ;;#ASMEND
6064 ; GFX900-NEXT: ;;#ASMSTART
6065 ; GFX900-NEXT: ; def s[4:7]
6066 ; GFX900-NEXT: ;;#ASMEND
6067 ; GFX900-NEXT: s_mov_b32 s8, s7
6068 ; GFX900-NEXT: ;;#ASMSTART
6069 ; GFX900-NEXT: ; use s[8:9]
6070 ; GFX900-NEXT: ;;#ASMEND
6071 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6073 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__3_5:
6075 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6076 ; GFX90A-NEXT: ;;#ASMSTART
6077 ; GFX90A-NEXT: ; def s[8:11]
6078 ; GFX90A-NEXT: ;;#ASMEND
6079 ; GFX90A-NEXT: ;;#ASMSTART
6080 ; GFX90A-NEXT: ; def s[4:7]
6081 ; GFX90A-NEXT: ;;#ASMEND
6082 ; GFX90A-NEXT: s_mov_b32 s8, s7
6083 ; GFX90A-NEXT: ;;#ASMSTART
6084 ; GFX90A-NEXT: ; use s[8:9]
6085 ; GFX90A-NEXT: ;;#ASMEND
6086 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6088 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__3_5:
6090 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6091 ; GFX940-NEXT: ;;#ASMSTART
6092 ; GFX940-NEXT: ; def s[8:11]
6093 ; GFX940-NEXT: ;;#ASMEND
6094 ; GFX940-NEXT: ;;#ASMSTART
6095 ; GFX940-NEXT: ; def s[0:3]
6096 ; GFX940-NEXT: ;;#ASMEND
6097 ; GFX940-NEXT: s_mov_b32 s8, s3
6098 ; GFX940-NEXT: ;;#ASMSTART
6099 ; GFX940-NEXT: ; use s[8:9]
6100 ; GFX940-NEXT: ;;#ASMEND
6101 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6102 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6103 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6104 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 3, i32 5>
6105 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6109 define void @s_shuffle_v2i32_v4i32__4_5() {
6110 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_5:
6112 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6113 ; GFX900-NEXT: ;;#ASMSTART
6114 ; GFX900-NEXT: ; def s[8:11]
6115 ; GFX900-NEXT: ;;#ASMEND
6116 ; GFX900-NEXT: ;;#ASMSTART
6117 ; GFX900-NEXT: ; use s[8:9]
6118 ; GFX900-NEXT: ;;#ASMEND
6119 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6121 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__4_5:
6123 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6124 ; GFX90A-NEXT: ;;#ASMSTART
6125 ; GFX90A-NEXT: ; def s[8:11]
6126 ; GFX90A-NEXT: ;;#ASMEND
6127 ; GFX90A-NEXT: ;;#ASMSTART
6128 ; GFX90A-NEXT: ; use s[8:9]
6129 ; GFX90A-NEXT: ;;#ASMEND
6130 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6132 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__4_5:
6134 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6135 ; GFX940-NEXT: ;;#ASMSTART
6136 ; GFX940-NEXT: ; def s[8:11]
6137 ; GFX940-NEXT: ;;#ASMEND
6138 ; GFX940-NEXT: s_nop 0
6139 ; GFX940-NEXT: ;;#ASMSTART
6140 ; GFX940-NEXT: ; use s[8:9]
6141 ; GFX940-NEXT: ;;#ASMEND
6142 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6143 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6144 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6145 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 4, i32 5>
6146 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6150 define void @s_shuffle_v2i32_v4i32__5_5() {
6151 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__5_5:
6153 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6154 ; GFX9-NEXT: ;;#ASMSTART
6155 ; GFX9-NEXT: ; def s[8:11]
6156 ; GFX9-NEXT: ;;#ASMEND
6157 ; GFX9-NEXT: s_mov_b32 s8, s9
6158 ; GFX9-NEXT: ;;#ASMSTART
6159 ; GFX9-NEXT: ; use s[8:9]
6160 ; GFX9-NEXT: ;;#ASMEND
6161 ; GFX9-NEXT: s_setpc_b64 s[30:31]
6162 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6163 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6164 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 5>
6165 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6169 define void @s_shuffle_v2i32_v4i32__6_5() {
6170 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_5:
6172 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6173 ; GFX900-NEXT: ;;#ASMSTART
6174 ; GFX900-NEXT: ; def s[4:7]
6175 ; GFX900-NEXT: ;;#ASMEND
6176 ; GFX900-NEXT: s_mov_b32 s7, s5
6177 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
6178 ; GFX900-NEXT: ;;#ASMSTART
6179 ; GFX900-NEXT: ; use s[8:9]
6180 ; GFX900-NEXT: ;;#ASMEND
6181 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6183 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_5:
6185 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6186 ; GFX90A-NEXT: ;;#ASMSTART
6187 ; GFX90A-NEXT: ; def s[4:7]
6188 ; GFX90A-NEXT: ;;#ASMEND
6189 ; GFX90A-NEXT: s_mov_b32 s7, s5
6190 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
6191 ; GFX90A-NEXT: ;;#ASMSTART
6192 ; GFX90A-NEXT: ; use s[8:9]
6193 ; GFX90A-NEXT: ;;#ASMEND
6194 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6196 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_5:
6198 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6199 ; GFX940-NEXT: ;;#ASMSTART
6200 ; GFX940-NEXT: ; def s[0:3]
6201 ; GFX940-NEXT: ;;#ASMEND
6202 ; GFX940-NEXT: s_mov_b32 s3, s1
6203 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
6204 ; GFX940-NEXT: ;;#ASMSTART
6205 ; GFX940-NEXT: ; use s[8:9]
6206 ; GFX940-NEXT: ;;#ASMEND
6207 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6208 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6209 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6210 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 5>
6211 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6215 define void @s_shuffle_v2i32_v4i32__u_6() {
6216 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_6:
6218 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6219 ; GFX900-NEXT: ;;#ASMSTART
6220 ; GFX900-NEXT: ; def s[4:7]
6221 ; GFX900-NEXT: ;;#ASMEND
6222 ; GFX900-NEXT: s_mov_b32 s9, s6
6223 ; GFX900-NEXT: ;;#ASMSTART
6224 ; GFX900-NEXT: ; use s[8:9]
6225 ; GFX900-NEXT: ;;#ASMEND
6226 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6228 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__u_6:
6230 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6231 ; GFX90A-NEXT: ;;#ASMSTART
6232 ; GFX90A-NEXT: ; def s[4:7]
6233 ; GFX90A-NEXT: ;;#ASMEND
6234 ; GFX90A-NEXT: s_mov_b32 s9, s6
6235 ; GFX90A-NEXT: ;;#ASMSTART
6236 ; GFX90A-NEXT: ; use s[8:9]
6237 ; GFX90A-NEXT: ;;#ASMEND
6238 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6240 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__u_6:
6242 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6243 ; GFX940-NEXT: ;;#ASMSTART
6244 ; GFX940-NEXT: ; def s[0:3]
6245 ; GFX940-NEXT: ;;#ASMEND
6246 ; GFX940-NEXT: s_mov_b32 s9, s2
6247 ; GFX940-NEXT: ;;#ASMSTART
6248 ; GFX940-NEXT: ; use s[8:9]
6249 ; GFX940-NEXT: ;;#ASMEND
6250 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6251 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6252 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6253 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 poison, i32 6>
6254 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6258 define void @s_shuffle_v2i32_v4i32__0_6() {
6259 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_6:
6261 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6262 ; GFX900-NEXT: ;;#ASMSTART
6263 ; GFX900-NEXT: ; def s[8:11]
6264 ; GFX900-NEXT: ;;#ASMEND
6265 ; GFX900-NEXT: ;;#ASMSTART
6266 ; GFX900-NEXT: ; def s[4:7]
6267 ; GFX900-NEXT: ;;#ASMEND
6268 ; GFX900-NEXT: s_mov_b32 s9, s6
6269 ; GFX900-NEXT: ;;#ASMSTART
6270 ; GFX900-NEXT: ; use s[8:9]
6271 ; GFX900-NEXT: ;;#ASMEND
6272 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6274 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__0_6:
6276 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6277 ; GFX90A-NEXT: ;;#ASMSTART
6278 ; GFX90A-NEXT: ; def s[8:11]
6279 ; GFX90A-NEXT: ;;#ASMEND
6280 ; GFX90A-NEXT: ;;#ASMSTART
6281 ; GFX90A-NEXT: ; def s[4:7]
6282 ; GFX90A-NEXT: ;;#ASMEND
6283 ; GFX90A-NEXT: s_mov_b32 s9, s6
6284 ; GFX90A-NEXT: ;;#ASMSTART
6285 ; GFX90A-NEXT: ; use s[8:9]
6286 ; GFX90A-NEXT: ;;#ASMEND
6287 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6289 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__0_6:
6291 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6292 ; GFX940-NEXT: ;;#ASMSTART
6293 ; GFX940-NEXT: ; def s[8:11]
6294 ; GFX940-NEXT: ;;#ASMEND
6295 ; GFX940-NEXT: ;;#ASMSTART
6296 ; GFX940-NEXT: ; def s[0:3]
6297 ; GFX940-NEXT: ;;#ASMEND
6298 ; GFX940-NEXT: s_mov_b32 s9, s2
6299 ; GFX940-NEXT: ;;#ASMSTART
6300 ; GFX940-NEXT: ; use s[8:9]
6301 ; GFX940-NEXT: ;;#ASMEND
6302 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6303 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6304 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6305 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 0, i32 6>
6306 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6310 define void @s_shuffle_v2i32_v4i32__1_6() {
6311 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_6:
6313 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6314 ; GFX900-NEXT: ;;#ASMSTART
6315 ; GFX900-NEXT: ; def s[8:11]
6316 ; GFX900-NEXT: ;;#ASMEND
6317 ; GFX900-NEXT: ;;#ASMSTART
6318 ; GFX900-NEXT: ; def s[4:7]
6319 ; GFX900-NEXT: ;;#ASMEND
6320 ; GFX900-NEXT: s_mov_b32 s8, s5
6321 ; GFX900-NEXT: s_mov_b32 s9, s10
6322 ; GFX900-NEXT: ;;#ASMSTART
6323 ; GFX900-NEXT: ; use s[8:9]
6324 ; GFX900-NEXT: ;;#ASMEND
6325 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6327 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__1_6:
6329 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6330 ; GFX90A-NEXT: ;;#ASMSTART
6331 ; GFX90A-NEXT: ; def s[8:11]
6332 ; GFX90A-NEXT: ;;#ASMEND
6333 ; GFX90A-NEXT: ;;#ASMSTART
6334 ; GFX90A-NEXT: ; def s[4:7]
6335 ; GFX90A-NEXT: ;;#ASMEND
6336 ; GFX90A-NEXT: s_mov_b32 s8, s5
6337 ; GFX90A-NEXT: s_mov_b32 s9, s10
6338 ; GFX90A-NEXT: ;;#ASMSTART
6339 ; GFX90A-NEXT: ; use s[8:9]
6340 ; GFX90A-NEXT: ;;#ASMEND
6341 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6343 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__1_6:
6345 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6346 ; GFX940-NEXT: ;;#ASMSTART
6347 ; GFX940-NEXT: ; def s[0:3]
6348 ; GFX940-NEXT: ;;#ASMEND
6349 ; GFX940-NEXT: ;;#ASMSTART
6350 ; GFX940-NEXT: ; def s[4:7]
6351 ; GFX940-NEXT: ;;#ASMEND
6352 ; GFX940-NEXT: s_mov_b32 s8, s1
6353 ; GFX940-NEXT: s_mov_b32 s9, s6
6354 ; GFX940-NEXT: ;;#ASMSTART
6355 ; GFX940-NEXT: ; use s[8:9]
6356 ; GFX940-NEXT: ;;#ASMEND
6357 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6358 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6359 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6360 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 1, i32 6>
6361 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6365 define void @s_shuffle_v2i32_v4i32__2_6() {
6366 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_6:
6368 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6369 ; GFX900-NEXT: ;;#ASMSTART
6370 ; GFX900-NEXT: ; def s[4:7]
6371 ; GFX900-NEXT: ;;#ASMEND
6372 ; GFX900-NEXT: ;;#ASMSTART
6373 ; GFX900-NEXT: ; def s[8:11]
6374 ; GFX900-NEXT: ;;#ASMEND
6375 ; GFX900-NEXT: s_mov_b32 s7, s10
6376 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
6377 ; GFX900-NEXT: ;;#ASMSTART
6378 ; GFX900-NEXT: ; use s[8:9]
6379 ; GFX900-NEXT: ;;#ASMEND
6380 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6382 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_6:
6384 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6385 ; GFX90A-NEXT: ;;#ASMSTART
6386 ; GFX90A-NEXT: ; def s[4:7]
6387 ; GFX90A-NEXT: ;;#ASMEND
6388 ; GFX90A-NEXT: ;;#ASMSTART
6389 ; GFX90A-NEXT: ; def s[8:11]
6390 ; GFX90A-NEXT: ;;#ASMEND
6391 ; GFX90A-NEXT: s_mov_b32 s7, s10
6392 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
6393 ; GFX90A-NEXT: ;;#ASMSTART
6394 ; GFX90A-NEXT: ; use s[8:9]
6395 ; GFX90A-NEXT: ;;#ASMEND
6396 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6398 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_6:
6400 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6401 ; GFX940-NEXT: ;;#ASMSTART
6402 ; GFX940-NEXT: ; def s[0:3]
6403 ; GFX940-NEXT: ;;#ASMEND
6404 ; GFX940-NEXT: ;;#ASMSTART
6405 ; GFX940-NEXT: ; def s[4:7]
6406 ; GFX940-NEXT: ;;#ASMEND
6407 ; GFX940-NEXT: s_mov_b32 s3, s6
6408 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
6409 ; GFX940-NEXT: ;;#ASMSTART
6410 ; GFX940-NEXT: ; use s[8:9]
6411 ; GFX940-NEXT: ;;#ASMEND
6412 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6413 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6414 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6415 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 2, i32 6>
6416 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6420 define void @s_shuffle_v2i32_v4i32__3_6() {
6421 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_6:
6423 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6424 ; GFX900-NEXT: ;;#ASMSTART
6425 ; GFX900-NEXT: ; def s[8:11]
6426 ; GFX900-NEXT: ;;#ASMEND
6427 ; GFX900-NEXT: ;;#ASMSTART
6428 ; GFX900-NEXT: ; def s[4:7]
6429 ; GFX900-NEXT: ;;#ASMEND
6430 ; GFX900-NEXT: s_mov_b32 s8, s7
6431 ; GFX900-NEXT: s_mov_b32 s9, s10
6432 ; GFX900-NEXT: ;;#ASMSTART
6433 ; GFX900-NEXT: ; use s[8:9]
6434 ; GFX900-NEXT: ;;#ASMEND
6435 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6437 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__3_6:
6439 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6440 ; GFX90A-NEXT: ;;#ASMSTART
6441 ; GFX90A-NEXT: ; def s[8:11]
6442 ; GFX90A-NEXT: ;;#ASMEND
6443 ; GFX90A-NEXT: ;;#ASMSTART
6444 ; GFX90A-NEXT: ; def s[4:7]
6445 ; GFX90A-NEXT: ;;#ASMEND
6446 ; GFX90A-NEXT: s_mov_b32 s8, s7
6447 ; GFX90A-NEXT: s_mov_b32 s9, s10
6448 ; GFX90A-NEXT: ;;#ASMSTART
6449 ; GFX90A-NEXT: ; use s[8:9]
6450 ; GFX90A-NEXT: ;;#ASMEND
6451 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6453 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__3_6:
6455 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6456 ; GFX940-NEXT: ;;#ASMSTART
6457 ; GFX940-NEXT: ; def s[0:3]
6458 ; GFX940-NEXT: ;;#ASMEND
6459 ; GFX940-NEXT: ;;#ASMSTART
6460 ; GFX940-NEXT: ; def s[4:7]
6461 ; GFX940-NEXT: ;;#ASMEND
6462 ; GFX940-NEXT: s_mov_b32 s8, s3
6463 ; GFX940-NEXT: s_mov_b32 s9, s6
6464 ; GFX940-NEXT: ;;#ASMSTART
6465 ; GFX940-NEXT: ; use s[8:9]
6466 ; GFX940-NEXT: ;;#ASMEND
6467 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6468 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6469 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6470 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 3, i32 6>
6471 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6475 define void @s_shuffle_v2i32_v4i32__4_6() {
6476 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__4_6:
6478 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6479 ; GFX9-NEXT: ;;#ASMSTART
6480 ; GFX9-NEXT: ; def s[8:11]
6481 ; GFX9-NEXT: ;;#ASMEND
6482 ; GFX9-NEXT: s_mov_b32 s9, s10
6483 ; GFX9-NEXT: ;;#ASMSTART
6484 ; GFX9-NEXT: ; use s[8:9]
6485 ; GFX9-NEXT: ;;#ASMEND
6486 ; GFX9-NEXT: s_setpc_b64 s[30:31]
6487 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6488 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6489 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 4, i32 6>
6490 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6494 define void @s_shuffle_v2i32_v4i32__5_6() {
6495 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_6:
6497 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6498 ; GFX900-NEXT: ;;#ASMSTART
6499 ; GFX900-NEXT: ; def s[4:7]
6500 ; GFX900-NEXT: ;;#ASMEND
6501 ; GFX900-NEXT: s_mov_b32 s8, s5
6502 ; GFX900-NEXT: s_mov_b32 s9, s6
6503 ; GFX900-NEXT: ;;#ASMSTART
6504 ; GFX900-NEXT: ; use s[8:9]
6505 ; GFX900-NEXT: ;;#ASMEND
6506 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6508 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__5_6:
6510 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6511 ; GFX90A-NEXT: ;;#ASMSTART
6512 ; GFX90A-NEXT: ; def s[4:7]
6513 ; GFX90A-NEXT: ;;#ASMEND
6514 ; GFX90A-NEXT: s_mov_b32 s8, s5
6515 ; GFX90A-NEXT: s_mov_b32 s9, s6
6516 ; GFX90A-NEXT: ;;#ASMSTART
6517 ; GFX90A-NEXT: ; use s[8:9]
6518 ; GFX90A-NEXT: ;;#ASMEND
6519 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6521 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__5_6:
6523 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6524 ; GFX940-NEXT: ;;#ASMSTART
6525 ; GFX940-NEXT: ; def s[0:3]
6526 ; GFX940-NEXT: ;;#ASMEND
6527 ; GFX940-NEXT: s_mov_b32 s8, s1
6528 ; GFX940-NEXT: s_mov_b32 s9, s2
6529 ; GFX940-NEXT: ;;#ASMSTART
6530 ; GFX940-NEXT: ; use s[8:9]
6531 ; GFX940-NEXT: ;;#ASMEND
6532 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6533 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6534 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6535 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 6>
6536 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6540 define void @s_shuffle_v2i32_v4i32__6_6() {
6541 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_6:
6543 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6544 ; GFX900-NEXT: ;;#ASMSTART
6545 ; GFX900-NEXT: ; def s[4:7]
6546 ; GFX900-NEXT: ;;#ASMEND
6547 ; GFX900-NEXT: s_mov_b32 s7, s6
6548 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
6549 ; GFX900-NEXT: ;;#ASMSTART
6550 ; GFX900-NEXT: ; use s[8:9]
6551 ; GFX900-NEXT: ;;#ASMEND
6552 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6554 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_6:
6556 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6557 ; GFX90A-NEXT: ;;#ASMSTART
6558 ; GFX90A-NEXT: ; def s[4:7]
6559 ; GFX90A-NEXT: ;;#ASMEND
6560 ; GFX90A-NEXT: s_mov_b32 s7, s6
6561 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
6562 ; GFX90A-NEXT: ;;#ASMSTART
6563 ; GFX90A-NEXT: ; use s[8:9]
6564 ; GFX90A-NEXT: ;;#ASMEND
6565 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6567 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_6:
6569 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6570 ; GFX940-NEXT: ;;#ASMSTART
6571 ; GFX940-NEXT: ; def s[0:3]
6572 ; GFX940-NEXT: ;;#ASMEND
6573 ; GFX940-NEXT: s_mov_b32 s3, s2
6574 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
6575 ; GFX940-NEXT: ;;#ASMSTART
6576 ; GFX940-NEXT: ; use s[8:9]
6577 ; GFX940-NEXT: ;;#ASMEND
6578 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6579 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6580 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6581 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 6>
6582 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6586 define void @s_shuffle_v2i32_v4i32__u_7() {
6587 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_7:
6589 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6590 ; GFX900-NEXT: ;;#ASMSTART
6591 ; GFX900-NEXT: ; def s[4:7]
6592 ; GFX900-NEXT: ;;#ASMEND
6593 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
6594 ; GFX900-NEXT: ;;#ASMSTART
6595 ; GFX900-NEXT: ; use s[8:9]
6596 ; GFX900-NEXT: ;;#ASMEND
6597 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6599 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__u_7:
6601 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6602 ; GFX90A-NEXT: ;;#ASMSTART
6603 ; GFX90A-NEXT: ; def s[4:7]
6604 ; GFX90A-NEXT: ;;#ASMEND
6605 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
6606 ; GFX90A-NEXT: ;;#ASMSTART
6607 ; GFX90A-NEXT: ; use s[8:9]
6608 ; GFX90A-NEXT: ;;#ASMEND
6609 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6611 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__u_7:
6613 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6614 ; GFX940-NEXT: ;;#ASMSTART
6615 ; GFX940-NEXT: ; def s[0:3]
6616 ; GFX940-NEXT: ;;#ASMEND
6617 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
6618 ; GFX940-NEXT: ;;#ASMSTART
6619 ; GFX940-NEXT: ; use s[8:9]
6620 ; GFX940-NEXT: ;;#ASMEND
6621 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6622 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6623 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6624 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 poison, i32 7>
6625 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6629 define void @s_shuffle_v2i32_v4i32__0_7() {
6630 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_7:
6632 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6633 ; GFX900-NEXT: ;;#ASMSTART
6634 ; GFX900-NEXT: ; def s[8:11]
6635 ; GFX900-NEXT: ;;#ASMEND
6636 ; GFX900-NEXT: ;;#ASMSTART
6637 ; GFX900-NEXT: ; def s[4:7]
6638 ; GFX900-NEXT: ;;#ASMEND
6639 ; GFX900-NEXT: s_mov_b32 s9, s7
6640 ; GFX900-NEXT: ;;#ASMSTART
6641 ; GFX900-NEXT: ; use s[8:9]
6642 ; GFX900-NEXT: ;;#ASMEND
6643 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6645 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__0_7:
6647 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6648 ; GFX90A-NEXT: ;;#ASMSTART
6649 ; GFX90A-NEXT: ; def s[8:11]
6650 ; GFX90A-NEXT: ;;#ASMEND
6651 ; GFX90A-NEXT: ;;#ASMSTART
6652 ; GFX90A-NEXT: ; def s[4:7]
6653 ; GFX90A-NEXT: ;;#ASMEND
6654 ; GFX90A-NEXT: s_mov_b32 s9, s7
6655 ; GFX90A-NEXT: ;;#ASMSTART
6656 ; GFX90A-NEXT: ; use s[8:9]
6657 ; GFX90A-NEXT: ;;#ASMEND
6658 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6660 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__0_7:
6662 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6663 ; GFX940-NEXT: ;;#ASMSTART
6664 ; GFX940-NEXT: ; def s[8:11]
6665 ; GFX940-NEXT: ;;#ASMEND
6666 ; GFX940-NEXT: ;;#ASMSTART
6667 ; GFX940-NEXT: ; def s[0:3]
6668 ; GFX940-NEXT: ;;#ASMEND
6669 ; GFX940-NEXT: s_mov_b32 s9, s3
6670 ; GFX940-NEXT: ;;#ASMSTART
6671 ; GFX940-NEXT: ; use s[8:9]
6672 ; GFX940-NEXT: ;;#ASMEND
6673 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6674 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6675 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6676 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 0, i32 7>
6677 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6681 define void @s_shuffle_v2i32_v4i32__1_7() {
6682 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_7:
6684 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6685 ; GFX900-NEXT: ;;#ASMSTART
6686 ; GFX900-NEXT: ; def s[8:11]
6687 ; GFX900-NEXT: ;;#ASMEND
6688 ; GFX900-NEXT: ;;#ASMSTART
6689 ; GFX900-NEXT: ; def s[4:7]
6690 ; GFX900-NEXT: ;;#ASMEND
6691 ; GFX900-NEXT: s_mov_b32 s10, s5
6692 ; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11]
6693 ; GFX900-NEXT: ;;#ASMSTART
6694 ; GFX900-NEXT: ; use s[8:9]
6695 ; GFX900-NEXT: ;;#ASMEND
6696 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6698 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__1_7:
6700 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6701 ; GFX90A-NEXT: ;;#ASMSTART
6702 ; GFX90A-NEXT: ; def s[8:11]
6703 ; GFX90A-NEXT: ;;#ASMEND
6704 ; GFX90A-NEXT: ;;#ASMSTART
6705 ; GFX90A-NEXT: ; def s[4:7]
6706 ; GFX90A-NEXT: ;;#ASMEND
6707 ; GFX90A-NEXT: s_mov_b32 s10, s5
6708 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11]
6709 ; GFX90A-NEXT: ;;#ASMSTART
6710 ; GFX90A-NEXT: ; use s[8:9]
6711 ; GFX90A-NEXT: ;;#ASMEND
6712 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6714 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__1_7:
6716 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6717 ; GFX940-NEXT: ;;#ASMSTART
6718 ; GFX940-NEXT: ; def s[4:7]
6719 ; GFX940-NEXT: ;;#ASMEND
6720 ; GFX940-NEXT: ;;#ASMSTART
6721 ; GFX940-NEXT: ; def s[0:3]
6722 ; GFX940-NEXT: ;;#ASMEND
6723 ; GFX940-NEXT: s_mov_b32 s6, s1
6724 ; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7]
6725 ; GFX940-NEXT: ;;#ASMSTART
6726 ; GFX940-NEXT: ; use s[8:9]
6727 ; GFX940-NEXT: ;;#ASMEND
6728 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6729 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6730 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6731 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 1, i32 7>
6732 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6736 define void @s_shuffle_v2i32_v4i32__2_7() {
6737 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_7:
6739 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6740 ; GFX900-NEXT: ;;#ASMSTART
6741 ; GFX900-NEXT: ; def s[4:7]
6742 ; GFX900-NEXT: ;;#ASMEND
6743 ; GFX900-NEXT: ;;#ASMSTART
6744 ; GFX900-NEXT: ; def s[8:11]
6745 ; GFX900-NEXT: ;;#ASMEND
6746 ; GFX900-NEXT: s_mov_b32 s7, s11
6747 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
6748 ; GFX900-NEXT: ;;#ASMSTART
6749 ; GFX900-NEXT: ; use s[8:9]
6750 ; GFX900-NEXT: ;;#ASMEND
6751 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6753 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__2_7:
6755 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6756 ; GFX90A-NEXT: ;;#ASMSTART
6757 ; GFX90A-NEXT: ; def s[4:7]
6758 ; GFX90A-NEXT: ;;#ASMEND
6759 ; GFX90A-NEXT: ;;#ASMSTART
6760 ; GFX90A-NEXT: ; def s[8:11]
6761 ; GFX90A-NEXT: ;;#ASMEND
6762 ; GFX90A-NEXT: s_mov_b32 s7, s11
6763 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
6764 ; GFX90A-NEXT: ;;#ASMSTART
6765 ; GFX90A-NEXT: ; use s[8:9]
6766 ; GFX90A-NEXT: ;;#ASMEND
6767 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6769 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__2_7:
6771 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6772 ; GFX940-NEXT: ;;#ASMSTART
6773 ; GFX940-NEXT: ; def s[0:3]
6774 ; GFX940-NEXT: ;;#ASMEND
6775 ; GFX940-NEXT: ;;#ASMSTART
6776 ; GFX940-NEXT: ; def s[4:7]
6777 ; GFX940-NEXT: ;;#ASMEND
6778 ; GFX940-NEXT: s_mov_b32 s3, s7
6779 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
6780 ; GFX940-NEXT: ;;#ASMSTART
6781 ; GFX940-NEXT: ; use s[8:9]
6782 ; GFX940-NEXT: ;;#ASMEND
6783 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6784 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6785 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6786 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 2, i32 7>
6787 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6791 define void @s_shuffle_v2i32_v4i32__3_7() {
6792 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_7:
6794 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6795 ; GFX900-NEXT: ;;#ASMSTART
6796 ; GFX900-NEXT: ; def s[8:11]
6797 ; GFX900-NEXT: ;;#ASMEND
6798 ; GFX900-NEXT: ;;#ASMSTART
6799 ; GFX900-NEXT: ; def s[4:7]
6800 ; GFX900-NEXT: ;;#ASMEND
6801 ; GFX900-NEXT: s_mov_b32 s10, s7
6802 ; GFX900-NEXT: s_mov_b64 s[8:9], s[10:11]
6803 ; GFX900-NEXT: ;;#ASMSTART
6804 ; GFX900-NEXT: ; use s[8:9]
6805 ; GFX900-NEXT: ;;#ASMEND
6806 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6808 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__3_7:
6810 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6811 ; GFX90A-NEXT: ;;#ASMSTART
6812 ; GFX90A-NEXT: ; def s[8:11]
6813 ; GFX90A-NEXT: ;;#ASMEND
6814 ; GFX90A-NEXT: ;;#ASMSTART
6815 ; GFX90A-NEXT: ; def s[4:7]
6816 ; GFX90A-NEXT: ;;#ASMEND
6817 ; GFX90A-NEXT: s_mov_b32 s10, s7
6818 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[10:11]
6819 ; GFX90A-NEXT: ;;#ASMSTART
6820 ; GFX90A-NEXT: ; use s[8:9]
6821 ; GFX90A-NEXT: ;;#ASMEND
6822 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6824 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__3_7:
6826 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6827 ; GFX940-NEXT: ;;#ASMSTART
6828 ; GFX940-NEXT: ; def s[4:7]
6829 ; GFX940-NEXT: ;;#ASMEND
6830 ; GFX940-NEXT: ;;#ASMSTART
6831 ; GFX940-NEXT: ; def s[0:3]
6832 ; GFX940-NEXT: ;;#ASMEND
6833 ; GFX940-NEXT: s_mov_b32 s6, s3
6834 ; GFX940-NEXT: s_mov_b64 s[8:9], s[6:7]
6835 ; GFX940-NEXT: ;;#ASMSTART
6836 ; GFX940-NEXT: ; use s[8:9]
6837 ; GFX940-NEXT: ;;#ASMEND
6838 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6839 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6840 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6841 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 3, i32 7>
6842 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6846 define void @s_shuffle_v2i32_v4i32__4_7() {
6847 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__4_7:
6849 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6850 ; GFX9-NEXT: ;;#ASMSTART
6851 ; GFX9-NEXT: ; def s[8:11]
6852 ; GFX9-NEXT: ;;#ASMEND
6853 ; GFX9-NEXT: s_mov_b32 s9, s11
6854 ; GFX9-NEXT: ;;#ASMSTART
6855 ; GFX9-NEXT: ; use s[8:9]
6856 ; GFX9-NEXT: ;;#ASMEND
6857 ; GFX9-NEXT: s_setpc_b64 s[30:31]
6858 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6859 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6860 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 4, i32 7>
6861 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6865 define void @s_shuffle_v2i32_v4i32__5_7() {
6866 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_7:
6868 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6869 ; GFX900-NEXT: ;;#ASMSTART
6870 ; GFX900-NEXT: ; def s[4:7]
6871 ; GFX900-NEXT: ;;#ASMEND
6872 ; GFX900-NEXT: s_mov_b32 s6, s5
6873 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
6874 ; GFX900-NEXT: ;;#ASMSTART
6875 ; GFX900-NEXT: ; use s[8:9]
6876 ; GFX900-NEXT: ;;#ASMEND
6877 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6879 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__5_7:
6881 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6882 ; GFX90A-NEXT: ;;#ASMSTART
6883 ; GFX90A-NEXT: ; def s[4:7]
6884 ; GFX90A-NEXT: ;;#ASMEND
6885 ; GFX90A-NEXT: s_mov_b32 s6, s5
6886 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
6887 ; GFX90A-NEXT: ;;#ASMSTART
6888 ; GFX90A-NEXT: ; use s[8:9]
6889 ; GFX90A-NEXT: ;;#ASMEND
6890 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6892 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__5_7:
6894 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6895 ; GFX940-NEXT: ;;#ASMSTART
6896 ; GFX940-NEXT: ; def s[0:3]
6897 ; GFX940-NEXT: ;;#ASMEND
6898 ; GFX940-NEXT: s_mov_b32 s2, s1
6899 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
6900 ; GFX940-NEXT: ;;#ASMSTART
6901 ; GFX940-NEXT: ; use s[8:9]
6902 ; GFX940-NEXT: ;;#ASMEND
6903 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6904 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6905 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6906 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 5, i32 7>
6907 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6911 define void @s_shuffle_v2i32_v4i32__6_7() {
6912 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_7:
6914 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6915 ; GFX900-NEXT: ;;#ASMSTART
6916 ; GFX900-NEXT: ; def s[4:7]
6917 ; GFX900-NEXT: ;;#ASMEND
6918 ; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]
6919 ; GFX900-NEXT: ;;#ASMSTART
6920 ; GFX900-NEXT: ; use s[8:9]
6921 ; GFX900-NEXT: ;;#ASMEND
6922 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6924 ; GFX90A-LABEL: s_shuffle_v2i32_v4i32__6_7:
6926 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6927 ; GFX90A-NEXT: ;;#ASMSTART
6928 ; GFX90A-NEXT: ; def s[4:7]
6929 ; GFX90A-NEXT: ;;#ASMEND
6930 ; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]
6931 ; GFX90A-NEXT: ;;#ASMSTART
6932 ; GFX90A-NEXT: ; use s[8:9]
6933 ; GFX90A-NEXT: ;;#ASMEND
6934 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6936 ; GFX940-LABEL: s_shuffle_v2i32_v4i32__6_7:
6938 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6939 ; GFX940-NEXT: ;;#ASMSTART
6940 ; GFX940-NEXT: ; def s[0:3]
6941 ; GFX940-NEXT: ;;#ASMEND
6942 ; GFX940-NEXT: s_mov_b64 s[8:9], s[2:3]
6943 ; GFX940-NEXT: ;;#ASMSTART
6944 ; GFX940-NEXT: ; use s[8:9]
6945 ; GFX940-NEXT: ;;#ASMEND
6946 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6947 %vec0 = call <4 x i32> asm "; def $0", "=s"()
6948 %vec1 = call <4 x i32> asm "; def $0", "=s"()
6949 %shuf = shufflevector <4 x i32> %vec0, <4 x i32> %vec1, <2 x i32> <i32 6, i32 7>
6950 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
6953 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
6954 ; GFX90APLUS: {{.*}}