[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / shufflevector.v2i32.v4i32.ll
bloba2431d56ce2fd6ecda1c19aec4cfa34219121c54
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:
9 ; GFX9:       ; %bb.0:
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
15   ret void
18 define void @v_shuffle_v2i32_v4i32__0_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_u:
20 ; GFX900:       ; %bb.0:
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:
31 ; GFX90A:       ; %bb.0:
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:
42 ; GFX940:       ; %bb.0:
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
54   ret void
57 define void @v_shuffle_v2i32_v4i32__1_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_u:
59 ; GFX900:       ; %bb.0:
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:
70 ; GFX90A:       ; %bb.0:
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:
82 ; GFX940:       ; %bb.0:
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
95   ret void
98 define void @v_shuffle_v2i32_v4i32__2_u(ptr addrspace(1) inreg %ptr) {
99 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_u:
100 ; GFX900:       ; %bb.0:
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:
111 ; GFX90A:       ; %bb.0:
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:
122 ; GFX940:       ; %bb.0:
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
134   ret void
137 define void @v_shuffle_v2i32_v4i32__3_u(ptr addrspace(1) inreg %ptr) {
138 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_u:
139 ; GFX900:       ; %bb.0:
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:
151 ; GFX90A:       ; %bb.0:
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:
163 ; GFX940:       ; %bb.0:
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
176   ret void
179 define void @v_shuffle_v2i32_v4i32__4_u(ptr addrspace(1) inreg %ptr) {
180 ; GFX9-LABEL: v_shuffle_v2i32_v4i32__4_u:
181 ; GFX9:       ; %bb.0:
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
187   ret void
190 define void @v_shuffle_v2i32_v4i32__5_u(ptr addrspace(1) inreg %ptr) {
191 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_u:
192 ; GFX900:       ; %bb.0:
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:
203 ; GFX90A:       ; %bb.0:
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:
215 ; GFX940:       ; %bb.0:
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
229   ret void
232 define void @v_shuffle_v2i32_v4i32__6_u(ptr addrspace(1) inreg %ptr) {
233 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_u:
234 ; GFX900:       ; %bb.0:
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:
245 ; GFX90A:       ; %bb.0:
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:
256 ; GFX940:       ; %bb.0:
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
269   ret void
272 define void @v_shuffle_v2i32_v4i32__7_u(ptr addrspace(1) inreg %ptr) {
273 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_u:
274 ; GFX900:       ; %bb.0:
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:
286 ; GFX90A:       ; %bb.0:
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:
298 ; GFX940:       ; %bb.0:
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
312   ret void
315 define void @v_shuffle_v2i32_v4i32__7_0(ptr addrspace(1) inreg %ptr) {
316 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_0:
317 ; GFX900:       ; %bb.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:
333 ; GFX90A:       ; %bb.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:
348 ; GFX940:       ; %bb.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
366   ret void
369 define void @v_shuffle_v2i32_v4i32__7_1(ptr addrspace(1) inreg %ptr) {
370 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_1:
371 ; GFX900:       ; %bb.0:
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:
386 ; GFX90A:       ; %bb.0:
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:
401 ; GFX940:       ; %bb.0:
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
419   ret void
422 define void @v_shuffle_v2i32_v4i32__7_2(ptr addrspace(1) inreg %ptr) {
423 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_2:
424 ; GFX900:       ; %bb.0:
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:
439 ; GFX90A:       ; %bb.0:
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:
454 ; GFX940:       ; %bb.0:
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
472   ret void
475 define void @v_shuffle_v2i32_v4i32__7_3(ptr addrspace(1) inreg %ptr) {
476 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_3:
477 ; GFX900:       ; %bb.0:
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:
492 ; GFX90A:       ; %bb.0:
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:
507 ; GFX940:       ; %bb.0:
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
525   ret void
528 define void @v_shuffle_v2i32_v4i32__7_4(ptr addrspace(1) inreg %ptr) {
529 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_4:
530 ; GFX900:       ; %bb.0:
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:
543 ; GFX90A:       ; %bb.0:
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:
556 ; GFX940:       ; %bb.0:
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
571   ret void
574 define void @v_shuffle_v2i32_v4i32__7_5(ptr addrspace(1) inreg %ptr) {
575 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_5:
576 ; GFX900:       ; %bb.0:
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:
588 ; GFX90A:       ; %bb.0:
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:
600 ; GFX940:       ; %bb.0:
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
614   ret void
617 define void @v_shuffle_v2i32_v4i32__7_6(ptr addrspace(1) inreg %ptr) {
618 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_6:
619 ; GFX900:       ; %bb.0:
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:
631 ; GFX90A:       ; %bb.0:
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:
643 ; GFX940:       ; %bb.0:
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
657   ret void
660 define void @v_shuffle_v2i32_v4i32__7_7(ptr addrspace(1) inreg %ptr) {
661 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__7_7:
662 ; GFX900:       ; %bb.0:
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:
674 ; GFX90A:       ; %bb.0:
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:
686 ; GFX940:       ; %bb.0:
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
700   ret void
703 define void @v_shuffle_v2i32_v4i32__u_0(ptr addrspace(1) inreg %ptr) {
704 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_0:
705 ; GFX900:       ; %bb.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:
717 ; GFX90A:       ; %bb.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:
729 ; GFX940:       ; %bb.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
742   ret void
745 define void @v_shuffle_v2i32_v4i32__0_0(ptr addrspace(1) inreg %ptr) {
746 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_0:
747 ; GFX900:       ; %bb.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:
759 ; GFX90A:       ; %bb.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:
771 ; GFX940:       ; %bb.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
784   ret void
787 define void @v_shuffle_v2i32_v4i32__1_0(ptr addrspace(1) inreg %ptr) {
788 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_0:
789 ; GFX900:       ; %bb.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:
801 ; GFX90A:       ; %bb.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:
813 ; GFX940:       ; %bb.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
826   ret void
829 define void @v_shuffle_v2i32_v4i32__2_0(ptr addrspace(1) inreg %ptr) {
830 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_0:
831 ; GFX900:       ; %bb.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:
843 ; GFX90A:       ; %bb.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:
855 ; GFX940:       ; %bb.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
868   ret void
871 define void @v_shuffle_v2i32_v4i32__3_0(ptr addrspace(1) inreg %ptr) {
872 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_0:
873 ; GFX900:       ; %bb.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:
886 ; GFX90A:       ; %bb.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:
899 ; GFX940:       ; %bb.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
913   ret void
916 define void @v_shuffle_v2i32_v4i32__4_0(ptr addrspace(1) inreg %ptr) {
917 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_0:
918 ; GFX900:       ; %bb.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:
930 ; GFX90A:       ; %bb.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:
942 ; GFX940:       ; %bb.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
955   ret void
958 define void @v_shuffle_v2i32_v4i32__5_0(ptr addrspace(1) inreg %ptr) {
959 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_0:
960 ; GFX900:       ; %bb.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:
975 ; GFX90A:       ; %bb.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:
990 ; GFX940:       ; %bb.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
1008   ret void
1011 define void @v_shuffle_v2i32_v4i32__6_0(ptr addrspace(1) inreg %ptr) {
1012 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_0:
1013 ; GFX900:       ; %bb.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:
1028 ; GFX90A:       ; %bb.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:
1043 ; GFX940:       ; %bb.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
1061   ret void
1064 define void @v_shuffle_v2i32_v4i32__u_1(ptr addrspace(1) inreg %ptr) {
1065 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_1:
1066 ; GFX900:       ; %bb.0:
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:
1077 ; GFX90A:       ; %bb.0:
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:
1088 ; GFX940:       ; %bb.0:
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
1100   ret void
1103 define void @v_shuffle_v2i32_v4i32__0_1(ptr addrspace(1) inreg %ptr) {
1104 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_1:
1105 ; GFX900:       ; %bb.0:
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:
1116 ; GFX90A:       ; %bb.0:
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:
1127 ; GFX940:       ; %bb.0:
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
1139   ret void
1142 define void @v_shuffle_v2i32_v4i32__1_1(ptr addrspace(1) inreg %ptr) {
1143 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_1:
1144 ; GFX900:       ; %bb.0:
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:
1156 ; GFX90A:       ; %bb.0:
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:
1168 ; GFX940:       ; %bb.0:
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
1181   ret void
1184 define void @v_shuffle_v2i32_v4i32__2_1(ptr addrspace(1) inreg %ptr) {
1185 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_1:
1186 ; GFX900:       ; %bb.0:
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:
1198 ; GFX90A:       ; %bb.0:
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:
1210 ; GFX940:       ; %bb.0:
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
1223   ret void
1226 define void @v_shuffle_v2i32_v4i32__3_1(ptr addrspace(1) inreg %ptr) {
1227 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_1:
1228 ; GFX900:       ; %bb.0:
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:
1240 ; GFX90A:       ; %bb.0:
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:
1252 ; GFX940:       ; %bb.0:
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
1265   ret void
1268 define void @v_shuffle_v2i32_v4i32__4_1(ptr addrspace(1) inreg %ptr) {
1269 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_1:
1270 ; GFX900:       ; %bb.0:
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:
1281 ; GFX90A:       ; %bb.0:
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:
1292 ; GFX940:       ; %bb.0:
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
1304   ret void
1307 define void @v_shuffle_v2i32_v4i32__5_1(ptr addrspace(1) inreg %ptr) {
1308 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_1:
1309 ; GFX900:       ; %bb.0:
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:
1324 ; GFX90A:       ; %bb.0:
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:
1339 ; GFX940:       ; %bb.0:
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
1357   ret void
1360 define void @v_shuffle_v2i32_v4i32__6_1(ptr addrspace(1) inreg %ptr) {
1361 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_1:
1362 ; GFX900:       ; %bb.0:
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:
1377 ; GFX90A:       ; %bb.0:
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:
1392 ; GFX940:       ; %bb.0:
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
1410   ret void
1413 define void @v_shuffle_v2i32_v4i32__u_2(ptr addrspace(1) inreg %ptr) {
1414 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_2:
1415 ; GFX900:       ; %bb.0:
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:
1426 ; GFX90A:       ; %bb.0:
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:
1438 ; GFX940:       ; %bb.0:
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
1451   ret void
1454 define void @v_shuffle_v2i32_v4i32__0_2(ptr addrspace(1) inreg %ptr) {
1455 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_2:
1456 ; GFX900:       ; %bb.0:
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:
1468 ; GFX90A:       ; %bb.0:
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:
1480 ; GFX940:       ; %bb.0:
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
1493   ret void
1496 define void @v_shuffle_v2i32_v4i32__1_2(ptr addrspace(1) inreg %ptr) {
1497 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_2:
1498 ; GFX900:       ; %bb.0:
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:
1509 ; GFX90A:       ; %bb.0:
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:
1522 ; GFX940:       ; %bb.0:
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
1536   ret void
1539 define void @v_shuffle_v2i32_v4i32__2_2(ptr addrspace(1) inreg %ptr) {
1540 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_2:
1541 ; GFX900:       ; %bb.0:
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:
1553 ; GFX90A:       ; %bb.0:
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:
1565 ; GFX940:       ; %bb.0:
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
1578   ret void
1581 define void @v_shuffle_v2i32_v4i32__3_2(ptr addrspace(1) inreg %ptr) {
1582 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_2:
1583 ; GFX900:       ; %bb.0:
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:
1595 ; GFX90A:       ; %bb.0:
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:
1607 ; GFX940:       ; %bb.0:
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
1620   ret void
1623 define void @v_shuffle_v2i32_v4i32__4_2(ptr addrspace(1) inreg %ptr) {
1624 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_2:
1625 ; GFX900:       ; %bb.0:
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:
1636 ; GFX90A:       ; %bb.0:
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:
1648 ; GFX940:       ; %bb.0:
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
1661   ret void
1664 define void @v_shuffle_v2i32_v4i32__5_2(ptr addrspace(1) inreg %ptr) {
1665 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_2:
1666 ; GFX900:       ; %bb.0:
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:
1681 ; GFX90A:       ; %bb.0:
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:
1696 ; GFX940:       ; %bb.0:
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
1714   ret void
1717 define void @v_shuffle_v2i32_v4i32__6_2(ptr addrspace(1) inreg %ptr) {
1718 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_2:
1719 ; GFX900:       ; %bb.0:
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:
1734 ; GFX90A:       ; %bb.0:
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:
1749 ; GFX940:       ; %bb.0:
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
1767   ret void
1770 define void @v_shuffle_v2i32_v4i32__u_3(ptr addrspace(1) inreg %ptr) {
1771 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_3:
1772 ; GFX900:       ; %bb.0:
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:
1783 ; GFX90A:       ; %bb.0:
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:
1794 ; GFX940:       ; %bb.0:
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
1806   ret void
1809 define void @v_shuffle_v2i32_v4i32__0_3(ptr addrspace(1) inreg %ptr) {
1810 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_3:
1811 ; GFX900:       ; %bb.0:
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:
1823 ; GFX90A:       ; %bb.0:
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:
1835 ; GFX940:       ; %bb.0:
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
1848   ret void
1851 define void @v_shuffle_v2i32_v4i32__1_3(ptr addrspace(1) inreg %ptr) {
1852 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_3:
1853 ; GFX900:       ; %bb.0:
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:
1865 ; GFX90A:       ; %bb.0:
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:
1877 ; GFX940:       ; %bb.0:
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
1890   ret void
1893 define void @v_shuffle_v2i32_v4i32__2_3(ptr addrspace(1) inreg %ptr) {
1894 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_3:
1895 ; GFX900:       ; %bb.0:
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:
1906 ; GFX90A:       ; %bb.0:
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:
1917 ; GFX940:       ; %bb.0:
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
1929   ret void
1932 define void @v_shuffle_v2i32_v4i32__3_3(ptr addrspace(1) inreg %ptr) {
1933 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_3:
1934 ; GFX900:       ; %bb.0:
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:
1946 ; GFX90A:       ; %bb.0:
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:
1958 ; GFX940:       ; %bb.0:
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
1971   ret void
1974 define void @v_shuffle_v2i32_v4i32__4_3(ptr addrspace(1) inreg %ptr) {
1975 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_3:
1976 ; GFX900:       ; %bb.0:
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:
1987 ; GFX90A:       ; %bb.0:
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:
1998 ; GFX940:       ; %bb.0:
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
2010   ret void
2013 define void @v_shuffle_v2i32_v4i32__5_3(ptr addrspace(1) inreg %ptr) {
2014 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_3:
2015 ; GFX900:       ; %bb.0:
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:
2030 ; GFX90A:       ; %bb.0:
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:
2045 ; GFX940:       ; %bb.0:
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
2063   ret void
2066 define void @v_shuffle_v2i32_v4i32__6_3(ptr addrspace(1) inreg %ptr) {
2067 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_3:
2068 ; GFX900:       ; %bb.0:
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:
2083 ; GFX90A:       ; %bb.0:
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:
2098 ; GFX940:       ; %bb.0:
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
2116   ret void
2119 define void @v_shuffle_v2i32_v4i32__u_4(ptr addrspace(1) inreg %ptr) {
2120 ; GFX9-LABEL: v_shuffle_v2i32_v4i32__u_4:
2121 ; GFX9:       ; %bb.0:
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
2127   ret void
2130 define void @v_shuffle_v2i32_v4i32__0_4(ptr addrspace(1) inreg %ptr) {
2131 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_4:
2132 ; GFX900:       ; %bb.0:
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:
2143 ; GFX90A:       ; %bb.0:
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:
2154 ; GFX940:       ; %bb.0:
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
2166   ret void
2169 define void @v_shuffle_v2i32_v4i32__1_4(ptr addrspace(1) inreg %ptr) {
2170 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_4:
2171 ; GFX900:       ; %bb.0:
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:
2182 ; GFX90A:       ; %bb.0:
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:
2194 ; GFX940:       ; %bb.0:
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
2207   ret void
2210 define void @v_shuffle_v2i32_v4i32__2_4(ptr addrspace(1) inreg %ptr) {
2211 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_4:
2212 ; GFX900:       ; %bb.0:
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:
2223 ; GFX90A:       ; %bb.0:
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:
2234 ; GFX940:       ; %bb.0:
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
2246   ret void
2249 define void @v_shuffle_v2i32_v4i32__3_4(ptr addrspace(1) inreg %ptr) {
2250 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_4:
2251 ; GFX900:       ; %bb.0:
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:
2263 ; GFX90A:       ; %bb.0:
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:
2275 ; GFX940:       ; %bb.0:
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
2288   ret void
2291 define void @v_shuffle_v2i32_v4i32__4_4(ptr addrspace(1) inreg %ptr) {
2292 ; GFX9-LABEL: v_shuffle_v2i32_v4i32__4_4:
2293 ; GFX9:       ; %bb.0:
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
2299   ret void
2302 define void @v_shuffle_v2i32_v4i32__5_4(ptr addrspace(1) inreg %ptr) {
2303 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_4:
2304 ; GFX900:       ; %bb.0:
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:
2316 ; GFX90A:       ; %bb.0:
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:
2328 ; GFX940:       ; %bb.0:
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
2342   ret void
2345 define void @v_shuffle_v2i32_v4i32__6_4(ptr addrspace(1) inreg %ptr) {
2346 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_4:
2347 ; GFX900:       ; %bb.0:
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:
2359 ; GFX90A:       ; %bb.0:
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:
2371 ; GFX940:       ; %bb.0:
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
2385   ret void
2388 define void @v_shuffle_v2i32_v4i32__u_5(ptr addrspace(1) inreg %ptr) {
2389 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_5:
2390 ; GFX900:       ; %bb.0:
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:
2401 ; GFX90A:       ; %bb.0:
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:
2412 ; GFX940:       ; %bb.0:
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
2425   ret void
2428 define void @v_shuffle_v2i32_v4i32__0_5(ptr addrspace(1) inreg %ptr) {
2429 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_5:
2430 ; GFX900:       ; %bb.0:
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:
2445 ; GFX90A:       ; %bb.0:
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:
2460 ; GFX940:       ; %bb.0:
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
2478   ret void
2481 define void @v_shuffle_v2i32_v4i32__1_5(ptr addrspace(1) inreg %ptr) {
2482 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_5:
2483 ; GFX900:       ; %bb.0:
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:
2498 ; GFX90A:       ; %bb.0:
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:
2513 ; GFX940:       ; %bb.0:
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
2531   ret void
2534 define void @v_shuffle_v2i32_v4i32__2_5(ptr addrspace(1) inreg %ptr) {
2535 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_5:
2536 ; GFX900:       ; %bb.0:
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:
2551 ; GFX90A:       ; %bb.0:
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:
2566 ; GFX940:       ; %bb.0:
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
2584   ret void
2587 define void @v_shuffle_v2i32_v4i32__3_5(ptr addrspace(1) inreg %ptr) {
2588 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_5:
2589 ; GFX900:       ; %bb.0:
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:
2604 ; GFX90A:       ; %bb.0:
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:
2619 ; GFX940:       ; %bb.0:
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
2637   ret void
2640 define void @v_shuffle_v2i32_v4i32__4_5(ptr addrspace(1) inreg %ptr) {
2641 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_5:
2642 ; GFX900:       ; %bb.0:
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:
2653 ; GFX90A:       ; %bb.0:
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:
2664 ; GFX940:       ; %bb.0:
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
2677   ret void
2680 define void @v_shuffle_v2i32_v4i32__5_5(ptr addrspace(1) inreg %ptr) {
2681 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_5:
2682 ; GFX900:       ; %bb.0:
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:
2694 ; GFX90A:       ; %bb.0:
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:
2706 ; GFX940:       ; %bb.0:
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
2720   ret void
2723 define void @v_shuffle_v2i32_v4i32__6_5(ptr addrspace(1) inreg %ptr) {
2724 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_5:
2725 ; GFX900:       ; %bb.0:
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:
2737 ; GFX90A:       ; %bb.0:
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:
2749 ; GFX940:       ; %bb.0:
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
2763   ret void
2766 define void @v_shuffle_v2i32_v4i32__u_6(ptr addrspace(1) inreg %ptr) {
2767 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_6:
2768 ; GFX900:       ; %bb.0:
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:
2779 ; GFX90A:       ; %bb.0:
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:
2791 ; GFX940:       ; %bb.0:
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
2805   ret void
2808 define void @v_shuffle_v2i32_v4i32__0_6(ptr addrspace(1) inreg %ptr) {
2809 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_6:
2810 ; GFX900:       ; %bb.0:
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:
2825 ; GFX90A:       ; %bb.0:
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:
2840 ; GFX940:       ; %bb.0:
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
2858   ret void
2861 define void @v_shuffle_v2i32_v4i32__1_6(ptr addrspace(1) inreg %ptr) {
2862 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_6:
2863 ; GFX900:       ; %bb.0:
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:
2878 ; GFX90A:       ; %bb.0:
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:
2893 ; GFX940:       ; %bb.0:
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
2911   ret void
2914 define void @v_shuffle_v2i32_v4i32__2_6(ptr addrspace(1) inreg %ptr) {
2915 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_6:
2916 ; GFX900:       ; %bb.0:
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:
2931 ; GFX90A:       ; %bb.0:
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:
2946 ; GFX940:       ; %bb.0:
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
2964   ret void
2967 define void @v_shuffle_v2i32_v4i32__3_6(ptr addrspace(1) inreg %ptr) {
2968 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_6:
2969 ; GFX900:       ; %bb.0:
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:
2984 ; GFX90A:       ; %bb.0:
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:
2999 ; GFX940:       ; %bb.0:
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
3017   ret void
3020 define void @v_shuffle_v2i32_v4i32__4_6(ptr addrspace(1) inreg %ptr) {
3021 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_6:
3022 ; GFX900:       ; %bb.0:
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:
3034 ; GFX90A:       ; %bb.0:
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:
3046 ; GFX940:       ; %bb.0:
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
3060   ret void
3063 define void @v_shuffle_v2i32_v4i32__5_6(ptr addrspace(1) inreg %ptr) {
3064 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_6:
3065 ; GFX900:       ; %bb.0:
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:
3076 ; GFX90A:       ; %bb.0:
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:
3089 ; GFX940:       ; %bb.0:
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
3104   ret void
3107 define void @v_shuffle_v2i32_v4i32__6_6(ptr addrspace(1) inreg %ptr) {
3108 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_6:
3109 ; GFX900:       ; %bb.0:
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:
3121 ; GFX90A:       ; %bb.0:
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:
3133 ; GFX940:       ; %bb.0:
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
3147   ret void
3150 define void @v_shuffle_v2i32_v4i32__u_7(ptr addrspace(1) inreg %ptr) {
3151 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__u_7:
3152 ; GFX900:       ; %bb.0:
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:
3163 ; GFX90A:       ; %bb.0:
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:
3174 ; GFX940:       ; %bb.0:
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
3187   ret void
3190 define void @v_shuffle_v2i32_v4i32__0_7(ptr addrspace(1) inreg %ptr) {
3191 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__0_7:
3192 ; GFX900:       ; %bb.0:
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:
3207 ; GFX90A:       ; %bb.0:
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:
3222 ; GFX940:       ; %bb.0:
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
3240   ret void
3243 define void @v_shuffle_v2i32_v4i32__1_7(ptr addrspace(1) inreg %ptr) {
3244 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__1_7:
3245 ; GFX900:       ; %bb.0:
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:
3260 ; GFX90A:       ; %bb.0:
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:
3275 ; GFX940:       ; %bb.0:
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
3293   ret void
3296 define void @v_shuffle_v2i32_v4i32__2_7(ptr addrspace(1) inreg %ptr) {
3297 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__2_7:
3298 ; GFX900:       ; %bb.0:
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:
3313 ; GFX90A:       ; %bb.0:
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:
3328 ; GFX940:       ; %bb.0:
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
3346   ret void
3349 define void @v_shuffle_v2i32_v4i32__3_7(ptr addrspace(1) inreg %ptr) {
3350 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__3_7:
3351 ; GFX900:       ; %bb.0:
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:
3366 ; GFX90A:       ; %bb.0:
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:
3381 ; GFX940:       ; %bb.0:
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
3399   ret void
3402 define void @v_shuffle_v2i32_v4i32__4_7(ptr addrspace(1) inreg %ptr) {
3403 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__4_7:
3404 ; GFX900:       ; %bb.0:
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:
3416 ; GFX90A:       ; %bb.0:
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:
3428 ; GFX940:       ; %bb.0:
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
3442   ret void
3445 define void @v_shuffle_v2i32_v4i32__5_7(ptr addrspace(1) inreg %ptr) {
3446 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__5_7:
3447 ; GFX900:       ; %bb.0:
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:
3459 ; GFX90A:       ; %bb.0:
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:
3471 ; GFX940:       ; %bb.0:
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
3485   ret void
3488 define void @v_shuffle_v2i32_v4i32__6_7(ptr addrspace(1) inreg %ptr) {
3489 ; GFX900-LABEL: v_shuffle_v2i32_v4i32__6_7:
3490 ; GFX900:       ; %bb.0:
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:
3501 ; GFX90A:       ; %bb.0:
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:
3512 ; GFX940:       ; %bb.0:
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
3525   ret void
3528 define void @s_shuffle_v2i32_v4i32__u_u() {
3529 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__u_u:
3530 ; GFX9:       ; %bb.0:
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)
3539   ret void
3542 define void @s_shuffle_v2i32_v4i32__0_u() {
3543 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_u:
3544 ; GFX900:       ; %bb.0:
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:
3555 ; GFX90A:       ; %bb.0:
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:
3566 ; GFX940:       ; %bb.0:
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)
3579   ret void
3582 define void @s_shuffle_v2i32_v4i32__1_u() {
3583 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_u:
3584 ; GFX900:       ; %bb.0:
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:
3596 ; GFX90A:       ; %bb.0:
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:
3608 ; GFX940:       ; %bb.0:
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)
3621   ret void
3624 define void @s_shuffle_v2i32_v4i32__2_u() {
3625 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_u:
3626 ; GFX900:       ; %bb.0:
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:
3638 ; GFX90A:       ; %bb.0:
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:
3650 ; GFX940:       ; %bb.0:
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)
3663   ret void
3666 define void @s_shuffle_v2i32_v4i32__3_u() {
3667 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_u:
3668 ; GFX900:       ; %bb.0:
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:
3680 ; GFX90A:       ; %bb.0:
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:
3692 ; GFX940:       ; %bb.0:
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)
3705   ret void
3708 define void @s_shuffle_v2i32_v4i32__4_u() {
3709 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__4_u:
3710 ; GFX9:       ; %bb.0:
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)
3719   ret void
3722 define void @s_shuffle_v2i32_v4i32__5_u() {
3723 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_u:
3724 ; GFX900:       ; %bb.0:
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:
3736 ; GFX90A:       ; %bb.0:
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:
3748 ; GFX940:       ; %bb.0:
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)
3762   ret void
3765 define void @s_shuffle_v2i32_v4i32__6_u() {
3766 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_u:
3767 ; GFX900:       ; %bb.0:
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:
3779 ; GFX90A:       ; %bb.0:
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:
3791 ; GFX940:       ; %bb.0:
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)
3805   ret void
3808 define void @s_shuffle_v2i32_v4i32__7_u() {
3809 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_u:
3810 ; GFX900:       ; %bb.0:
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:
3822 ; GFX90A:       ; %bb.0:
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:
3834 ; GFX940:       ; %bb.0:
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)
3848   ret void
3851 define void @s_shuffle_v2i32_v4i32__7_0() {
3852 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_0:
3853 ; GFX900:       ; %bb.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:
3869 ; GFX90A:       ; %bb.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:
3885 ; GFX940:       ; %bb.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)
3903   ret void
3906 define void @s_shuffle_v2i32_v4i32__7_1() {
3907 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_1:
3908 ; GFX900:       ; %bb.0:
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:
3923 ; GFX90A:       ; %bb.0:
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:
3938 ; GFX940:       ; %bb.0:
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)
3955   ret void
3958 define void @s_shuffle_v2i32_v4i32__7_2() {
3959 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_2:
3960 ; GFX900:       ; %bb.0:
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:
3976 ; GFX90A:       ; %bb.0:
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:
3992 ; GFX940:       ; %bb.0:
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)
4010   ret void
4013 define void @s_shuffle_v2i32_v4i32__7_3() {
4014 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_3:
4015 ; GFX900:       ; %bb.0:
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:
4031 ; GFX90A:       ; %bb.0:
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:
4047 ; GFX940:       ; %bb.0:
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)
4065   ret void
4068 define void @s_shuffle_v2i32_v4i32__7_4() {
4069 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_4:
4070 ; GFX900:       ; %bb.0:
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:
4083 ; GFX90A:       ; %bb.0:
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:
4096 ; GFX940:       ; %bb.0:
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)
4111   ret void
4114 define void @s_shuffle_v2i32_v4i32__7_5() {
4115 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__7_5:
4116 ; GFX9:       ; %bb.0:
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)
4130   ret void
4133 define void @s_shuffle_v2i32_v4i32__7_6() {
4134 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_6:
4135 ; GFX900:       ; %bb.0:
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:
4148 ; GFX90A:       ; %bb.0:
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:
4161 ; GFX940:       ; %bb.0:
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)
4176   ret void
4179 define void @s_shuffle_v2i32_v4i32__7_7() {
4180 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__7_7:
4181 ; GFX900:       ; %bb.0:
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:
4194 ; GFX90A:       ; %bb.0:
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:
4207 ; GFX940:       ; %bb.0:
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)
4222   ret void
4225 define void @s_shuffle_v2i32_v4i32__u_0() {
4226 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_0:
4227 ; GFX900:       ; %bb.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:
4239 ; GFX90A:       ; %bb.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:
4251 ; GFX940:       ; %bb.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)
4264   ret void
4267 define void @s_shuffle_v2i32_v4i32__0_0() {
4268 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__0_0:
4269 ; GFX9:       ; %bb.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)
4282   ret void
4285 define void @s_shuffle_v2i32_v4i32__1_0() {
4286 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_0:
4287 ; GFX900:       ; %bb.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:
4300 ; GFX90A:       ; %bb.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:
4313 ; GFX940:       ; %bb.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)
4327   ret void
4330 define void @s_shuffle_v2i32_v4i32__2_0() {
4331 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_0:
4332 ; GFX900:       ; %bb.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:
4345 ; GFX90A:       ; %bb.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:
4358 ; GFX940:       ; %bb.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)
4372   ret void
4375 define void @s_shuffle_v2i32_v4i32__3_0() {
4376 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_0:
4377 ; GFX900:       ; %bb.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:
4390 ; GFX90A:       ; %bb.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:
4403 ; GFX940:       ; %bb.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)
4417   ret void
4420 define void @s_shuffle_v2i32_v4i32__4_0() {
4421 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_0:
4422 ; GFX900:       ; %bb.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:
4434 ; GFX90A:       ; %bb.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:
4446 ; GFX940:       ; %bb.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)
4459   ret void
4462 define void @s_shuffle_v2i32_v4i32__5_0() {
4463 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_0:
4464 ; GFX900:       ; %bb.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:
4480 ; GFX90A:       ; %bb.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:
4496 ; GFX940:       ; %bb.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)
4514   ret void
4517 define void @s_shuffle_v2i32_v4i32__6_0() {
4518 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_0:
4519 ; GFX900:       ; %bb.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:
4535 ; GFX90A:       ; %bb.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:
4551 ; GFX940:       ; %bb.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)
4569   ret void
4572 define void @s_shuffle_v2i32_v4i32__u_1() {
4573 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_1:
4574 ; GFX900:       ; %bb.0:
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:
4585 ; GFX90A:       ; %bb.0:
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:
4596 ; GFX940:       ; %bb.0:
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)
4609   ret void
4612 define void @s_shuffle_v2i32_v4i32__0_1() {
4613 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_1:
4614 ; GFX900:       ; %bb.0:
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:
4625 ; GFX90A:       ; %bb.0:
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:
4636 ; GFX940:       ; %bb.0:
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)
4649   ret void
4652 define void @s_shuffle_v2i32_v4i32__1_1() {
4653 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__1_1:
4654 ; GFX9:       ; %bb.0:
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)
4667   ret void
4670 define void @s_shuffle_v2i32_v4i32__2_1() {
4671 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_1:
4672 ; GFX900:       ; %bb.0:
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:
4685 ; GFX90A:       ; %bb.0:
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:
4698 ; GFX940:       ; %bb.0:
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)
4712   ret void
4715 define void @s_shuffle_v2i32_v4i32__3_1() {
4716 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__3_1:
4717 ; GFX9:       ; %bb.0:
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)
4730   ret void
4733 define void @s_shuffle_v2i32_v4i32__4_1() {
4734 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_1:
4735 ; GFX900:       ; %bb.0:
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:
4746 ; GFX90A:       ; %bb.0:
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:
4757 ; GFX940:       ; %bb.0:
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)
4770   ret void
4773 define void @s_shuffle_v2i32_v4i32__5_1() {
4774 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_1:
4775 ; GFX900:       ; %bb.0:
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:
4790 ; GFX90A:       ; %bb.0:
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:
4805 ; GFX940:       ; %bb.0:
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)
4822   ret void
4825 define void @s_shuffle_v2i32_v4i32__6_1() {
4826 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_1:
4827 ; GFX900:       ; %bb.0:
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:
4843 ; GFX90A:       ; %bb.0:
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:
4859 ; GFX940:       ; %bb.0:
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)
4877   ret void
4880 define void @s_shuffle_v2i32_v4i32__u_2() {
4881 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_2:
4882 ; GFX900:       ; %bb.0:
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:
4894 ; GFX90A:       ; %bb.0:
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:
4906 ; GFX940:       ; %bb.0:
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)
4919   ret void
4922 define void @s_shuffle_v2i32_v4i32__0_2() {
4923 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__0_2:
4924 ; GFX9:       ; %bb.0:
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)
4937   ret void
4940 define void @s_shuffle_v2i32_v4i32__1_2() {
4941 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_2:
4942 ; GFX900:       ; %bb.0:
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:
4955 ; GFX90A:       ; %bb.0:
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:
4968 ; GFX940:       ; %bb.0:
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)
4982   ret void
4985 define void @s_shuffle_v2i32_v4i32__2_2() {
4986 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_2:
4987 ; GFX900:       ; %bb.0:
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:
5000 ; GFX90A:       ; %bb.0:
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:
5013 ; GFX940:       ; %bb.0:
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)
5027   ret void
5030 define void @s_shuffle_v2i32_v4i32__3_2() {
5031 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_2:
5032 ; GFX900:       ; %bb.0:
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:
5045 ; GFX90A:       ; %bb.0:
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:
5058 ; GFX940:       ; %bb.0:
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)
5072   ret void
5075 define void @s_shuffle_v2i32_v4i32__4_2() {
5076 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_2:
5077 ; GFX900:       ; %bb.0:
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:
5089 ; GFX90A:       ; %bb.0:
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:
5101 ; GFX940:       ; %bb.0:
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)
5114   ret void
5117 define void @s_shuffle_v2i32_v4i32__5_2() {
5118 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_2:
5119 ; GFX900:       ; %bb.0:
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:
5135 ; GFX90A:       ; %bb.0:
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:
5151 ; GFX940:       ; %bb.0:
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)
5169   ret void
5172 define void @s_shuffle_v2i32_v4i32__6_2() {
5173 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_2:
5174 ; GFX900:       ; %bb.0:
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:
5190 ; GFX90A:       ; %bb.0:
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:
5206 ; GFX940:       ; %bb.0:
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)
5224   ret void
5227 define void @s_shuffle_v2i32_v4i32__u_3() {
5228 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_3:
5229 ; GFX900:       ; %bb.0:
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:
5241 ; GFX90A:       ; %bb.0:
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:
5253 ; GFX940:       ; %bb.0:
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)
5266   ret void
5269 define void @s_shuffle_v2i32_v4i32__0_3() {
5270 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__0_3:
5271 ; GFX9:       ; %bb.0:
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)
5284   ret void
5287 define void @s_shuffle_v2i32_v4i32__1_3() {
5288 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_3:
5289 ; GFX900:       ; %bb.0:
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:
5302 ; GFX90A:       ; %bb.0:
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:
5315 ; GFX940:       ; %bb.0:
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)
5329   ret void
5332 define void @s_shuffle_v2i32_v4i32__2_3() {
5333 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_3:
5334 ; GFX900:       ; %bb.0:
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:
5346 ; GFX90A:       ; %bb.0:
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:
5358 ; GFX940:       ; %bb.0:
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)
5371   ret void
5374 define void @s_shuffle_v2i32_v4i32__3_3() {
5375 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_3:
5376 ; GFX900:       ; %bb.0:
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:
5389 ; GFX90A:       ; %bb.0:
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:
5402 ; GFX940:       ; %bb.0:
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)
5416   ret void
5419 define void @s_shuffle_v2i32_v4i32__4_3() {
5420 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_3:
5421 ; GFX900:       ; %bb.0:
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:
5433 ; GFX90A:       ; %bb.0:
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:
5445 ; GFX940:       ; %bb.0:
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)
5458   ret void
5461 define void @s_shuffle_v2i32_v4i32__5_3() {
5462 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_3:
5463 ; GFX900:       ; %bb.0:
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:
5479 ; GFX90A:       ; %bb.0:
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:
5495 ; GFX940:       ; %bb.0:
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)
5513   ret void
5516 define void @s_shuffle_v2i32_v4i32__6_3() {
5517 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_3:
5518 ; GFX900:       ; %bb.0:
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:
5534 ; GFX90A:       ; %bb.0:
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:
5550 ; GFX940:       ; %bb.0:
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)
5568   ret void
5571 define void @s_shuffle_v2i32_v4i32__u_4() {
5572 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__u_4:
5573 ; GFX9:       ; %bb.0:
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)
5582   ret void
5585 define void @s_shuffle_v2i32_v4i32__0_4() {
5586 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_4:
5587 ; GFX900:       ; %bb.0:
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:
5598 ; GFX90A:       ; %bb.0:
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:
5609 ; GFX940:       ; %bb.0:
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)
5622   ret void
5625 define void @s_shuffle_v2i32_v4i32__1_4() {
5626 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_4:
5627 ; GFX900:       ; %bb.0:
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:
5639 ; GFX90A:       ; %bb.0:
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:
5651 ; GFX940:       ; %bb.0:
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)
5664   ret void
5667 define void @s_shuffle_v2i32_v4i32__2_4() {
5668 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_4:
5669 ; GFX900:       ; %bb.0:
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:
5681 ; GFX90A:       ; %bb.0:
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:
5693 ; GFX940:       ; %bb.0:
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)
5706   ret void
5709 define void @s_shuffle_v2i32_v4i32__3_4() {
5710 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_4:
5711 ; GFX900:       ; %bb.0:
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:
5723 ; GFX90A:       ; %bb.0:
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:
5735 ; GFX940:       ; %bb.0:
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)
5748   ret void
5751 define void @s_shuffle_v2i32_v4i32__4_4() {
5752 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__4_4:
5753 ; GFX9:       ; %bb.0:
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)
5762   ret void
5765 define void @s_shuffle_v2i32_v4i32__5_4() {
5766 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_4:
5767 ; GFX900:       ; %bb.0:
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:
5780 ; GFX90A:       ; %bb.0:
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:
5793 ; GFX940:       ; %bb.0:
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)
5808   ret void
5811 define void @s_shuffle_v2i32_v4i32__6_4() {
5812 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_4:
5813 ; GFX900:       ; %bb.0:
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:
5826 ; GFX90A:       ; %bb.0:
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:
5839 ; GFX940:       ; %bb.0:
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)
5854   ret void
5857 define void @s_shuffle_v2i32_v4i32__u_5() {
5858 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_5:
5859 ; GFX900:       ; %bb.0:
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:
5870 ; GFX90A:       ; %bb.0:
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:
5881 ; GFX940:       ; %bb.0:
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)
5895   ret void
5898 define void @s_shuffle_v2i32_v4i32__0_5() {
5899 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_5:
5900 ; GFX900:       ; %bb.0:
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:
5915 ; GFX90A:       ; %bb.0:
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:
5930 ; GFX940:       ; %bb.0:
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)
5947   ret void
5950 define void @s_shuffle_v2i32_v4i32__1_5() {
5951 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_5:
5952 ; GFX900:       ; %bb.0:
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:
5967 ; GFX90A:       ; %bb.0:
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:
5982 ; GFX940:       ; %bb.0:
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)
5999   ret void
6002 define void @s_shuffle_v2i32_v4i32__2_5() {
6003 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_5:
6004 ; GFX900:       ; %bb.0:
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:
6020 ; GFX90A:       ; %bb.0:
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:
6036 ; GFX940:       ; %bb.0:
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)
6054   ret void
6057 define void @s_shuffle_v2i32_v4i32__3_5() {
6058 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_5:
6059 ; GFX900:       ; %bb.0:
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:
6074 ; GFX90A:       ; %bb.0:
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:
6089 ; GFX940:       ; %bb.0:
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)
6106   ret void
6109 define void @s_shuffle_v2i32_v4i32__4_5() {
6110 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__4_5:
6111 ; GFX900:       ; %bb.0:
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:
6122 ; GFX90A:       ; %bb.0:
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:
6133 ; GFX940:       ; %bb.0:
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)
6147   ret void
6150 define void @s_shuffle_v2i32_v4i32__5_5() {
6151 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__5_5:
6152 ; GFX9:       ; %bb.0:
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)
6166   ret void
6169 define void @s_shuffle_v2i32_v4i32__6_5() {
6170 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_5:
6171 ; GFX900:       ; %bb.0:
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:
6184 ; GFX90A:       ; %bb.0:
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:
6197 ; GFX940:       ; %bb.0:
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)
6212   ret void
6215 define void @s_shuffle_v2i32_v4i32__u_6() {
6216 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_6:
6217 ; GFX900:       ; %bb.0:
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:
6229 ; GFX90A:       ; %bb.0:
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:
6241 ; GFX940:       ; %bb.0:
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)
6255   ret void
6258 define void @s_shuffle_v2i32_v4i32__0_6() {
6259 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_6:
6260 ; GFX900:       ; %bb.0:
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:
6275 ; GFX90A:       ; %bb.0:
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:
6290 ; GFX940:       ; %bb.0:
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)
6307   ret void
6310 define void @s_shuffle_v2i32_v4i32__1_6() {
6311 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_6:
6312 ; GFX900:       ; %bb.0:
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:
6328 ; GFX90A:       ; %bb.0:
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:
6344 ; GFX940:       ; %bb.0:
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)
6362   ret void
6365 define void @s_shuffle_v2i32_v4i32__2_6() {
6366 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_6:
6367 ; GFX900:       ; %bb.0:
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:
6383 ; GFX90A:       ; %bb.0:
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:
6399 ; GFX940:       ; %bb.0:
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)
6417   ret void
6420 define void @s_shuffle_v2i32_v4i32__3_6() {
6421 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_6:
6422 ; GFX900:       ; %bb.0:
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:
6438 ; GFX90A:       ; %bb.0:
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:
6454 ; GFX940:       ; %bb.0:
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)
6472   ret void
6475 define void @s_shuffle_v2i32_v4i32__4_6() {
6476 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__4_6:
6477 ; GFX9:       ; %bb.0:
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)
6491   ret void
6494 define void @s_shuffle_v2i32_v4i32__5_6() {
6495 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_6:
6496 ; GFX900:       ; %bb.0:
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:
6509 ; GFX90A:       ; %bb.0:
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:
6522 ; GFX940:       ; %bb.0:
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)
6537   ret void
6540 define void @s_shuffle_v2i32_v4i32__6_6() {
6541 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_6:
6542 ; GFX900:       ; %bb.0:
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:
6555 ; GFX90A:       ; %bb.0:
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:
6568 ; GFX940:       ; %bb.0:
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)
6583   ret void
6586 define void @s_shuffle_v2i32_v4i32__u_7() {
6587 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__u_7:
6588 ; GFX900:       ; %bb.0:
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:
6600 ; GFX90A:       ; %bb.0:
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:
6612 ; GFX940:       ; %bb.0:
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)
6626   ret void
6629 define void @s_shuffle_v2i32_v4i32__0_7() {
6630 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__0_7:
6631 ; GFX900:       ; %bb.0:
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:
6646 ; GFX90A:       ; %bb.0:
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:
6661 ; GFX940:       ; %bb.0:
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)
6678   ret void
6681 define void @s_shuffle_v2i32_v4i32__1_7() {
6682 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__1_7:
6683 ; GFX900:       ; %bb.0:
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:
6699 ; GFX90A:       ; %bb.0:
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:
6715 ; GFX940:       ; %bb.0:
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)
6733   ret void
6736 define void @s_shuffle_v2i32_v4i32__2_7() {
6737 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__2_7:
6738 ; GFX900:       ; %bb.0:
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:
6754 ; GFX90A:       ; %bb.0:
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:
6770 ; GFX940:       ; %bb.0:
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)
6788   ret void
6791 define void @s_shuffle_v2i32_v4i32__3_7() {
6792 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__3_7:
6793 ; GFX900:       ; %bb.0:
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:
6809 ; GFX90A:       ; %bb.0:
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:
6825 ; GFX940:       ; %bb.0:
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)
6843   ret void
6846 define void @s_shuffle_v2i32_v4i32__4_7() {
6847 ; GFX9-LABEL: s_shuffle_v2i32_v4i32__4_7:
6848 ; GFX9:       ; %bb.0:
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)
6862   ret void
6865 define void @s_shuffle_v2i32_v4i32__5_7() {
6866 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__5_7:
6867 ; GFX900:       ; %bb.0:
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:
6880 ; GFX90A:       ; %bb.0:
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:
6893 ; GFX940:       ; %bb.0:
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)
6908   ret void
6911 define void @s_shuffle_v2i32_v4i32__6_7() {
6912 ; GFX900-LABEL: s_shuffle_v2i32_v4i32__6_7:
6913 ; GFX900:       ; %bb.0:
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:
6925 ; GFX90A:       ; %bb.0:
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:
6937 ; GFX940:       ; %bb.0:
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)
6951   ret void
6953 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
6954 ; GFX90APLUS: {{.*}}