Warn when unique objects might be duplicated in shared libraries (#117622)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / shufflevector.v2i32.v3i32.ll
blobea08df2e4f50ff2982eb9420443ef1bc8abc77c3
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_v3i32__u_u(ptr addrspace(1) inreg %ptr) {
8 ; GFX9-LABEL: v_shuffle_v2i32_v3i32__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 <3 x i32> asm "; def $0", "=v"()
13   %shuf = shufflevector <3 x i32> %vec0, <3 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_v3i32__0_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_u:
20 ; GFX900:       ; %bb.0:
21 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
23 ; GFX900-NEXT:    ;;#ASMSTART
24 ; GFX900-NEXT:    ; def v[0:2]
25 ; GFX900-NEXT:    ;;#ASMEND
26 ; GFX900-NEXT:    global_store_dwordx2 v3, 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_v3i32__0_u:
31 ; GFX90A:       ; %bb.0:
32 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
34 ; GFX90A-NEXT:    ;;#ASMSTART
35 ; GFX90A-NEXT:    ; def v[0:2]
36 ; GFX90A-NEXT:    ;;#ASMEND
37 ; GFX90A-NEXT:    global_store_dwordx2 v3, 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_v3i32__0_u:
42 ; GFX940:       ; %bb.0:
43 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
45 ; GFX940-NEXT:    ;;#ASMSTART
46 ; GFX940-NEXT:    ; def v[0:2]
47 ; GFX940-NEXT:    ;;#ASMEND
48 ; GFX940-NEXT:    global_store_dwordx2 v3, 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 <3 x i32> asm "; def $0", "=v"()
52   %shuf = shufflevector <3 x i32> %vec0, <3 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_v3i32__1_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_u:
59 ; GFX900:       ; %bb.0:
60 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
62 ; GFX900-NEXT:    ;;#ASMSTART
63 ; GFX900-NEXT:    ; def v[0:2]
64 ; GFX900-NEXT:    ;;#ASMEND
65 ; GFX900-NEXT:    global_store_dwordx2 v3, 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_v3i32__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:2]
74 ; GFX90A-NEXT:    ;;#ASMEND
75 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
76 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
77 ; GFX90A-NEXT:    global_store_dwordx2 v3, 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_v3i32__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:2]
86 ; GFX940-NEXT:    ;;#ASMEND
87 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
88 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
89 ; GFX940-NEXT:    global_store_dwordx2 v3, 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 <3 x i32> asm "; def $0", "=v"()
93   %shuf = shufflevector <3 x i32> %vec0, <3 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_v3i32__2_u(ptr addrspace(1) inreg %ptr) {
99 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_u:
100 ; GFX900:       ; %bb.0:
101 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
102 ; GFX900-NEXT:    ;;#ASMSTART
103 ; GFX900-NEXT:    ; def v[0:2]
104 ; GFX900-NEXT:    ;;#ASMEND
105 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
106 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
107 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
108 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
109 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
111 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_u:
112 ; GFX90A:       ; %bb.0:
113 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
114 ; GFX90A-NEXT:    ;;#ASMSTART
115 ; GFX90A-NEXT:    ; def v[0:2]
116 ; GFX90A-NEXT:    ;;#ASMEND
117 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
118 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
119 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
120 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
121 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
123 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_u:
124 ; GFX940:       ; %bb.0:
125 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
126 ; GFX940-NEXT:    ;;#ASMSTART
127 ; GFX940-NEXT:    ; def v[0:2]
128 ; GFX940-NEXT:    ;;#ASMEND
129 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
130 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
131 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
132 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
133 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
134   %vec0 = call <3 x i32> asm "; def $0", "=v"()
135   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 poison>
136   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
137   ret void
140 define void @v_shuffle_v2i32_v3i32__3_u(ptr addrspace(1) inreg %ptr) {
141 ; GFX9-LABEL: v_shuffle_v2i32_v3i32__3_u:
142 ; GFX9:       ; %bb.0:
143 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
144 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
145   %vec0 = call <3 x i32> asm "; def $0", "=v"()
146   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 poison>
147   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
148   ret void
151 define void @v_shuffle_v2i32_v3i32__4_u(ptr addrspace(1) inreg %ptr) {
152 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_u:
153 ; GFX900:       ; %bb.0:
154 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
155 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
156 ; GFX900-NEXT:    ;;#ASMSTART
157 ; GFX900-NEXT:    ; def v[0:2]
158 ; GFX900-NEXT:    ;;#ASMEND
159 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
160 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
161 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
163 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_u:
164 ; GFX90A:       ; %bb.0:
165 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
166 ; GFX90A-NEXT:    ;;#ASMSTART
167 ; GFX90A-NEXT:    ; def v[0:2]
168 ; GFX90A-NEXT:    ;;#ASMEND
169 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
170 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
171 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
172 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
173 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
175 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_u:
176 ; GFX940:       ; %bb.0:
177 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
178 ; GFX940-NEXT:    ;;#ASMSTART
179 ; GFX940-NEXT:    ; def v[0:2]
180 ; GFX940-NEXT:    ;;#ASMEND
181 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
182 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
183 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
184 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
185 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
186   %vec0 = call <3 x i32> asm "; def $0", "=v"()
187   %vec1 = call <3 x i32> asm "; def $0", "=v"()
188   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 poison>
189   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
190   ret void
193 define void @v_shuffle_v2i32_v3i32__5_u(ptr addrspace(1) inreg %ptr) {
194 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_u:
195 ; GFX900:       ; %bb.0:
196 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
197 ; GFX900-NEXT:    ;;#ASMSTART
198 ; GFX900-NEXT:    ; def v[0:2]
199 ; GFX900-NEXT:    ;;#ASMEND
200 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
201 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
202 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
203 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
204 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
206 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_u:
207 ; GFX90A:       ; %bb.0:
208 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
209 ; GFX90A-NEXT:    ;;#ASMSTART
210 ; GFX90A-NEXT:    ; def v[0:2]
211 ; GFX90A-NEXT:    ;;#ASMEND
212 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
213 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
214 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
215 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
216 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
218 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_u:
219 ; GFX940:       ; %bb.0:
220 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
221 ; GFX940-NEXT:    ;;#ASMSTART
222 ; GFX940-NEXT:    ; def v[0:2]
223 ; GFX940-NEXT:    ;;#ASMEND
224 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
225 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
226 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
227 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
228 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
229   %vec0 = call <3 x i32> asm "; def $0", "=v"()
230   %vec1 = call <3 x i32> asm "; def $0", "=v"()
231   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 poison>
232   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
233   ret void
236 define void @v_shuffle_v2i32_v3i32__5_0(ptr addrspace(1) inreg %ptr) {
237 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_0:
238 ; GFX900:       ; %bb.0:
239 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
240 ; GFX900-NEXT:    ;;#ASMSTART
241 ; GFX900-NEXT:    ; def v[0:2]
242 ; GFX900-NEXT:    ;;#ASMEND
243 ; GFX900-NEXT:    ;;#ASMSTART
244 ; GFX900-NEXT:    ; def v[1:3]
245 ; GFX900-NEXT:    ;;#ASMEND
246 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
247 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
248 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
249 ; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
250 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
251 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
253 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_0:
254 ; GFX90A:       ; %bb.0:
255 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
256 ; GFX90A-NEXT:    ;;#ASMSTART
257 ; GFX90A-NEXT:    ; def v[0:2]
258 ; GFX90A-NEXT:    ;;#ASMEND
259 ; GFX90A-NEXT:    ;;#ASMSTART
260 ; GFX90A-NEXT:    ; def v[2:4]
261 ; GFX90A-NEXT:    ;;#ASMEND
262 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
263 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
264 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
265 ; GFX90A-NEXT:    global_store_dwordx2 v5, v[2:3], s[16:17]
266 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
267 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
269 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_0:
270 ; GFX940:       ; %bb.0:
271 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
272 ; GFX940-NEXT:    ;;#ASMSTART
273 ; GFX940-NEXT:    ; def v[0:2]
274 ; GFX940-NEXT:    ;;#ASMEND
275 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
276 ; GFX940-NEXT:    ;;#ASMSTART
277 ; GFX940-NEXT:    ; def v[2:4]
278 ; GFX940-NEXT:    ;;#ASMEND
279 ; GFX940-NEXT:    s_nop 0
280 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
281 ; GFX940-NEXT:    v_mov_b32_e32 v3, v0
282 ; GFX940-NEXT:    global_store_dwordx2 v5, v[2:3], s[0:1] sc0 sc1
283 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
284 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
285   %vec0 = call <3 x i32> asm "; def $0", "=v"()
286   %vec1 = call <3 x i32> asm "; def $0", "=v"()
287   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 0>
288   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
289   ret void
292 define void @v_shuffle_v2i32_v3i32__5_1(ptr addrspace(1) inreg %ptr) {
293 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_1:
294 ; GFX900:       ; %bb.0:
295 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
296 ; GFX900-NEXT:    ;;#ASMSTART
297 ; GFX900-NEXT:    ; def v[0:2]
298 ; GFX900-NEXT:    ;;#ASMEND
299 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
300 ; GFX900-NEXT:    ;;#ASMSTART
301 ; GFX900-NEXT:    ; def v[2:4]
302 ; GFX900-NEXT:    ;;#ASMEND
303 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
304 ; GFX900-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
305 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
306 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
308 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_1:
309 ; GFX90A:       ; %bb.0:
310 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
311 ; GFX90A-NEXT:    ;;#ASMSTART
312 ; GFX90A-NEXT:    ; def v[0:2]
313 ; GFX90A-NEXT:    ;;#ASMEND
314 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
315 ; GFX90A-NEXT:    ;;#ASMSTART
316 ; GFX90A-NEXT:    ; def v[2:4]
317 ; GFX90A-NEXT:    ;;#ASMEND
318 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
319 ; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
320 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
321 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
323 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_1:
324 ; GFX940:       ; %bb.0:
325 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
326 ; GFX940-NEXT:    ;;#ASMSTART
327 ; GFX940-NEXT:    ; def v[0:2]
328 ; GFX940-NEXT:    ;;#ASMEND
329 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
330 ; GFX940-NEXT:    ;;#ASMSTART
331 ; GFX940-NEXT:    ; def v[2:4]
332 ; GFX940-NEXT:    ;;#ASMEND
333 ; GFX940-NEXT:    s_nop 0
334 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
335 ; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
336 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
337 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
338   %vec0 = call <3 x i32> asm "; def $0", "=v"()
339   %vec1 = call <3 x i32> asm "; def $0", "=v"()
340   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 1>
341   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
342   ret void
345 define void @v_shuffle_v2i32_v3i32__5_2(ptr addrspace(1) inreg %ptr) {
346 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_2:
347 ; GFX900:       ; %bb.0:
348 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
349 ; GFX900-NEXT:    ;;#ASMSTART
350 ; GFX900-NEXT:    ; def v[0:2]
351 ; GFX900-NEXT:    ;;#ASMEND
352 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
353 ; GFX900-NEXT:    ;;#ASMSTART
354 ; GFX900-NEXT:    ; def v[3:5]
355 ; GFX900-NEXT:    ;;#ASMEND
356 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
357 ; GFX900-NEXT:    global_store_dwordx2 v6, v[1:2], s[16:17]
358 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
359 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
361 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_2:
362 ; GFX90A:       ; %bb.0:
363 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
364 ; GFX90A-NEXT:    ;;#ASMSTART
365 ; GFX90A-NEXT:    ; def v[0:2]
366 ; GFX90A-NEXT:    ;;#ASMEND
367 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
368 ; GFX90A-NEXT:    ;;#ASMSTART
369 ; GFX90A-NEXT:    ; def v[4:6]
370 ; GFX90A-NEXT:    ;;#ASMEND
371 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
372 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
373 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
374 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
375 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
377 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_2:
378 ; GFX940:       ; %bb.0:
379 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
380 ; GFX940-NEXT:    ;;#ASMSTART
381 ; GFX940-NEXT:    ; def v[0:2]
382 ; GFX940-NEXT:    ;;#ASMEND
383 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
384 ; GFX940-NEXT:    ;;#ASMSTART
385 ; GFX940-NEXT:    ; def v[4:6]
386 ; GFX940-NEXT:    ;;#ASMEND
387 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
388 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
389 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
390 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
391 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
392   %vec0 = call <3 x i32> asm "; def $0", "=v"()
393   %vec1 = call <3 x i32> asm "; def $0", "=v"()
394   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 2>
395   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
396   ret void
399 define void @v_shuffle_v2i32_v3i32__5_3(ptr addrspace(1) inreg %ptr) {
400 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_3:
401 ; GFX900:       ; %bb.0:
402 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
403 ; GFX900-NEXT:    ;;#ASMSTART
404 ; GFX900-NEXT:    ; def v[0:2]
405 ; GFX900-NEXT:    ;;#ASMEND
406 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
407 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
408 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
409 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
410 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
411 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
413 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_3:
414 ; GFX90A:       ; %bb.0:
415 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
416 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
417 ; GFX90A-NEXT:    ;;#ASMSTART
418 ; GFX90A-NEXT:    ; def v[0:2]
419 ; GFX90A-NEXT:    ;;#ASMEND
420 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
421 ; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
422 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
423 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
425 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_3:
426 ; GFX940:       ; %bb.0:
427 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
428 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
429 ; GFX940-NEXT:    ;;#ASMSTART
430 ; GFX940-NEXT:    ; def v[0:2]
431 ; GFX940-NEXT:    ;;#ASMEND
432 ; GFX940-NEXT:    s_nop 0
433 ; GFX940-NEXT:    v_mov_b32_e32 v3, v0
434 ; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
435 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
436 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
437   %vec0 = call <3 x i32> asm "; def $0", "=v"()
438   %vec1 = call <3 x i32> asm "; def $0", "=v"()
439   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 3>
440   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
441   ret void
444 define void @v_shuffle_v2i32_v3i32__5_4(ptr addrspace(1) inreg %ptr) {
445 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_4:
446 ; GFX900:       ; %bb.0:
447 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
448 ; GFX900-NEXT:    ;;#ASMSTART
449 ; GFX900-NEXT:    ; def v[0:2]
450 ; GFX900-NEXT:    ;;#ASMEND
451 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
452 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
453 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
454 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
455 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
457 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_4:
458 ; GFX90A:       ; %bb.0:
459 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
460 ; GFX90A-NEXT:    ;;#ASMSTART
461 ; GFX90A-NEXT:    ; def v[0:2]
462 ; GFX90A-NEXT:    ;;#ASMEND
463 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
464 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
465 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
466 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
467 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
469 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_4:
470 ; GFX940:       ; %bb.0:
471 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
472 ; GFX940-NEXT:    ;;#ASMSTART
473 ; GFX940-NEXT:    ; def v[0:2]
474 ; GFX940-NEXT:    ;;#ASMEND
475 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
476 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
477 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
478 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
479 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
480   %vec0 = call <3 x i32> asm "; def $0", "=v"()
481   %vec1 = call <3 x i32> asm "; def $0", "=v"()
482   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 4>
483   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
484   ret void
487 define void @v_shuffle_v2i32_v3i32__5_5(ptr addrspace(1) inreg %ptr) {
488 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_5:
489 ; GFX900:       ; %bb.0:
490 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
491 ; GFX900-NEXT:    ;;#ASMSTART
492 ; GFX900-NEXT:    ; def v[0:2]
493 ; GFX900-NEXT:    ;;#ASMEND
494 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
495 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
496 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
497 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
498 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
500 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_5:
501 ; GFX90A:       ; %bb.0:
502 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
503 ; GFX90A-NEXT:    ;;#ASMSTART
504 ; GFX90A-NEXT:    ; def v[0:2]
505 ; GFX90A-NEXT:    ;;#ASMEND
506 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
507 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
508 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
509 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
510 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
511 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
513 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_5:
514 ; GFX940:       ; %bb.0:
515 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
516 ; GFX940-NEXT:    ;;#ASMSTART
517 ; GFX940-NEXT:    ; def v[0:2]
518 ; GFX940-NEXT:    ;;#ASMEND
519 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
520 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
521 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
522 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
523 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
524 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
525   %vec0 = call <3 x i32> asm "; def $0", "=v"()
526   %vec1 = call <3 x i32> asm "; def $0", "=v"()
527   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 5>
528   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
529   ret void
532 define void @v_shuffle_v2i32_v3i32__u_0(ptr addrspace(1) inreg %ptr) {
533 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_0:
534 ; GFX900:       ; %bb.0:
535 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
536 ; GFX900-NEXT:    ;;#ASMSTART
537 ; GFX900-NEXT:    ; def v[0:2]
538 ; GFX900-NEXT:    ;;#ASMEND
539 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
540 ; GFX900-NEXT:    v_mov_b32_e32 v1, v0
541 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
542 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
543 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
545 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_0:
546 ; GFX90A:       ; %bb.0:
547 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
548 ; GFX90A-NEXT:    ;;#ASMSTART
549 ; GFX90A-NEXT:    ; def v[0:2]
550 ; GFX90A-NEXT:    ;;#ASMEND
551 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
552 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
553 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
554 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
555 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
557 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_0:
558 ; GFX940:       ; %bb.0:
559 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
560 ; GFX940-NEXT:    ;;#ASMSTART
561 ; GFX940-NEXT:    ; def v[0:2]
562 ; GFX940-NEXT:    ;;#ASMEND
563 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
564 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
565 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
566 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
567 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
568   %vec0 = call <3 x i32> asm "; def $0", "=v"()
569   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 0>
570   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
571   ret void
574 define void @v_shuffle_v2i32_v3i32__0_0(ptr addrspace(1) inreg %ptr) {
575 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_0:
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:2]
580 ; GFX900-NEXT:    ;;#ASMEND
581 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
582 ; GFX900-NEXT:    v_mov_b32_e32 v1, v0
583 ; GFX900-NEXT:    global_store_dwordx2 v3, 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_v3i32__0_0:
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:2]
592 ; GFX90A-NEXT:    ;;#ASMEND
593 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
594 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
595 ; GFX90A-NEXT:    global_store_dwordx2 v3, 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_v3i32__0_0:
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:2]
604 ; GFX940-NEXT:    ;;#ASMEND
605 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
606 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
607 ; GFX940-NEXT:    global_store_dwordx2 v3, 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 <3 x i32> asm "; def $0", "=v"()
611   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> zeroinitializer
612   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
613   ret void
616 define void @v_shuffle_v2i32_v3i32__1_0(ptr addrspace(1) inreg %ptr) {
617 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_0:
618 ; GFX900:       ; %bb.0:
619 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
620 ; GFX900-NEXT:    ;;#ASMSTART
621 ; GFX900-NEXT:    ; def v[0:2]
622 ; GFX900-NEXT:    ;;#ASMEND
623 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
624 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
625 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
626 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
627 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
629 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_0:
630 ; GFX90A:       ; %bb.0:
631 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
632 ; GFX90A-NEXT:    ;;#ASMSTART
633 ; GFX90A-NEXT:    ; def v[0:2]
634 ; GFX90A-NEXT:    ;;#ASMEND
635 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
636 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
637 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
638 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
639 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
641 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_0:
642 ; GFX940:       ; %bb.0:
643 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
644 ; GFX940-NEXT:    ;;#ASMSTART
645 ; GFX940-NEXT:    ; def v[0:2]
646 ; GFX940-NEXT:    ;;#ASMEND
647 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
648 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
649 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
650 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
651 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
652   %vec0 = call <3 x i32> asm "; def $0", "=v"()
653   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 0>
654   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
655   ret void
658 define void @v_shuffle_v2i32_v3i32__2_0(ptr addrspace(1) inreg %ptr) {
659 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_0:
660 ; GFX900:       ; %bb.0:
661 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
662 ; GFX900-NEXT:    ;;#ASMSTART
663 ; GFX900-NEXT:    ; def v[0:2]
664 ; GFX900-NEXT:    ;;#ASMEND
665 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
666 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
667 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
668 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
669 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
670 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
672 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_0:
673 ; GFX90A:       ; %bb.0:
674 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
675 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
676 ; GFX90A-NEXT:    ;;#ASMSTART
677 ; GFX90A-NEXT:    ; def v[0:2]
678 ; GFX90A-NEXT:    ;;#ASMEND
679 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
680 ; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
681 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
682 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
684 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_0:
685 ; GFX940:       ; %bb.0:
686 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
687 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
688 ; GFX940-NEXT:    ;;#ASMSTART
689 ; GFX940-NEXT:    ; def v[0:2]
690 ; GFX940-NEXT:    ;;#ASMEND
691 ; GFX940-NEXT:    s_nop 0
692 ; GFX940-NEXT:    v_mov_b32_e32 v3, v0
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 <3 x i32> asm "; def $0", "=v"()
697   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 0>
698   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
699   ret void
702 define void @v_shuffle_v2i32_v3i32__3_0(ptr addrspace(1) inreg %ptr) {
703 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_0:
704 ; GFX900:       ; %bb.0:
705 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
706 ; GFX900-NEXT:    ;;#ASMSTART
707 ; GFX900-NEXT:    ; def v[0:2]
708 ; GFX900-NEXT:    ;;#ASMEND
709 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
710 ; GFX900-NEXT:    v_mov_b32_e32 v1, v0
711 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
712 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
713 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
715 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_0:
716 ; GFX90A:       ; %bb.0:
717 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
718 ; GFX90A-NEXT:    ;;#ASMSTART
719 ; GFX90A-NEXT:    ; def v[0:2]
720 ; GFX90A-NEXT:    ;;#ASMEND
721 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
722 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
723 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
724 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
725 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
727 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_0:
728 ; GFX940:       ; %bb.0:
729 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
730 ; GFX940-NEXT:    ;;#ASMSTART
731 ; GFX940-NEXT:    ; def v[0:2]
732 ; GFX940-NEXT:    ;;#ASMEND
733 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
734 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
735 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
736 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
737 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
738   %vec0 = call <3 x i32> asm "; def $0", "=v"()
739   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 0>
740   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
741   ret void
744 define void @v_shuffle_v2i32_v3i32__4_0(ptr addrspace(1) inreg %ptr) {
745 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_0:
746 ; GFX900:       ; %bb.0:
747 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
748 ; GFX900-NEXT:    ;;#ASMSTART
749 ; GFX900-NEXT:    ; def v[0:2]
750 ; GFX900-NEXT:    ;;#ASMEND
751 ; GFX900-NEXT:    ;;#ASMSTART
752 ; GFX900-NEXT:    ; def v[1:3]
753 ; GFX900-NEXT:    ;;#ASMEND
754 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
755 ; GFX900-NEXT:    v_mov_b32_e32 v3, v0
756 ; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
757 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
758 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
760 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_0:
761 ; GFX90A:       ; %bb.0:
762 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
763 ; GFX90A-NEXT:    ;;#ASMSTART
764 ; GFX90A-NEXT:    ; def v[0:2]
765 ; GFX90A-NEXT:    ;;#ASMEND
766 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
767 ; GFX90A-NEXT:    ;;#ASMSTART
768 ; GFX90A-NEXT:    ; def v[2:4]
769 ; GFX90A-NEXT:    ;;#ASMEND
770 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
771 ; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
772 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
773 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
775 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_0:
776 ; GFX940:       ; %bb.0:
777 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
778 ; GFX940-NEXT:    ;;#ASMSTART
779 ; GFX940-NEXT:    ; def v[0:2]
780 ; GFX940-NEXT:    ;;#ASMEND
781 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
782 ; GFX940-NEXT:    ;;#ASMSTART
783 ; GFX940-NEXT:    ; def v[2:4]
784 ; GFX940-NEXT:    ;;#ASMEND
785 ; GFX940-NEXT:    s_nop 0
786 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
787 ; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
788 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
789 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
790   %vec0 = call <3 x i32> asm "; def $0", "=v"()
791   %vec1 = call <3 x i32> asm "; def $0", "=v"()
792   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 0>
793   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
794   ret void
797 define void @v_shuffle_v2i32_v3i32__u_1(ptr addrspace(1) inreg %ptr) {
798 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_1:
799 ; GFX900:       ; %bb.0:
800 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
801 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
802 ; GFX900-NEXT:    ;;#ASMSTART
803 ; GFX900-NEXT:    ; def v[0:2]
804 ; GFX900-NEXT:    ;;#ASMEND
805 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
806 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
807 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
809 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_1:
810 ; GFX90A:       ; %bb.0:
811 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
812 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
813 ; GFX90A-NEXT:    ;;#ASMSTART
814 ; GFX90A-NEXT:    ; def v[0:2]
815 ; GFX90A-NEXT:    ;;#ASMEND
816 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
817 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
818 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
820 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_1:
821 ; GFX940:       ; %bb.0:
822 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
823 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
824 ; GFX940-NEXT:    ;;#ASMSTART
825 ; GFX940-NEXT:    ; def v[0:2]
826 ; GFX940-NEXT:    ;;#ASMEND
827 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
828 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
829 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
830   %vec0 = call <3 x i32> asm "; def $0", "=v"()
831   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 1>
832   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
833   ret void
836 define void @v_shuffle_v2i32_v3i32__0_1(ptr addrspace(1) inreg %ptr) {
837 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_1:
838 ; GFX900:       ; %bb.0:
839 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
840 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
841 ; GFX900-NEXT:    ;;#ASMSTART
842 ; GFX900-NEXT:    ; def v[0:2]
843 ; GFX900-NEXT:    ;;#ASMEND
844 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
845 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
846 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
848 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_1:
849 ; GFX90A:       ; %bb.0:
850 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
851 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
852 ; GFX90A-NEXT:    ;;#ASMSTART
853 ; GFX90A-NEXT:    ; def v[0:2]
854 ; GFX90A-NEXT:    ;;#ASMEND
855 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
856 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
857 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
859 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_1:
860 ; GFX940:       ; %bb.0:
861 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
862 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
863 ; GFX940-NEXT:    ;;#ASMSTART
864 ; GFX940-NEXT:    ; def v[0:2]
865 ; GFX940-NEXT:    ;;#ASMEND
866 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
867 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
868 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
869   %vec0 = call <3 x i32> asm "; def $0", "=v"()
870   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 1>
871   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
872   ret void
875 define void @v_shuffle_v2i32_v3i32__1_1(ptr addrspace(1) inreg %ptr) {
876 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_1:
877 ; GFX900:       ; %bb.0:
878 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
879 ; GFX900-NEXT:    ;;#ASMSTART
880 ; GFX900-NEXT:    ; def v[0:2]
881 ; GFX900-NEXT:    ;;#ASMEND
882 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
883 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
884 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
885 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
886 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
888 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_1:
889 ; GFX90A:       ; %bb.0:
890 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
891 ; GFX90A-NEXT:    ;;#ASMSTART
892 ; GFX90A-NEXT:    ; def v[0:2]
893 ; GFX90A-NEXT:    ;;#ASMEND
894 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
895 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
896 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
897 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
898 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
900 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_1:
901 ; GFX940:       ; %bb.0:
902 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
903 ; GFX940-NEXT:    ;;#ASMSTART
904 ; GFX940-NEXT:    ; def v[0:2]
905 ; GFX940-NEXT:    ;;#ASMEND
906 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
907 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
908 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
909 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
910 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
911   %vec0 = call <3 x i32> asm "; def $0", "=v"()
912   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 1>
913   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
914   ret void
917 define void @v_shuffle_v2i32_v3i32__2_1(ptr addrspace(1) inreg %ptr) {
918 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_1:
919 ; GFX900:       ; %bb.0:
920 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
921 ; GFX900-NEXT:    ;;#ASMSTART
922 ; GFX900-NEXT:    ; def v[0:2]
923 ; GFX900-NEXT:    ;;#ASMEND
924 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
925 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
926 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
927 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
928 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
930 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_1:
931 ; GFX90A:       ; %bb.0:
932 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
933 ; GFX90A-NEXT:    ;;#ASMSTART
934 ; GFX90A-NEXT:    ; def v[0:2]
935 ; GFX90A-NEXT:    ;;#ASMEND
936 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
937 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
938 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
939 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
940 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
942 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_1:
943 ; GFX940:       ; %bb.0:
944 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
945 ; GFX940-NEXT:    ;;#ASMSTART
946 ; GFX940-NEXT:    ; def v[0:2]
947 ; GFX940-NEXT:    ;;#ASMEND
948 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
949 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
950 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
951 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
952 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
953   %vec0 = call <3 x i32> asm "; def $0", "=v"()
954   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 1>
955   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
956   ret void
959 define void @v_shuffle_v2i32_v3i32__3_1(ptr addrspace(1) inreg %ptr) {
960 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_1:
961 ; GFX900:       ; %bb.0:
962 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
963 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
964 ; GFX900-NEXT:    ;;#ASMSTART
965 ; GFX900-NEXT:    ; def v[0:2]
966 ; GFX900-NEXT:    ;;#ASMEND
967 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
968 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
969 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
971 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_1:
972 ; GFX90A:       ; %bb.0:
973 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
974 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
975 ; GFX90A-NEXT:    ;;#ASMSTART
976 ; GFX90A-NEXT:    ; def v[0:2]
977 ; GFX90A-NEXT:    ;;#ASMEND
978 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
979 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
980 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
982 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_1:
983 ; GFX940:       ; %bb.0:
984 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
985 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
986 ; GFX940-NEXT:    ;;#ASMSTART
987 ; GFX940-NEXT:    ; def v[0:2]
988 ; GFX940-NEXT:    ;;#ASMEND
989 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
990 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
991 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
992   %vec0 = call <3 x i32> asm "; def $0", "=v"()
993   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 1>
994   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
995   ret void
998 define void @v_shuffle_v2i32_v3i32__4_1(ptr addrspace(1) inreg %ptr) {
999 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_1:
1000 ; GFX900:       ; %bb.0:
1001 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1002 ; GFX900-NEXT:    ;;#ASMSTART
1003 ; GFX900-NEXT:    ; def v[0:2]
1004 ; GFX900-NEXT:    ;;#ASMEND
1005 ; GFX900-NEXT:    ;;#ASMSTART
1006 ; GFX900-NEXT:    ; def v[2:4]
1007 ; GFX900-NEXT:    ;;#ASMEND
1008 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
1009 ; GFX900-NEXT:    v_mov_b32_e32 v4, v1
1010 ; GFX900-NEXT:    global_store_dwordx2 v5, v[3:4], s[16:17]
1011 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1012 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1014 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_1:
1015 ; GFX90A:       ; %bb.0:
1016 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1017 ; GFX90A-NEXT:    ;;#ASMSTART
1018 ; GFX90A-NEXT:    ; def v[0:2]
1019 ; GFX90A-NEXT:    ;;#ASMEND
1020 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
1021 ; GFX90A-NEXT:    ;;#ASMSTART
1022 ; GFX90A-NEXT:    ; def v[2:4]
1023 ; GFX90A-NEXT:    ;;#ASMEND
1024 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1025 ; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
1026 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1027 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1029 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_1:
1030 ; GFX940:       ; %bb.0:
1031 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1032 ; GFX940-NEXT:    ;;#ASMSTART
1033 ; GFX940-NEXT:    ; def v[0:2]
1034 ; GFX940-NEXT:    ;;#ASMEND
1035 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
1036 ; GFX940-NEXT:    ;;#ASMSTART
1037 ; GFX940-NEXT:    ; def v[2:4]
1038 ; GFX940-NEXT:    ;;#ASMEND
1039 ; GFX940-NEXT:    s_nop 0
1040 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1041 ; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
1042 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1043 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1044   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1045   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1046   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 1>
1047   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1048   ret void
1051 define void @v_shuffle_v2i32_v3i32__u_2(ptr addrspace(1) inreg %ptr) {
1052 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_2:
1053 ; GFX900:       ; %bb.0:
1054 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1055 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1056 ; GFX900-NEXT:    ;;#ASMSTART
1057 ; GFX900-NEXT:    ; def v[0:2]
1058 ; GFX900-NEXT:    ;;#ASMEND
1059 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1060 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1061 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1063 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_2:
1064 ; GFX90A:       ; %bb.0:
1065 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1066 ; GFX90A-NEXT:    ;;#ASMSTART
1067 ; GFX90A-NEXT:    ; def v[0:2]
1068 ; GFX90A-NEXT:    ;;#ASMEND
1069 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1070 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1071 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1072 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1073 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1075 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_2:
1076 ; GFX940:       ; %bb.0:
1077 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1078 ; GFX940-NEXT:    ;;#ASMSTART
1079 ; GFX940-NEXT:    ; def v[0:2]
1080 ; GFX940-NEXT:    ;;#ASMEND
1081 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1082 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1083 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1084 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1085 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1086   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1087   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 2>
1088   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1089   ret void
1092 define void @v_shuffle_v2i32_v3i32__0_2(ptr addrspace(1) inreg %ptr) {
1093 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_2:
1094 ; GFX900:       ; %bb.0:
1095 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1096 ; GFX900-NEXT:    ;;#ASMSTART
1097 ; GFX900-NEXT:    ; def v[0:2]
1098 ; GFX900-NEXT:    ;;#ASMEND
1099 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1100 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1101 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1102 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1103 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1105 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_2:
1106 ; GFX90A:       ; %bb.0:
1107 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1108 ; GFX90A-NEXT:    ;;#ASMSTART
1109 ; GFX90A-NEXT:    ; def v[0:2]
1110 ; GFX90A-NEXT:    ;;#ASMEND
1111 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1112 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1113 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1114 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1115 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1117 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_2:
1118 ; GFX940:       ; %bb.0:
1119 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1120 ; GFX940-NEXT:    ;;#ASMSTART
1121 ; GFX940-NEXT:    ; def v[0:2]
1122 ; GFX940-NEXT:    ;;#ASMEND
1123 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1124 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1125 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1126 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1127 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1128   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1129   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 2>
1130   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1131   ret void
1134 define void @v_shuffle_v2i32_v3i32__1_2(ptr addrspace(1) inreg %ptr) {
1135 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_2:
1136 ; GFX900:       ; %bb.0:
1137 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1138 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1139 ; GFX900-NEXT:    ;;#ASMSTART
1140 ; GFX900-NEXT:    ; def v[0:2]
1141 ; GFX900-NEXT:    ;;#ASMEND
1142 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1143 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1144 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1146 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_2:
1147 ; GFX90A:       ; %bb.0:
1148 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1149 ; GFX90A-NEXT:    ;;#ASMSTART
1150 ; GFX90A-NEXT:    ; def v[0:2]
1151 ; GFX90A-NEXT:    ;;#ASMEND
1152 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1153 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1154 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1155 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1156 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1157 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1159 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_2:
1160 ; GFX940:       ; %bb.0:
1161 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1162 ; GFX940-NEXT:    ;;#ASMSTART
1163 ; GFX940-NEXT:    ; def v[0:2]
1164 ; GFX940-NEXT:    ;;#ASMEND
1165 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1166 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1167 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1168 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1169 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1170 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1171   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1172   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 2>
1173   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1174   ret void
1177 define void @v_shuffle_v2i32_v3i32__2_2(ptr addrspace(1) inreg %ptr) {
1178 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_2:
1179 ; GFX900:       ; %bb.0:
1180 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1181 ; GFX900-NEXT:    ;;#ASMSTART
1182 ; GFX900-NEXT:    ; def v[0:2]
1183 ; GFX900-NEXT:    ;;#ASMEND
1184 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1185 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1186 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1187 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1188 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1190 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_2:
1191 ; GFX90A:       ; %bb.0:
1192 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1193 ; GFX90A-NEXT:    ;;#ASMSTART
1194 ; GFX90A-NEXT:    ; def v[0:2]
1195 ; GFX90A-NEXT:    ;;#ASMEND
1196 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1197 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1198 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1199 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1200 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1201 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1203 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_2:
1204 ; GFX940:       ; %bb.0:
1205 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1206 ; GFX940-NEXT:    ;;#ASMSTART
1207 ; GFX940-NEXT:    ; def v[0:2]
1208 ; GFX940-NEXT:    ;;#ASMEND
1209 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1210 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1211 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1212 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1213 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1214 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1215   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1216   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 2>
1217   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1218   ret void
1221 define void @v_shuffle_v2i32_v3i32__3_2(ptr addrspace(1) inreg %ptr) {
1222 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_2:
1223 ; GFX900:       ; %bb.0:
1224 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1225 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1226 ; GFX900-NEXT:    ;;#ASMSTART
1227 ; GFX900-NEXT:    ; def v[0:2]
1228 ; GFX900-NEXT:    ;;#ASMEND
1229 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1230 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1231 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1233 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_2:
1234 ; GFX90A:       ; %bb.0:
1235 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1236 ; GFX90A-NEXT:    ;;#ASMSTART
1237 ; GFX90A-NEXT:    ; def v[0:2]
1238 ; GFX90A-NEXT:    ;;#ASMEND
1239 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1240 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1241 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1242 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1243 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1245 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_2:
1246 ; GFX940:       ; %bb.0:
1247 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1248 ; GFX940-NEXT:    ;;#ASMSTART
1249 ; GFX940-NEXT:    ; def v[0:2]
1250 ; GFX940-NEXT:    ;;#ASMEND
1251 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1252 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1253 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1254 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1255 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1256   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1257   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 2>
1258   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1259   ret void
1262 define void @v_shuffle_v2i32_v3i32__4_2(ptr addrspace(1) inreg %ptr) {
1263 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_2:
1264 ; GFX900:       ; %bb.0:
1265 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1266 ; GFX900-NEXT:    ;;#ASMSTART
1267 ; GFX900-NEXT:    ; def v[3:5]
1268 ; GFX900-NEXT:    ;;#ASMEND
1269 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1270 ; GFX900-NEXT:    ;;#ASMSTART
1271 ; GFX900-NEXT:    ; def v[0:2]
1272 ; GFX900-NEXT:    ;;#ASMEND
1273 ; GFX900-NEXT:    v_mov_b32_e32 v5, v2
1274 ; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17]
1275 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1276 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1278 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_2:
1279 ; GFX90A:       ; %bb.0:
1280 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1281 ; GFX90A-NEXT:    ;;#ASMSTART
1282 ; GFX90A-NEXT:    ; def v[0:2]
1283 ; GFX90A-NEXT:    ;;#ASMEND
1284 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1285 ; GFX90A-NEXT:    ;;#ASMSTART
1286 ; GFX90A-NEXT:    ; def v[4:6]
1287 ; GFX90A-NEXT:    ;;#ASMEND
1288 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
1289 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1290 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1291 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1292 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1294 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_2:
1295 ; GFX940:       ; %bb.0:
1296 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1297 ; GFX940-NEXT:    ;;#ASMSTART
1298 ; GFX940-NEXT:    ; def v[0:2]
1299 ; GFX940-NEXT:    ;;#ASMEND
1300 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1301 ; GFX940-NEXT:    ;;#ASMSTART
1302 ; GFX940-NEXT:    ; def v[4:6]
1303 ; GFX940-NEXT:    ;;#ASMEND
1304 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1305 ; GFX940-NEXT:    v_mov_b32_e32 v0, v5
1306 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1307 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1308 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1309   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1310   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1311   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 2>
1312   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1313   ret void
1316 define void @v_shuffle_v2i32_v3i32__u_3(ptr addrspace(1) inreg %ptr) {
1317 ; GFX9-LABEL: v_shuffle_v2i32_v3i32__u_3:
1318 ; GFX9:       ; %bb.0:
1319 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1320 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1321   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1322   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 3>
1323   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1324   ret void
1327 define void @v_shuffle_v2i32_v3i32__0_3(ptr addrspace(1) inreg %ptr) {
1328 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_3:
1329 ; GFX900:       ; %bb.0:
1330 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1331 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1332 ; GFX900-NEXT:    ;;#ASMSTART
1333 ; GFX900-NEXT:    ; def v[0:2]
1334 ; GFX900-NEXT:    ;;#ASMEND
1335 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1336 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1337 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1339 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_3:
1340 ; GFX90A:       ; %bb.0:
1341 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1342 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1343 ; GFX90A-NEXT:    ;;#ASMSTART
1344 ; GFX90A-NEXT:    ; def v[0:2]
1345 ; GFX90A-NEXT:    ;;#ASMEND
1346 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1347 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1348 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1350 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_3:
1351 ; GFX940:       ; %bb.0:
1352 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1353 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1354 ; GFX940-NEXT:    ;;#ASMSTART
1355 ; GFX940-NEXT:    ; def v[0:2]
1356 ; GFX940-NEXT:    ;;#ASMEND
1357 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1358 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1359 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1360   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1361   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 3>
1362   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1363   ret void
1366 define void @v_shuffle_v2i32_v3i32__1_3(ptr addrspace(1) inreg %ptr) {
1367 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_3:
1368 ; GFX900:       ; %bb.0:
1369 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1370 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1371 ; GFX900-NEXT:    ;;#ASMSTART
1372 ; GFX900-NEXT:    ; def v[0:2]
1373 ; GFX900-NEXT:    ;;#ASMEND
1374 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1375 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1376 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1378 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_3:
1379 ; GFX90A:       ; %bb.0:
1380 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1381 ; GFX90A-NEXT:    ;;#ASMSTART
1382 ; GFX90A-NEXT:    ; def v[0:2]
1383 ; GFX90A-NEXT:    ;;#ASMEND
1384 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1385 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1386 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1387 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1388 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1390 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_3:
1391 ; GFX940:       ; %bb.0:
1392 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1393 ; GFX940-NEXT:    ;;#ASMSTART
1394 ; GFX940-NEXT:    ; def v[0:2]
1395 ; GFX940-NEXT:    ;;#ASMEND
1396 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1397 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1398 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1399 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1400 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1401   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1402   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 3>
1403   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1404   ret void
1407 define void @v_shuffle_v2i32_v3i32__2_3(ptr addrspace(1) inreg %ptr) {
1408 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_3:
1409 ; GFX900:       ; %bb.0:
1410 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1411 ; GFX900-NEXT:    ;;#ASMSTART
1412 ; GFX900-NEXT:    ; def v[0:2]
1413 ; GFX900-NEXT:    ;;#ASMEND
1414 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1415 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1416 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1417 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1418 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1420 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_3:
1421 ; GFX90A:       ; %bb.0:
1422 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1423 ; GFX90A-NEXT:    ;;#ASMSTART
1424 ; GFX90A-NEXT:    ; def v[0:2]
1425 ; GFX90A-NEXT:    ;;#ASMEND
1426 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1427 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1428 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1429 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1430 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1432 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_3:
1433 ; GFX940:       ; %bb.0:
1434 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1435 ; GFX940-NEXT:    ;;#ASMSTART
1436 ; GFX940-NEXT:    ; def v[0:2]
1437 ; GFX940-NEXT:    ;;#ASMEND
1438 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1439 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1440 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1441 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1442 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1443   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1444   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 3>
1445   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1446   ret void
1449 define void @v_shuffle_v2i32_v3i32__3_3(ptr addrspace(1) inreg %ptr) {
1450 ; GFX9-LABEL: v_shuffle_v2i32_v3i32__3_3:
1451 ; GFX9:       ; %bb.0:
1452 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1453 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1454   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1455   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 3>
1456   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1457   ret void
1460 define void @v_shuffle_v2i32_v3i32__4_3(ptr addrspace(1) inreg %ptr) {
1461 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_3:
1462 ; GFX900:       ; %bb.0:
1463 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1464 ; GFX900-NEXT:    ;;#ASMSTART
1465 ; GFX900-NEXT:    ; def v[0:2]
1466 ; GFX900-NEXT:    ;;#ASMEND
1467 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1468 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
1469 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1470 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1471 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1473 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_3:
1474 ; GFX90A:       ; %bb.0:
1475 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1476 ; GFX90A-NEXT:    ;;#ASMSTART
1477 ; GFX90A-NEXT:    ; def v[0:2]
1478 ; GFX90A-NEXT:    ;;#ASMEND
1479 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1480 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
1481 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1482 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1483 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1485 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_3:
1486 ; GFX940:       ; %bb.0:
1487 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1488 ; GFX940-NEXT:    ;;#ASMSTART
1489 ; GFX940-NEXT:    ; def v[0:2]
1490 ; GFX940-NEXT:    ;;#ASMEND
1491 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1492 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
1493 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1494 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1495 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1496   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1497   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1498   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 3>
1499   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1500   ret void
1503 define void @v_shuffle_v2i32_v3i32__u_4(ptr addrspace(1) inreg %ptr) {
1504 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_4:
1505 ; GFX900:       ; %bb.0:
1506 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1507 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1508 ; GFX900-NEXT:    ;;#ASMSTART
1509 ; GFX900-NEXT:    ; def v[0:2]
1510 ; GFX900-NEXT:    ;;#ASMEND
1511 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1512 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1513 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1515 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_4:
1516 ; GFX90A:       ; %bb.0:
1517 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1518 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1519 ; GFX90A-NEXT:    ;;#ASMSTART
1520 ; GFX90A-NEXT:    ; def v[0:2]
1521 ; GFX90A-NEXT:    ;;#ASMEND
1522 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1523 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1524 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1526 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_4:
1527 ; GFX940:       ; %bb.0:
1528 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1529 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1530 ; GFX940-NEXT:    ;;#ASMSTART
1531 ; GFX940-NEXT:    ; def v[0:2]
1532 ; GFX940-NEXT:    ;;#ASMEND
1533 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1534 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1535 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1536   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1537   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1538   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 4>
1539   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1540   ret void
1543 define void @v_shuffle_v2i32_v3i32__0_4(ptr addrspace(1) inreg %ptr) {
1544 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_4:
1545 ; GFX900:       ; %bb.0:
1546 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1547 ; GFX900-NEXT:    ;;#ASMSTART
1548 ; GFX900-NEXT:    ; def v[0:2]
1549 ; GFX900-NEXT:    ;;#ASMEND
1550 ; GFX900-NEXT:    ;;#ASMSTART
1551 ; GFX900-NEXT:    ; def v[1:3]
1552 ; GFX900-NEXT:    ;;#ASMEND
1553 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1554 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1555 ; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
1556 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1557 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1559 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_4:
1560 ; GFX90A:       ; %bb.0:
1561 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1562 ; GFX90A-NEXT:    ;;#ASMSTART
1563 ; GFX90A-NEXT:    ; def v[0:2]
1564 ; GFX90A-NEXT:    ;;#ASMEND
1565 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
1566 ; GFX90A-NEXT:    ;;#ASMSTART
1567 ; GFX90A-NEXT:    ; def v[2:4]
1568 ; GFX90A-NEXT:    ;;#ASMEND
1569 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
1570 ; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
1571 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1572 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1574 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_4:
1575 ; GFX940:       ; %bb.0:
1576 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1577 ; GFX940-NEXT:    ;;#ASMSTART
1578 ; GFX940-NEXT:    ; def v[0:2]
1579 ; GFX940-NEXT:    ;;#ASMEND
1580 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
1581 ; GFX940-NEXT:    ;;#ASMSTART
1582 ; GFX940-NEXT:    ; def v[2:4]
1583 ; GFX940-NEXT:    ;;#ASMEND
1584 ; GFX940-NEXT:    s_nop 0
1585 ; GFX940-NEXT:    v_mov_b32_e32 v1, v3
1586 ; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
1587 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1588 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1589   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1590   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1591   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 4>
1592   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1593   ret void
1596 define void @v_shuffle_v2i32_v3i32__1_4(ptr addrspace(1) inreg %ptr) {
1597 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_4:
1598 ; GFX900:       ; %bb.0:
1599 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1600 ; GFX900-NEXT:    ;;#ASMSTART
1601 ; GFX900-NEXT:    ; def v[0:2]
1602 ; GFX900-NEXT:    ;;#ASMEND
1603 ; GFX900-NEXT:    ;;#ASMSTART
1604 ; GFX900-NEXT:    ; def v[2:4]
1605 ; GFX900-NEXT:    ;;#ASMEND
1606 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
1607 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
1608 ; GFX900-NEXT:    global_store_dwordx2 v5, v[1:2], s[16:17]
1609 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1610 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1612 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_4:
1613 ; GFX90A:       ; %bb.0:
1614 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1615 ; GFX90A-NEXT:    ;;#ASMSTART
1616 ; GFX90A-NEXT:    ; def v[0:2]
1617 ; GFX90A-NEXT:    ;;#ASMEND
1618 ; GFX90A-NEXT:    ;;#ASMSTART
1619 ; GFX90A-NEXT:    ; def v[2:4]
1620 ; GFX90A-NEXT:    ;;#ASMEND
1621 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
1622 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1623 ; GFX90A-NEXT:    global_store_dwordx2 v5, v[2:3], s[16:17]
1624 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1625 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1627 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_4:
1628 ; GFX940:       ; %bb.0:
1629 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1630 ; GFX940-NEXT:    ;;#ASMSTART
1631 ; GFX940-NEXT:    ; def v[0:2]
1632 ; GFX940-NEXT:    ;;#ASMEND
1633 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
1634 ; GFX940-NEXT:    ;;#ASMSTART
1635 ; GFX940-NEXT:    ; def v[2:4]
1636 ; GFX940-NEXT:    ;;#ASMEND
1637 ; GFX940-NEXT:    s_nop 0
1638 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1639 ; GFX940-NEXT:    global_store_dwordx2 v5, v[2:3], s[0:1] sc0 sc1
1640 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1641 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1642   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1643   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1644   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 4>
1645   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1646   ret void
1649 define void @v_shuffle_v2i32_v3i32__2_4(ptr addrspace(1) inreg %ptr) {
1650 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_4:
1651 ; GFX900:       ; %bb.0:
1652 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1653 ; GFX900-NEXT:    ;;#ASMSTART
1654 ; GFX900-NEXT:    ; def v[3:5]
1655 ; GFX900-NEXT:    ;;#ASMEND
1656 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1657 ; GFX900-NEXT:    ;;#ASMSTART
1658 ; GFX900-NEXT:    ; def v[0:2]
1659 ; GFX900-NEXT:    ;;#ASMEND
1660 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
1661 ; GFX900-NEXT:    global_store_dwordx2 v6, v[3:4], s[16:17]
1662 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1663 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1665 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_4:
1666 ; GFX90A:       ; %bb.0:
1667 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1668 ; GFX90A-NEXT:    ;;#ASMSTART
1669 ; GFX90A-NEXT:    ; def v[4:6]
1670 ; GFX90A-NEXT:    ;;#ASMEND
1671 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1672 ; GFX90A-NEXT:    ;;#ASMSTART
1673 ; GFX90A-NEXT:    ; def v[0:2]
1674 ; GFX90A-NEXT:    ;;#ASMEND
1675 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
1676 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[4:5], s[16:17]
1677 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1678 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1680 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_4:
1681 ; GFX940:       ; %bb.0:
1682 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1683 ; GFX940-NEXT:    ;;#ASMSTART
1684 ; GFX940-NEXT:    ; def v[4:6]
1685 ; GFX940-NEXT:    ;;#ASMEND
1686 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1687 ; GFX940-NEXT:    ;;#ASMSTART
1688 ; GFX940-NEXT:    ; def v[0:2]
1689 ; GFX940-NEXT:    ;;#ASMEND
1690 ; GFX940-NEXT:    s_nop 0
1691 ; GFX940-NEXT:    v_mov_b32_e32 v4, v2
1692 ; GFX940-NEXT:    global_store_dwordx2 v3, v[4:5], s[0:1] sc0 sc1
1693 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1694 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1695   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1696   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1697   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 4>
1698   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1699   ret void
1702 define void @v_shuffle_v2i32_v3i32__3_4(ptr addrspace(1) inreg %ptr) {
1703 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_4:
1704 ; GFX900:       ; %bb.0:
1705 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1706 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1707 ; GFX900-NEXT:    ;;#ASMSTART
1708 ; GFX900-NEXT:    ; def v[0:2]
1709 ; GFX900-NEXT:    ;;#ASMEND
1710 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1711 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1712 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1714 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_4:
1715 ; GFX90A:       ; %bb.0:
1716 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1717 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1718 ; GFX90A-NEXT:    ;;#ASMSTART
1719 ; GFX90A-NEXT:    ; def v[0:2]
1720 ; GFX90A-NEXT:    ;;#ASMEND
1721 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1722 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1723 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1725 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_4:
1726 ; GFX940:       ; %bb.0:
1727 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1728 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1729 ; GFX940-NEXT:    ;;#ASMSTART
1730 ; GFX940-NEXT:    ; def v[0:2]
1731 ; GFX940-NEXT:    ;;#ASMEND
1732 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1733 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1734 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1735   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1736   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1737   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 4>
1738   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1739   ret void
1742 define void @v_shuffle_v2i32_v3i32__4_4(ptr addrspace(1) inreg %ptr) {
1743 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_4:
1744 ; GFX900:       ; %bb.0:
1745 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1746 ; GFX900-NEXT:    ;;#ASMSTART
1747 ; GFX900-NEXT:    ; def v[0:2]
1748 ; GFX900-NEXT:    ;;#ASMEND
1749 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1750 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1751 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1752 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1753 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1755 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_4:
1756 ; GFX90A:       ; %bb.0:
1757 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1758 ; GFX90A-NEXT:    ;;#ASMSTART
1759 ; GFX90A-NEXT:    ; def v[0:2]
1760 ; GFX90A-NEXT:    ;;#ASMEND
1761 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1762 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1763 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1764 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1765 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1767 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_4:
1768 ; GFX940:       ; %bb.0:
1769 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1770 ; GFX940-NEXT:    ;;#ASMSTART
1771 ; GFX940-NEXT:    ; def v[0:2]
1772 ; GFX940-NEXT:    ;;#ASMEND
1773 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1774 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1775 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1776 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1777 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1778   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1779   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1780   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 4>
1781   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1782   ret void
1785 define void @v_shuffle_v2i32_v3i32__u_5(ptr addrspace(1) inreg %ptr) {
1786 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_5:
1787 ; GFX900:       ; %bb.0:
1788 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1789 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1790 ; GFX900-NEXT:    ;;#ASMSTART
1791 ; GFX900-NEXT:    ; def v[0:2]
1792 ; GFX900-NEXT:    ;;#ASMEND
1793 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1794 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1795 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1797 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_5:
1798 ; GFX90A:       ; %bb.0:
1799 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1800 ; GFX90A-NEXT:    ;;#ASMSTART
1801 ; GFX90A-NEXT:    ; def v[0:2]
1802 ; GFX90A-NEXT:    ;;#ASMEND
1803 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1804 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1805 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1806 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1807 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1809 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_5:
1810 ; GFX940:       ; %bb.0:
1811 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1812 ; GFX940-NEXT:    ;;#ASMSTART
1813 ; GFX940-NEXT:    ; def v[0:2]
1814 ; GFX940-NEXT:    ;;#ASMEND
1815 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1816 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1817 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1818 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1819 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1820   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1821   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1822   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 5>
1823   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1824   ret void
1827 define void @v_shuffle_v2i32_v3i32__0_5(ptr addrspace(1) inreg %ptr) {
1828 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_5:
1829 ; GFX900:       ; %bb.0:
1830 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1831 ; GFX900-NEXT:    ;;#ASMSTART
1832 ; GFX900-NEXT:    ; def v[0:2]
1833 ; GFX900-NEXT:    ;;#ASMEND
1834 ; GFX900-NEXT:    ;;#ASMSTART
1835 ; GFX900-NEXT:    ; def v[1:3]
1836 ; GFX900-NEXT:    ;;#ASMEND
1837 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1838 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
1839 ; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
1840 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1841 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1843 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_5:
1844 ; GFX90A:       ; %bb.0:
1845 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1846 ; GFX90A-NEXT:    ;;#ASMSTART
1847 ; GFX90A-NEXT:    ; def v[0:2]
1848 ; GFX90A-NEXT:    ;;#ASMEND
1849 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
1850 ; GFX90A-NEXT:    ;;#ASMSTART
1851 ; GFX90A-NEXT:    ; def v[2:4]
1852 ; GFX90A-NEXT:    ;;#ASMEND
1853 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
1854 ; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
1855 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1856 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1858 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_5:
1859 ; GFX940:       ; %bb.0:
1860 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1861 ; GFX940-NEXT:    ;;#ASMSTART
1862 ; GFX940-NEXT:    ; def v[0:2]
1863 ; GFX940-NEXT:    ;;#ASMEND
1864 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
1865 ; GFX940-NEXT:    ;;#ASMSTART
1866 ; GFX940-NEXT:    ; def v[2:4]
1867 ; GFX940-NEXT:    ;;#ASMEND
1868 ; GFX940-NEXT:    s_nop 0
1869 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
1870 ; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
1871 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1872 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1873   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1874   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1875   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 5>
1876   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1877   ret void
1880 define void @v_shuffle_v2i32_v3i32__1_5(ptr addrspace(1) inreg %ptr) {
1881 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_5:
1882 ; GFX900:       ; %bb.0:
1883 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1884 ; GFX900-NEXT:    ;;#ASMSTART
1885 ; GFX900-NEXT:    ; def v[0:2]
1886 ; GFX900-NEXT:    ;;#ASMEND
1887 ; GFX900-NEXT:    ;;#ASMSTART
1888 ; GFX900-NEXT:    ; def v[2:4]
1889 ; GFX900-NEXT:    ;;#ASMEND
1890 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
1891 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
1892 ; GFX900-NEXT:    global_store_dwordx2 v5, v[1:2], s[16:17]
1893 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1894 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1896 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_5:
1897 ; GFX90A:       ; %bb.0:
1898 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1899 ; GFX90A-NEXT:    ;;#ASMSTART
1900 ; GFX90A-NEXT:    ; def v[0:2]
1901 ; GFX90A-NEXT:    ;;#ASMEND
1902 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
1903 ; GFX90A-NEXT:    ;;#ASMSTART
1904 ; GFX90A-NEXT:    ; def v[2:4]
1905 ; GFX90A-NEXT:    ;;#ASMEND
1906 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1907 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
1908 ; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
1909 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1910 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1912 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_5:
1913 ; GFX940:       ; %bb.0:
1914 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1915 ; GFX940-NEXT:    ;;#ASMSTART
1916 ; GFX940-NEXT:    ; def v[0:2]
1917 ; GFX940-NEXT:    ;;#ASMEND
1918 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
1919 ; GFX940-NEXT:    ;;#ASMSTART
1920 ; GFX940-NEXT:    ; def v[2:4]
1921 ; GFX940-NEXT:    ;;#ASMEND
1922 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1923 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
1924 ; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
1925 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1926 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1927   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1928   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1929   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 5>
1930   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1931   ret void
1934 define void @v_shuffle_v2i32_v3i32__2_5(ptr addrspace(1) inreg %ptr) {
1935 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_5:
1936 ; GFX900:       ; %bb.0:
1937 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1938 ; GFX900-NEXT:    ;;#ASMSTART
1939 ; GFX900-NEXT:    ; def v[3:5]
1940 ; GFX900-NEXT:    ;;#ASMEND
1941 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1942 ; GFX900-NEXT:    ;;#ASMSTART
1943 ; GFX900-NEXT:    ; def v[0:2]
1944 ; GFX900-NEXT:    ;;#ASMEND
1945 ; GFX900-NEXT:    v_mov_b32_e32 v4, v2
1946 ; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17]
1947 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1948 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1950 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_5:
1951 ; GFX90A:       ; %bb.0:
1952 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1953 ; GFX90A-NEXT:    ;;#ASMSTART
1954 ; GFX90A-NEXT:    ; def v[0:2]
1955 ; GFX90A-NEXT:    ;;#ASMEND
1956 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1957 ; GFX90A-NEXT:    ;;#ASMSTART
1958 ; GFX90A-NEXT:    ; def v[4:6]
1959 ; GFX90A-NEXT:    ;;#ASMEND
1960 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1961 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
1962 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1963 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1964 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1966 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_5:
1967 ; GFX940:       ; %bb.0:
1968 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1969 ; GFX940-NEXT:    ;;#ASMSTART
1970 ; GFX940-NEXT:    ; def v[0:2]
1971 ; GFX940-NEXT:    ;;#ASMEND
1972 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1973 ; GFX940-NEXT:    ;;#ASMSTART
1974 ; GFX940-NEXT:    ; def v[4:6]
1975 ; GFX940-NEXT:    ;;#ASMEND
1976 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1977 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
1978 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1979 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1980 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1981   %vec0 = call <3 x i32> asm "; def $0", "=v"()
1982   %vec1 = call <3 x i32> asm "; def $0", "=v"()
1983   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 5>
1984   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1985   ret void
1988 define void @v_shuffle_v2i32_v3i32__3_5(ptr addrspace(1) inreg %ptr) {
1989 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_5:
1990 ; GFX900:       ; %bb.0:
1991 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1992 ; GFX900-NEXT:    ;;#ASMSTART
1993 ; GFX900-NEXT:    ; def v[0:2]
1994 ; GFX900-NEXT:    ;;#ASMEND
1995 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1996 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1997 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1998 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1999 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2001 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_5:
2002 ; GFX90A:       ; %bb.0:
2003 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2004 ; GFX90A-NEXT:    ;;#ASMSTART
2005 ; GFX90A-NEXT:    ; def v[0:2]
2006 ; GFX90A-NEXT:    ;;#ASMEND
2007 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
2008 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2009 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
2010 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2011 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2013 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_5:
2014 ; GFX940:       ; %bb.0:
2015 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2016 ; GFX940-NEXT:    ;;#ASMSTART
2017 ; GFX940-NEXT:    ; def v[0:2]
2018 ; GFX940-NEXT:    ;;#ASMEND
2019 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
2020 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2021 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
2022 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2023 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2024   %vec0 = call <3 x i32> asm "; def $0", "=v"()
2025   %vec1 = call <3 x i32> asm "; def $0", "=v"()
2026   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 5>
2027   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2028   ret void
2031 define void @v_shuffle_v2i32_v3i32__4_5(ptr addrspace(1) inreg %ptr) {
2032 ; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_5:
2033 ; GFX900:       ; %bb.0:
2034 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2035 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
2036 ; GFX900-NEXT:    ;;#ASMSTART
2037 ; GFX900-NEXT:    ; def v[0:2]
2038 ; GFX900-NEXT:    ;;#ASMEND
2039 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
2040 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2041 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2043 ; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_5:
2044 ; GFX90A:       ; %bb.0:
2045 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2046 ; GFX90A-NEXT:    ;;#ASMSTART
2047 ; GFX90A-NEXT:    ; def v[0:2]
2048 ; GFX90A-NEXT:    ;;#ASMEND
2049 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
2050 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
2051 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2052 ; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
2053 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2054 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2056 ; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_5:
2057 ; GFX940:       ; %bb.0:
2058 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2059 ; GFX940-NEXT:    ;;#ASMSTART
2060 ; GFX940-NEXT:    ; def v[0:2]
2061 ; GFX940-NEXT:    ;;#ASMEND
2062 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
2063 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
2064 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2065 ; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
2066 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2067 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2068   %vec0 = call <3 x i32> asm "; def $0", "=v"()
2069   %vec1 = call <3 x i32> asm "; def $0", "=v"()
2070   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 5>
2071   store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2072   ret void
2075 define void @s_shuffle_v2i32_v3i32__u_u() {
2076 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__u_u:
2077 ; GFX9:       ; %bb.0:
2078 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2079 ; GFX9-NEXT:    ;;#ASMSTART
2080 ; GFX9-NEXT:    ; use s[8:9]
2081 ; GFX9-NEXT:    ;;#ASMEND
2082 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2083   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2084   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> poison
2085   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2086   ret void
2089 define void @s_shuffle_v2i32_v3i32__0_u() {
2090 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_u:
2091 ; GFX900:       ; %bb.0:
2092 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2093 ; GFX900-NEXT:    ;;#ASMSTART
2094 ; GFX900-NEXT:    ; def s[8:10]
2095 ; GFX900-NEXT:    ;;#ASMEND
2096 ; GFX900-NEXT:    ;;#ASMSTART
2097 ; GFX900-NEXT:    ; use s[8:9]
2098 ; GFX900-NEXT:    ;;#ASMEND
2099 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2101 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_u:
2102 ; GFX90A:       ; %bb.0:
2103 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2104 ; GFX90A-NEXT:    ;;#ASMSTART
2105 ; GFX90A-NEXT:    ; def s[8:10]
2106 ; GFX90A-NEXT:    ;;#ASMEND
2107 ; GFX90A-NEXT:    ;;#ASMSTART
2108 ; GFX90A-NEXT:    ; use s[8:9]
2109 ; GFX90A-NEXT:    ;;#ASMEND
2110 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2112 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_u:
2113 ; GFX940:       ; %bb.0:
2114 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2115 ; GFX940-NEXT:    ;;#ASMSTART
2116 ; GFX940-NEXT:    ; def s[8:10]
2117 ; GFX940-NEXT:    ;;#ASMEND
2118 ; GFX940-NEXT:    s_nop 0
2119 ; GFX940-NEXT:    ;;#ASMSTART
2120 ; GFX940-NEXT:    ; use s[8:9]
2121 ; GFX940-NEXT:    ;;#ASMEND
2122 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2123   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2124   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 poison>
2125   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2126   ret void
2129 define void @s_shuffle_v2i32_v3i32__1_u() {
2130 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_u:
2131 ; GFX900:       ; %bb.0:
2132 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2133 ; GFX900-NEXT:    ;;#ASMSTART
2134 ; GFX900-NEXT:    ; def s[4:6]
2135 ; GFX900-NEXT:    ;;#ASMEND
2136 ; GFX900-NEXT:    s_mov_b32 s8, s5
2137 ; GFX900-NEXT:    ;;#ASMSTART
2138 ; GFX900-NEXT:    ; use s[8:9]
2139 ; GFX900-NEXT:    ;;#ASMEND
2140 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2142 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_u:
2143 ; GFX90A:       ; %bb.0:
2144 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2145 ; GFX90A-NEXT:    ;;#ASMSTART
2146 ; GFX90A-NEXT:    ; def s[4:6]
2147 ; GFX90A-NEXT:    ;;#ASMEND
2148 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2149 ; GFX90A-NEXT:    ;;#ASMSTART
2150 ; GFX90A-NEXT:    ; use s[8:9]
2151 ; GFX90A-NEXT:    ;;#ASMEND
2152 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2154 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_u:
2155 ; GFX940:       ; %bb.0:
2156 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2157 ; GFX940-NEXT:    ;;#ASMSTART
2158 ; GFX940-NEXT:    ; def s[0:2]
2159 ; GFX940-NEXT:    ;;#ASMEND
2160 ; GFX940-NEXT:    s_mov_b32 s8, s1
2161 ; GFX940-NEXT:    ;;#ASMSTART
2162 ; GFX940-NEXT:    ; use s[8:9]
2163 ; GFX940-NEXT:    ;;#ASMEND
2164 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2165   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2166   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 poison>
2167   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2168   ret void
2171 define void @s_shuffle_v2i32_v3i32__2_u() {
2172 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_u:
2173 ; GFX900:       ; %bb.0:
2174 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2175 ; GFX900-NEXT:    ;;#ASMSTART
2176 ; GFX900-NEXT:    ; def s[4:6]
2177 ; GFX900-NEXT:    ;;#ASMEND
2178 ; GFX900-NEXT:    s_mov_b32 s8, s6
2179 ; GFX900-NEXT:    ;;#ASMSTART
2180 ; GFX900-NEXT:    ; use s[8:9]
2181 ; GFX900-NEXT:    ;;#ASMEND
2182 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2184 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_u:
2185 ; GFX90A:       ; %bb.0:
2186 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2187 ; GFX90A-NEXT:    ;;#ASMSTART
2188 ; GFX90A-NEXT:    ; def s[4:6]
2189 ; GFX90A-NEXT:    ;;#ASMEND
2190 ; GFX90A-NEXT:    s_mov_b32 s8, s6
2191 ; GFX90A-NEXT:    ;;#ASMSTART
2192 ; GFX90A-NEXT:    ; use s[8:9]
2193 ; GFX90A-NEXT:    ;;#ASMEND
2194 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2196 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_u:
2197 ; GFX940:       ; %bb.0:
2198 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2199 ; GFX940-NEXT:    ;;#ASMSTART
2200 ; GFX940-NEXT:    ; def s[0:2]
2201 ; GFX940-NEXT:    ;;#ASMEND
2202 ; GFX940-NEXT:    s_mov_b32 s8, s2
2203 ; GFX940-NEXT:    ;;#ASMSTART
2204 ; GFX940-NEXT:    ; use s[8:9]
2205 ; GFX940-NEXT:    ;;#ASMEND
2206 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2207   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2208   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 poison>
2209   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2210   ret void
2213 define void @s_shuffle_v2i32_v3i32__3_u() {
2214 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_u:
2215 ; GFX9:       ; %bb.0:
2216 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2217 ; GFX9-NEXT:    ;;#ASMSTART
2218 ; GFX9-NEXT:    ; use s[8:9]
2219 ; GFX9-NEXT:    ;;#ASMEND
2220 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2221   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2222   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 poison>
2223   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2224   ret void
2227 define void @s_shuffle_v2i32_v3i32__4_u() {
2228 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_u:
2229 ; GFX900:       ; %bb.0:
2230 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2231 ; GFX900-NEXT:    ;;#ASMSTART
2232 ; GFX900-NEXT:    ; def s[4:6]
2233 ; GFX900-NEXT:    ;;#ASMEND
2234 ; GFX900-NEXT:    s_mov_b32 s8, s5
2235 ; GFX900-NEXT:    ;;#ASMSTART
2236 ; GFX900-NEXT:    ; use s[8:9]
2237 ; GFX900-NEXT:    ;;#ASMEND
2238 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2240 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_u:
2241 ; GFX90A:       ; %bb.0:
2242 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2243 ; GFX90A-NEXT:    ;;#ASMSTART
2244 ; GFX90A-NEXT:    ; def s[4:6]
2245 ; GFX90A-NEXT:    ;;#ASMEND
2246 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2247 ; GFX90A-NEXT:    ;;#ASMSTART
2248 ; GFX90A-NEXT:    ; use s[8:9]
2249 ; GFX90A-NEXT:    ;;#ASMEND
2250 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2252 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_u:
2253 ; GFX940:       ; %bb.0:
2254 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2255 ; GFX940-NEXT:    ;;#ASMSTART
2256 ; GFX940-NEXT:    ; def s[0:2]
2257 ; GFX940-NEXT:    ;;#ASMEND
2258 ; GFX940-NEXT:    s_mov_b32 s8, s1
2259 ; GFX940-NEXT:    ;;#ASMSTART
2260 ; GFX940-NEXT:    ; use s[8:9]
2261 ; GFX940-NEXT:    ;;#ASMEND
2262 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2263   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2264   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2265   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 poison>
2266   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2267   ret void
2270 define void @s_shuffle_v2i32_v3i32__5_u() {
2271 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_u:
2272 ; GFX900:       ; %bb.0:
2273 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2274 ; GFX900-NEXT:    ;;#ASMSTART
2275 ; GFX900-NEXT:    ; def s[4:6]
2276 ; GFX900-NEXT:    ;;#ASMEND
2277 ; GFX900-NEXT:    s_mov_b32 s8, s6
2278 ; GFX900-NEXT:    ;;#ASMSTART
2279 ; GFX900-NEXT:    ; use s[8:9]
2280 ; GFX900-NEXT:    ;;#ASMEND
2281 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2283 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_u:
2284 ; GFX90A:       ; %bb.0:
2285 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2286 ; GFX90A-NEXT:    ;;#ASMSTART
2287 ; GFX90A-NEXT:    ; def s[4:6]
2288 ; GFX90A-NEXT:    ;;#ASMEND
2289 ; GFX90A-NEXT:    s_mov_b32 s8, s6
2290 ; GFX90A-NEXT:    ;;#ASMSTART
2291 ; GFX90A-NEXT:    ; use s[8:9]
2292 ; GFX90A-NEXT:    ;;#ASMEND
2293 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2295 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_u:
2296 ; GFX940:       ; %bb.0:
2297 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2298 ; GFX940-NEXT:    ;;#ASMSTART
2299 ; GFX940-NEXT:    ; def s[0:2]
2300 ; GFX940-NEXT:    ;;#ASMEND
2301 ; GFX940-NEXT:    s_mov_b32 s8, s2
2302 ; GFX940-NEXT:    ;;#ASMSTART
2303 ; GFX940-NEXT:    ; use s[8:9]
2304 ; GFX940-NEXT:    ;;#ASMEND
2305 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2306   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2307   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2308   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 poison>
2309   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2310   ret void
2313 define void @s_shuffle_v2i32_v3i32__5_0() {
2314 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_0:
2315 ; GFX900:       ; %bb.0:
2316 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2317 ; GFX900-NEXT:    ;;#ASMSTART
2318 ; GFX900-NEXT:    ; def s[8:10]
2319 ; GFX900-NEXT:    ;;#ASMEND
2320 ; GFX900-NEXT:    ;;#ASMSTART
2321 ; GFX900-NEXT:    ; def s[4:6]
2322 ; GFX900-NEXT:    ;;#ASMEND
2323 ; GFX900-NEXT:    s_mov_b32 s8, s10
2324 ; GFX900-NEXT:    s_mov_b32 s9, s4
2325 ; GFX900-NEXT:    ;;#ASMSTART
2326 ; GFX900-NEXT:    ; use s[8:9]
2327 ; GFX900-NEXT:    ;;#ASMEND
2328 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2330 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_0:
2331 ; GFX90A:       ; %bb.0:
2332 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2333 ; GFX90A-NEXT:    ;;#ASMSTART
2334 ; GFX90A-NEXT:    ; def s[8:10]
2335 ; GFX90A-NEXT:    ;;#ASMEND
2336 ; GFX90A-NEXT:    ;;#ASMSTART
2337 ; GFX90A-NEXT:    ; def s[4:6]
2338 ; GFX90A-NEXT:    ;;#ASMEND
2339 ; GFX90A-NEXT:    s_mov_b32 s8, s10
2340 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2341 ; GFX90A-NEXT:    ;;#ASMSTART
2342 ; GFX90A-NEXT:    ; use s[8:9]
2343 ; GFX90A-NEXT:    ;;#ASMEND
2344 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2346 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_0:
2347 ; GFX940:       ; %bb.0:
2348 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2349 ; GFX940-NEXT:    ;;#ASMSTART
2350 ; GFX940-NEXT:    ; def s[0:2]
2351 ; GFX940-NEXT:    ;;#ASMEND
2352 ; GFX940-NEXT:    ;;#ASMSTART
2353 ; GFX940-NEXT:    ; def s[4:6]
2354 ; GFX940-NEXT:    ;;#ASMEND
2355 ; GFX940-NEXT:    s_mov_b32 s8, s6
2356 ; GFX940-NEXT:    s_mov_b32 s9, s0
2357 ; GFX940-NEXT:    ;;#ASMSTART
2358 ; GFX940-NEXT:    ; use s[8:9]
2359 ; GFX940-NEXT:    ;;#ASMEND
2360 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2361   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2362   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2363   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 0>
2364   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2365   ret void
2368 define void @s_shuffle_v2i32_v3i32__5_1() {
2369 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_1:
2370 ; GFX900:       ; %bb.0:
2371 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2372 ; GFX900-NEXT:    ;;#ASMSTART
2373 ; GFX900-NEXT:    ; def s[8:10]
2374 ; GFX900-NEXT:    ;;#ASMEND
2375 ; GFX900-NEXT:    ;;#ASMSTART
2376 ; GFX900-NEXT:    ; def s[4:6]
2377 ; GFX900-NEXT:    ;;#ASMEND
2378 ; GFX900-NEXT:    s_mov_b32 s8, s6
2379 ; GFX900-NEXT:    ;;#ASMSTART
2380 ; GFX900-NEXT:    ; use s[8:9]
2381 ; GFX900-NEXT:    ;;#ASMEND
2382 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2384 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_1:
2385 ; GFX90A:       ; %bb.0:
2386 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2387 ; GFX90A-NEXT:    ;;#ASMSTART
2388 ; GFX90A-NEXT:    ; def s[8:10]
2389 ; GFX90A-NEXT:    ;;#ASMEND
2390 ; GFX90A-NEXT:    ;;#ASMSTART
2391 ; GFX90A-NEXT:    ; def s[4:6]
2392 ; GFX90A-NEXT:    ;;#ASMEND
2393 ; GFX90A-NEXT:    s_mov_b32 s8, s6
2394 ; GFX90A-NEXT:    ;;#ASMSTART
2395 ; GFX90A-NEXT:    ; use s[8:9]
2396 ; GFX90A-NEXT:    ;;#ASMEND
2397 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2399 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_1:
2400 ; GFX940:       ; %bb.0:
2401 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2402 ; GFX940-NEXT:    ;;#ASMSTART
2403 ; GFX940-NEXT:    ; def s[8:10]
2404 ; GFX940-NEXT:    ;;#ASMEND
2405 ; GFX940-NEXT:    ;;#ASMSTART
2406 ; GFX940-NEXT:    ; def s[0:2]
2407 ; GFX940-NEXT:    ;;#ASMEND
2408 ; GFX940-NEXT:    s_mov_b32 s8, s2
2409 ; GFX940-NEXT:    ;;#ASMSTART
2410 ; GFX940-NEXT:    ; use s[8:9]
2411 ; GFX940-NEXT:    ;;#ASMEND
2412 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2413   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2414   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2415   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 1>
2416   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2417   ret void
2420 define void @s_shuffle_v2i32_v3i32__5_2() {
2421 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_2:
2422 ; GFX900:       ; %bb.0:
2423 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2424 ; GFX900-NEXT:    ;;#ASMSTART
2425 ; GFX900-NEXT:    ; def s[8:10]
2426 ; GFX900-NEXT:    ;;#ASMEND
2427 ; GFX900-NEXT:    ;;#ASMSTART
2428 ; GFX900-NEXT:    ; def s[4:6]
2429 ; GFX900-NEXT:    ;;#ASMEND
2430 ; GFX900-NEXT:    s_mov_b32 s8, s10
2431 ; GFX900-NEXT:    s_mov_b32 s9, s6
2432 ; GFX900-NEXT:    ;;#ASMSTART
2433 ; GFX900-NEXT:    ; use s[8:9]
2434 ; GFX900-NEXT:    ;;#ASMEND
2435 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2437 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_2:
2438 ; GFX90A:       ; %bb.0:
2439 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2440 ; GFX90A-NEXT:    ;;#ASMSTART
2441 ; GFX90A-NEXT:    ; def s[8:10]
2442 ; GFX90A-NEXT:    ;;#ASMEND
2443 ; GFX90A-NEXT:    ;;#ASMSTART
2444 ; GFX90A-NEXT:    ; def s[4:6]
2445 ; GFX90A-NEXT:    ;;#ASMEND
2446 ; GFX90A-NEXT:    s_mov_b32 s8, s10
2447 ; GFX90A-NEXT:    s_mov_b32 s9, s6
2448 ; GFX90A-NEXT:    ;;#ASMSTART
2449 ; GFX90A-NEXT:    ; use s[8:9]
2450 ; GFX90A-NEXT:    ;;#ASMEND
2451 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2453 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_2:
2454 ; GFX940:       ; %bb.0:
2455 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2456 ; GFX940-NEXT:    ;;#ASMSTART
2457 ; GFX940-NEXT:    ; def s[0:2]
2458 ; GFX940-NEXT:    ;;#ASMEND
2459 ; GFX940-NEXT:    ;;#ASMSTART
2460 ; GFX940-NEXT:    ; def s[4:6]
2461 ; GFX940-NEXT:    ;;#ASMEND
2462 ; GFX940-NEXT:    s_mov_b32 s8, s6
2463 ; GFX940-NEXT:    s_mov_b32 s9, s2
2464 ; GFX940-NEXT:    ;;#ASMSTART
2465 ; GFX940-NEXT:    ; use s[8:9]
2466 ; GFX940-NEXT:    ;;#ASMEND
2467 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2468   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2469   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2470   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 2>
2471   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2472   ret void
2475 define void @s_shuffle_v2i32_v3i32__5_3() {
2476 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_3:
2477 ; GFX900:       ; %bb.0:
2478 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2479 ; GFX900-NEXT:    ;;#ASMSTART
2480 ; GFX900-NEXT:    ; def s[4:6]
2481 ; GFX900-NEXT:    ;;#ASMEND
2482 ; GFX900-NEXT:    s_mov_b32 s8, s6
2483 ; GFX900-NEXT:    s_mov_b32 s9, s4
2484 ; GFX900-NEXT:    ;;#ASMSTART
2485 ; GFX900-NEXT:    ; use s[8:9]
2486 ; GFX900-NEXT:    ;;#ASMEND
2487 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2489 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_3:
2490 ; GFX90A:       ; %bb.0:
2491 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2492 ; GFX90A-NEXT:    ;;#ASMSTART
2493 ; GFX90A-NEXT:    ; def s[4:6]
2494 ; GFX90A-NEXT:    ;;#ASMEND
2495 ; GFX90A-NEXT:    s_mov_b32 s8, s6
2496 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2497 ; GFX90A-NEXT:    ;;#ASMSTART
2498 ; GFX90A-NEXT:    ; use s[8:9]
2499 ; GFX90A-NEXT:    ;;#ASMEND
2500 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2502 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_3:
2503 ; GFX940:       ; %bb.0:
2504 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2505 ; GFX940-NEXT:    ;;#ASMSTART
2506 ; GFX940-NEXT:    ; def s[0:2]
2507 ; GFX940-NEXT:    ;;#ASMEND
2508 ; GFX940-NEXT:    s_mov_b32 s8, s2
2509 ; GFX940-NEXT:    s_mov_b32 s9, s0
2510 ; GFX940-NEXT:    ;;#ASMSTART
2511 ; GFX940-NEXT:    ; use s[8:9]
2512 ; GFX940-NEXT:    ;;#ASMEND
2513 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2514   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2515   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2516   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 3>
2517   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2518   ret void
2521 define void @s_shuffle_v2i32_v3i32__5_4() {
2522 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__5_4:
2523 ; GFX9:       ; %bb.0:
2524 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2525 ; GFX9-NEXT:    ;;#ASMSTART
2526 ; GFX9-NEXT:    ; def s[8:10]
2527 ; GFX9-NEXT:    ;;#ASMEND
2528 ; GFX9-NEXT:    s_mov_b32 s8, s10
2529 ; GFX9-NEXT:    ;;#ASMSTART
2530 ; GFX9-NEXT:    ; use s[8:9]
2531 ; GFX9-NEXT:    ;;#ASMEND
2532 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2533   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2534   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2535   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 4>
2536   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2537   ret void
2540 define void @s_shuffle_v2i32_v3i32__5_5() {
2541 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_5:
2542 ; GFX900:       ; %bb.0:
2543 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2544 ; GFX900-NEXT:    ;;#ASMSTART
2545 ; GFX900-NEXT:    ; def s[4:6]
2546 ; GFX900-NEXT:    ;;#ASMEND
2547 ; GFX900-NEXT:    s_mov_b32 s8, s6
2548 ; GFX900-NEXT:    s_mov_b32 s9, s6
2549 ; GFX900-NEXT:    ;;#ASMSTART
2550 ; GFX900-NEXT:    ; use s[8:9]
2551 ; GFX900-NEXT:    ;;#ASMEND
2552 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2554 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_5:
2555 ; GFX90A:       ; %bb.0:
2556 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2557 ; GFX90A-NEXT:    ;;#ASMSTART
2558 ; GFX90A-NEXT:    ; def s[4:6]
2559 ; GFX90A-NEXT:    ;;#ASMEND
2560 ; GFX90A-NEXT:    s_mov_b32 s8, s6
2561 ; GFX90A-NEXT:    s_mov_b32 s9, s6
2562 ; GFX90A-NEXT:    ;;#ASMSTART
2563 ; GFX90A-NEXT:    ; use s[8:9]
2564 ; GFX90A-NEXT:    ;;#ASMEND
2565 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2567 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_5:
2568 ; GFX940:       ; %bb.0:
2569 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2570 ; GFX940-NEXT:    ;;#ASMSTART
2571 ; GFX940-NEXT:    ; def s[0:2]
2572 ; GFX940-NEXT:    ;;#ASMEND
2573 ; GFX940-NEXT:    s_mov_b32 s8, s2
2574 ; GFX940-NEXT:    s_mov_b32 s9, s2
2575 ; GFX940-NEXT:    ;;#ASMSTART
2576 ; GFX940-NEXT:    ; use s[8:9]
2577 ; GFX940-NEXT:    ;;#ASMEND
2578 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2579   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2580   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2581   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 5>
2582   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2583   ret void
2586 define void @s_shuffle_v2i32_v3i32__u_0() {
2587 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_0:
2588 ; GFX900:       ; %bb.0:
2589 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2590 ; GFX900-NEXT:    ;;#ASMSTART
2591 ; GFX900-NEXT:    ; def s[4:6]
2592 ; GFX900-NEXT:    ;;#ASMEND
2593 ; GFX900-NEXT:    s_mov_b32 s9, s4
2594 ; GFX900-NEXT:    ;;#ASMSTART
2595 ; GFX900-NEXT:    ; use s[8:9]
2596 ; GFX900-NEXT:    ;;#ASMEND
2597 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2599 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_0:
2600 ; GFX90A:       ; %bb.0:
2601 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2602 ; GFX90A-NEXT:    ;;#ASMSTART
2603 ; GFX90A-NEXT:    ; def s[4:6]
2604 ; GFX90A-NEXT:    ;;#ASMEND
2605 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2606 ; GFX90A-NEXT:    ;;#ASMSTART
2607 ; GFX90A-NEXT:    ; use s[8:9]
2608 ; GFX90A-NEXT:    ;;#ASMEND
2609 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2611 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_0:
2612 ; GFX940:       ; %bb.0:
2613 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2614 ; GFX940-NEXT:    ;;#ASMSTART
2615 ; GFX940-NEXT:    ; def s[0:2]
2616 ; GFX940-NEXT:    ;;#ASMEND
2617 ; GFX940-NEXT:    s_mov_b32 s9, s0
2618 ; GFX940-NEXT:    ;;#ASMSTART
2619 ; GFX940-NEXT:    ; use s[8:9]
2620 ; GFX940-NEXT:    ;;#ASMEND
2621 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2622   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2623   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 0>
2624   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2625   ret void
2628 define void @s_shuffle_v2i32_v3i32__0_0() {
2629 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__0_0:
2630 ; GFX9:       ; %bb.0:
2631 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2632 ; GFX9-NEXT:    ;;#ASMSTART
2633 ; GFX9-NEXT:    ; def s[8:10]
2634 ; GFX9-NEXT:    ;;#ASMEND
2635 ; GFX9-NEXT:    s_mov_b32 s9, s8
2636 ; GFX9-NEXT:    ;;#ASMSTART
2637 ; GFX9-NEXT:    ; use s[8:9]
2638 ; GFX9-NEXT:    ;;#ASMEND
2639 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2640   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2641   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> zeroinitializer
2642   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2643   ret void
2646 define void @s_shuffle_v2i32_v3i32__1_0() {
2647 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_0:
2648 ; GFX900:       ; %bb.0:
2649 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2650 ; GFX900-NEXT:    ;;#ASMSTART
2651 ; GFX900-NEXT:    ; def s[4:6]
2652 ; GFX900-NEXT:    ;;#ASMEND
2653 ; GFX900-NEXT:    s_mov_b32 s8, s5
2654 ; GFX900-NEXT:    s_mov_b32 s9, s4
2655 ; GFX900-NEXT:    ;;#ASMSTART
2656 ; GFX900-NEXT:    ; use s[8:9]
2657 ; GFX900-NEXT:    ;;#ASMEND
2658 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2660 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_0:
2661 ; GFX90A:       ; %bb.0:
2662 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2663 ; GFX90A-NEXT:    ;;#ASMSTART
2664 ; GFX90A-NEXT:    ; def s[4:6]
2665 ; GFX90A-NEXT:    ;;#ASMEND
2666 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2667 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2668 ; GFX90A-NEXT:    ;;#ASMSTART
2669 ; GFX90A-NEXT:    ; use s[8:9]
2670 ; GFX90A-NEXT:    ;;#ASMEND
2671 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2673 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_0:
2674 ; GFX940:       ; %bb.0:
2675 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2676 ; GFX940-NEXT:    ;;#ASMSTART
2677 ; GFX940-NEXT:    ; def s[0:2]
2678 ; GFX940-NEXT:    ;;#ASMEND
2679 ; GFX940-NEXT:    s_mov_b32 s8, s1
2680 ; GFX940-NEXT:    s_mov_b32 s9, s0
2681 ; GFX940-NEXT:    ;;#ASMSTART
2682 ; GFX940-NEXT:    ; use s[8:9]
2683 ; GFX940-NEXT:    ;;#ASMEND
2684 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2685   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2686   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 0>
2687   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2688   ret void
2691 define void @s_shuffle_v2i32_v3i32__2_0() {
2692 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_0:
2693 ; GFX900:       ; %bb.0:
2694 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2695 ; GFX900-NEXT:    ;;#ASMSTART
2696 ; GFX900-NEXT:    ; def s[4:6]
2697 ; GFX900-NEXT:    ;;#ASMEND
2698 ; GFX900-NEXT:    s_mov_b32 s8, s6
2699 ; GFX900-NEXT:    s_mov_b32 s9, s4
2700 ; GFX900-NEXT:    ;;#ASMSTART
2701 ; GFX900-NEXT:    ; use s[8:9]
2702 ; GFX900-NEXT:    ;;#ASMEND
2703 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2705 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_0:
2706 ; GFX90A:       ; %bb.0:
2707 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2708 ; GFX90A-NEXT:    ;;#ASMSTART
2709 ; GFX90A-NEXT:    ; def s[4:6]
2710 ; GFX90A-NEXT:    ;;#ASMEND
2711 ; GFX90A-NEXT:    s_mov_b32 s8, s6
2712 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2713 ; GFX90A-NEXT:    ;;#ASMSTART
2714 ; GFX90A-NEXT:    ; use s[8:9]
2715 ; GFX90A-NEXT:    ;;#ASMEND
2716 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2718 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_0:
2719 ; GFX940:       ; %bb.0:
2720 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2721 ; GFX940-NEXT:    ;;#ASMSTART
2722 ; GFX940-NEXT:    ; def s[0:2]
2723 ; GFX940-NEXT:    ;;#ASMEND
2724 ; GFX940-NEXT:    s_mov_b32 s8, s2
2725 ; GFX940-NEXT:    s_mov_b32 s9, s0
2726 ; GFX940-NEXT:    ;;#ASMSTART
2727 ; GFX940-NEXT:    ; use s[8:9]
2728 ; GFX940-NEXT:    ;;#ASMEND
2729 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2730   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2731   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 0>
2732   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2733   ret void
2736 define void @s_shuffle_v2i32_v3i32__3_0() {
2737 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_0:
2738 ; GFX900:       ; %bb.0:
2739 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2740 ; GFX900-NEXT:    ;;#ASMSTART
2741 ; GFX900-NEXT:    ; def s[4:6]
2742 ; GFX900-NEXT:    ;;#ASMEND
2743 ; GFX900-NEXT:    s_mov_b32 s9, s4
2744 ; GFX900-NEXT:    ;;#ASMSTART
2745 ; GFX900-NEXT:    ; use s[8:9]
2746 ; GFX900-NEXT:    ;;#ASMEND
2747 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2749 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_0:
2750 ; GFX90A:       ; %bb.0:
2751 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2752 ; GFX90A-NEXT:    ;;#ASMSTART
2753 ; GFX90A-NEXT:    ; def s[4:6]
2754 ; GFX90A-NEXT:    ;;#ASMEND
2755 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2756 ; GFX90A-NEXT:    ;;#ASMSTART
2757 ; GFX90A-NEXT:    ; use s[8:9]
2758 ; GFX90A-NEXT:    ;;#ASMEND
2759 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2761 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_0:
2762 ; GFX940:       ; %bb.0:
2763 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2764 ; GFX940-NEXT:    ;;#ASMSTART
2765 ; GFX940-NEXT:    ; def s[0:2]
2766 ; GFX940-NEXT:    ;;#ASMEND
2767 ; GFX940-NEXT:    s_mov_b32 s9, s0
2768 ; GFX940-NEXT:    ;;#ASMSTART
2769 ; GFX940-NEXT:    ; use s[8:9]
2770 ; GFX940-NEXT:    ;;#ASMEND
2771 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2772   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2773   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 0>
2774   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2775   ret void
2778 define void @s_shuffle_v2i32_v3i32__4_0() {
2779 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_0:
2780 ; GFX900:       ; %bb.0:
2781 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2782 ; GFX900-NEXT:    ;;#ASMSTART
2783 ; GFX900-NEXT:    ; def s[8:10]
2784 ; GFX900-NEXT:    ;;#ASMEND
2785 ; GFX900-NEXT:    ;;#ASMSTART
2786 ; GFX900-NEXT:    ; def s[4:6]
2787 ; GFX900-NEXT:    ;;#ASMEND
2788 ; GFX900-NEXT:    s_mov_b32 s8, s9
2789 ; GFX900-NEXT:    s_mov_b32 s9, s4
2790 ; GFX900-NEXT:    ;;#ASMSTART
2791 ; GFX900-NEXT:    ; use s[8:9]
2792 ; GFX900-NEXT:    ;;#ASMEND
2793 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2795 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_0:
2796 ; GFX90A:       ; %bb.0:
2797 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2798 ; GFX90A-NEXT:    ;;#ASMSTART
2799 ; GFX90A-NEXT:    ; def s[8:10]
2800 ; GFX90A-NEXT:    ;;#ASMEND
2801 ; GFX90A-NEXT:    ;;#ASMSTART
2802 ; GFX90A-NEXT:    ; def s[4:6]
2803 ; GFX90A-NEXT:    ;;#ASMEND
2804 ; GFX90A-NEXT:    s_mov_b32 s8, s9
2805 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2806 ; GFX90A-NEXT:    ;;#ASMSTART
2807 ; GFX90A-NEXT:    ; use s[8:9]
2808 ; GFX90A-NEXT:    ;;#ASMEND
2809 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2811 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_0:
2812 ; GFX940:       ; %bb.0:
2813 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2814 ; GFX940-NEXT:    ;;#ASMSTART
2815 ; GFX940-NEXT:    ; def s[0:2]
2816 ; GFX940-NEXT:    ;;#ASMEND
2817 ; GFX940-NEXT:    ;;#ASMSTART
2818 ; GFX940-NEXT:    ; def s[4:6]
2819 ; GFX940-NEXT:    ;;#ASMEND
2820 ; GFX940-NEXT:    s_mov_b32 s8, s5
2821 ; GFX940-NEXT:    s_mov_b32 s9, s0
2822 ; GFX940-NEXT:    ;;#ASMSTART
2823 ; GFX940-NEXT:    ; use s[8:9]
2824 ; GFX940-NEXT:    ;;#ASMEND
2825 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2826   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2827   %vec1 = call <3 x i32> asm "; def $0", "=s"()
2828   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 0>
2829   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2830   ret void
2833 define void @s_shuffle_v2i32_v3i32__u_1() {
2834 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_1:
2835 ; GFX900:       ; %bb.0:
2836 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2837 ; GFX900-NEXT:    ;;#ASMSTART
2838 ; GFX900-NEXT:    ; def s[8:10]
2839 ; GFX900-NEXT:    ;;#ASMEND
2840 ; GFX900-NEXT:    ;;#ASMSTART
2841 ; GFX900-NEXT:    ; use s[8:9]
2842 ; GFX900-NEXT:    ;;#ASMEND
2843 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2845 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_1:
2846 ; GFX90A:       ; %bb.0:
2847 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2848 ; GFX90A-NEXT:    ;;#ASMSTART
2849 ; GFX90A-NEXT:    ; def s[8:10]
2850 ; GFX90A-NEXT:    ;;#ASMEND
2851 ; GFX90A-NEXT:    ;;#ASMSTART
2852 ; GFX90A-NEXT:    ; use s[8:9]
2853 ; GFX90A-NEXT:    ;;#ASMEND
2854 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2856 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_1:
2857 ; GFX940:       ; %bb.0:
2858 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2859 ; GFX940-NEXT:    ;;#ASMSTART
2860 ; GFX940-NEXT:    ; def s[8:10]
2861 ; GFX940-NEXT:    ;;#ASMEND
2862 ; GFX940-NEXT:    s_nop 0
2863 ; GFX940-NEXT:    ;;#ASMSTART
2864 ; GFX940-NEXT:    ; use s[8:9]
2865 ; GFX940-NEXT:    ;;#ASMEND
2866 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2867   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2868   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 1>
2869   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2870   ret void
2873 define void @s_shuffle_v2i32_v3i32__0_1() {
2874 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_1:
2875 ; GFX900:       ; %bb.0:
2876 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2877 ; GFX900-NEXT:    ;;#ASMSTART
2878 ; GFX900-NEXT:    ; def s[8:10]
2879 ; GFX900-NEXT:    ;;#ASMEND
2880 ; GFX900-NEXT:    ;;#ASMSTART
2881 ; GFX900-NEXT:    ; use s[8:9]
2882 ; GFX900-NEXT:    ;;#ASMEND
2883 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2885 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_1:
2886 ; GFX90A:       ; %bb.0:
2887 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2888 ; GFX90A-NEXT:    ;;#ASMSTART
2889 ; GFX90A-NEXT:    ; def s[8:10]
2890 ; GFX90A-NEXT:    ;;#ASMEND
2891 ; GFX90A-NEXT:    ;;#ASMSTART
2892 ; GFX90A-NEXT:    ; use s[8:9]
2893 ; GFX90A-NEXT:    ;;#ASMEND
2894 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2896 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_1:
2897 ; GFX940:       ; %bb.0:
2898 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2899 ; GFX940-NEXT:    ;;#ASMSTART
2900 ; GFX940-NEXT:    ; def s[8:10]
2901 ; GFX940-NEXT:    ;;#ASMEND
2902 ; GFX940-NEXT:    s_nop 0
2903 ; GFX940-NEXT:    ;;#ASMSTART
2904 ; GFX940-NEXT:    ; use s[8:9]
2905 ; GFX940-NEXT:    ;;#ASMEND
2906 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2907   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2908   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 1>
2909   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2910   ret void
2913 define void @s_shuffle_v2i32_v3i32__1_1() {
2914 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__1_1:
2915 ; GFX9:       ; %bb.0:
2916 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2917 ; GFX9-NEXT:    ;;#ASMSTART
2918 ; GFX9-NEXT:    ; def s[8:10]
2919 ; GFX9-NEXT:    ;;#ASMEND
2920 ; GFX9-NEXT:    s_mov_b32 s8, s9
2921 ; GFX9-NEXT:    ;;#ASMSTART
2922 ; GFX9-NEXT:    ; use s[8:9]
2923 ; GFX9-NEXT:    ;;#ASMEND
2924 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2925   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2926   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 1>
2927   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2928   ret void
2931 define void @s_shuffle_v2i32_v3i32__2_1() {
2932 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__2_1:
2933 ; GFX9:       ; %bb.0:
2934 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2935 ; GFX9-NEXT:    ;;#ASMSTART
2936 ; GFX9-NEXT:    ; def s[8:10]
2937 ; GFX9-NEXT:    ;;#ASMEND
2938 ; GFX9-NEXT:    s_mov_b32 s8, s10
2939 ; GFX9-NEXT:    ;;#ASMSTART
2940 ; GFX9-NEXT:    ; use s[8:9]
2941 ; GFX9-NEXT:    ;;#ASMEND
2942 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2943   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2944   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 1>
2945   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2946   ret void
2949 define void @s_shuffle_v2i32_v3i32__3_1() {
2950 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_1:
2951 ; GFX900:       ; %bb.0:
2952 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2953 ; GFX900-NEXT:    ;;#ASMSTART
2954 ; GFX900-NEXT:    ; def s[8:10]
2955 ; GFX900-NEXT:    ;;#ASMEND
2956 ; GFX900-NEXT:    ;;#ASMSTART
2957 ; GFX900-NEXT:    ; use s[8:9]
2958 ; GFX900-NEXT:    ;;#ASMEND
2959 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2961 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_1:
2962 ; GFX90A:       ; %bb.0:
2963 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2964 ; GFX90A-NEXT:    ;;#ASMSTART
2965 ; GFX90A-NEXT:    ; def s[8:10]
2966 ; GFX90A-NEXT:    ;;#ASMEND
2967 ; GFX90A-NEXT:    ;;#ASMSTART
2968 ; GFX90A-NEXT:    ; use s[8:9]
2969 ; GFX90A-NEXT:    ;;#ASMEND
2970 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2972 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_1:
2973 ; GFX940:       ; %bb.0:
2974 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2975 ; GFX940-NEXT:    ;;#ASMSTART
2976 ; GFX940-NEXT:    ; def s[8:10]
2977 ; GFX940-NEXT:    ;;#ASMEND
2978 ; GFX940-NEXT:    s_nop 0
2979 ; GFX940-NEXT:    ;;#ASMSTART
2980 ; GFX940-NEXT:    ; use s[8:9]
2981 ; GFX940-NEXT:    ;;#ASMEND
2982 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2983   %vec0 = call <3 x i32> asm "; def $0", "=s"()
2984   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 1>
2985   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
2986   ret void
2989 define void @s_shuffle_v2i32_v3i32__4_1() {
2990 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_1:
2991 ; GFX900:       ; %bb.0:
2992 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2993 ; GFX900-NEXT:    ;;#ASMSTART
2994 ; GFX900-NEXT:    ; def s[8:10]
2995 ; GFX900-NEXT:    ;;#ASMEND
2996 ; GFX900-NEXT:    ;;#ASMSTART
2997 ; GFX900-NEXT:    ; def s[4:6]
2998 ; GFX900-NEXT:    ;;#ASMEND
2999 ; GFX900-NEXT:    s_mov_b32 s8, s5
3000 ; GFX900-NEXT:    ;;#ASMSTART
3001 ; GFX900-NEXT:    ; use s[8:9]
3002 ; GFX900-NEXT:    ;;#ASMEND
3003 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3005 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_1:
3006 ; GFX90A:       ; %bb.0:
3007 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3008 ; GFX90A-NEXT:    ;;#ASMSTART
3009 ; GFX90A-NEXT:    ; def s[8:10]
3010 ; GFX90A-NEXT:    ;;#ASMEND
3011 ; GFX90A-NEXT:    ;;#ASMSTART
3012 ; GFX90A-NEXT:    ; def s[4:6]
3013 ; GFX90A-NEXT:    ;;#ASMEND
3014 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3015 ; GFX90A-NEXT:    ;;#ASMSTART
3016 ; GFX90A-NEXT:    ; use s[8:9]
3017 ; GFX90A-NEXT:    ;;#ASMEND
3018 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3020 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_1:
3021 ; GFX940:       ; %bb.0:
3022 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3023 ; GFX940-NEXT:    ;;#ASMSTART
3024 ; GFX940-NEXT:    ; def s[8:10]
3025 ; GFX940-NEXT:    ;;#ASMEND
3026 ; GFX940-NEXT:    ;;#ASMSTART
3027 ; GFX940-NEXT:    ; def s[0:2]
3028 ; GFX940-NEXT:    ;;#ASMEND
3029 ; GFX940-NEXT:    s_mov_b32 s8, s1
3030 ; GFX940-NEXT:    ;;#ASMSTART
3031 ; GFX940-NEXT:    ; use s[8:9]
3032 ; GFX940-NEXT:    ;;#ASMEND
3033 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3034   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3035   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3036   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 1>
3037   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3038   ret void
3041 define void @s_shuffle_v2i32_v3i32__u_2() {
3042 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_2:
3043 ; GFX900:       ; %bb.0:
3044 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3045 ; GFX900-NEXT:    ;;#ASMSTART
3046 ; GFX900-NEXT:    ; def s[4:6]
3047 ; GFX900-NEXT:    ;;#ASMEND
3048 ; GFX900-NEXT:    s_mov_b32 s9, s6
3049 ; GFX900-NEXT:    ;;#ASMSTART
3050 ; GFX900-NEXT:    ; use s[8:9]
3051 ; GFX900-NEXT:    ;;#ASMEND
3052 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3054 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_2:
3055 ; GFX90A:       ; %bb.0:
3056 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3057 ; GFX90A-NEXT:    ;;#ASMSTART
3058 ; GFX90A-NEXT:    ; def s[4:6]
3059 ; GFX90A-NEXT:    ;;#ASMEND
3060 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3061 ; GFX90A-NEXT:    ;;#ASMSTART
3062 ; GFX90A-NEXT:    ; use s[8:9]
3063 ; GFX90A-NEXT:    ;;#ASMEND
3064 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3066 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_2:
3067 ; GFX940:       ; %bb.0:
3068 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3069 ; GFX940-NEXT:    ;;#ASMSTART
3070 ; GFX940-NEXT:    ; def s[0:2]
3071 ; GFX940-NEXT:    ;;#ASMEND
3072 ; GFX940-NEXT:    s_mov_b32 s9, s2
3073 ; GFX940-NEXT:    ;;#ASMSTART
3074 ; GFX940-NEXT:    ; use s[8:9]
3075 ; GFX940-NEXT:    ;;#ASMEND
3076 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3077   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3078   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 2>
3079   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3080   ret void
3083 define void @s_shuffle_v2i32_v3i32__0_2() {
3084 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__0_2:
3085 ; GFX9:       ; %bb.0:
3086 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3087 ; GFX9-NEXT:    ;;#ASMSTART
3088 ; GFX9-NEXT:    ; def s[8:10]
3089 ; GFX9-NEXT:    ;;#ASMEND
3090 ; GFX9-NEXT:    s_mov_b32 s9, s10
3091 ; GFX9-NEXT:    ;;#ASMSTART
3092 ; GFX9-NEXT:    ; use s[8:9]
3093 ; GFX9-NEXT:    ;;#ASMEND
3094 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3095   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3096   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 2>
3097   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3098   ret void
3101 define void @s_shuffle_v2i32_v3i32__1_2() {
3102 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_2:
3103 ; GFX900:       ; %bb.0:
3104 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3105 ; GFX900-NEXT:    ;;#ASMSTART
3106 ; GFX900-NEXT:    ; def s[4:6]
3107 ; GFX900-NEXT:    ;;#ASMEND
3108 ; GFX900-NEXT:    s_mov_b32 s8, s5
3109 ; GFX900-NEXT:    s_mov_b32 s9, s6
3110 ; GFX900-NEXT:    ;;#ASMSTART
3111 ; GFX900-NEXT:    ; use s[8:9]
3112 ; GFX900-NEXT:    ;;#ASMEND
3113 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3115 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_2:
3116 ; GFX90A:       ; %bb.0:
3117 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3118 ; GFX90A-NEXT:    ;;#ASMSTART
3119 ; GFX90A-NEXT:    ; def s[4:6]
3120 ; GFX90A-NEXT:    ;;#ASMEND
3121 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3122 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3123 ; GFX90A-NEXT:    ;;#ASMSTART
3124 ; GFX90A-NEXT:    ; use s[8:9]
3125 ; GFX90A-NEXT:    ;;#ASMEND
3126 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3128 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_2:
3129 ; GFX940:       ; %bb.0:
3130 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3131 ; GFX940-NEXT:    ;;#ASMSTART
3132 ; GFX940-NEXT:    ; def s[0:2]
3133 ; GFX940-NEXT:    ;;#ASMEND
3134 ; GFX940-NEXT:    s_mov_b32 s8, s1
3135 ; GFX940-NEXT:    s_mov_b32 s9, s2
3136 ; GFX940-NEXT:    ;;#ASMSTART
3137 ; GFX940-NEXT:    ; use s[8:9]
3138 ; GFX940-NEXT:    ;;#ASMEND
3139 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3140   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3141   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 2>
3142   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3143   ret void
3146 define void @s_shuffle_v2i32_v3i32__2_2() {
3147 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_2:
3148 ; GFX900:       ; %bb.0:
3149 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3150 ; GFX900-NEXT:    ;;#ASMSTART
3151 ; GFX900-NEXT:    ; def s[4:6]
3152 ; GFX900-NEXT:    ;;#ASMEND
3153 ; GFX900-NEXT:    s_mov_b32 s8, s6
3154 ; GFX900-NEXT:    s_mov_b32 s9, s6
3155 ; GFX900-NEXT:    ;;#ASMSTART
3156 ; GFX900-NEXT:    ; use s[8:9]
3157 ; GFX900-NEXT:    ;;#ASMEND
3158 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3160 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_2:
3161 ; GFX90A:       ; %bb.0:
3162 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3163 ; GFX90A-NEXT:    ;;#ASMSTART
3164 ; GFX90A-NEXT:    ; def s[4:6]
3165 ; GFX90A-NEXT:    ;;#ASMEND
3166 ; GFX90A-NEXT:    s_mov_b32 s8, s6
3167 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3168 ; GFX90A-NEXT:    ;;#ASMSTART
3169 ; GFX90A-NEXT:    ; use s[8:9]
3170 ; GFX90A-NEXT:    ;;#ASMEND
3171 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3173 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_2:
3174 ; GFX940:       ; %bb.0:
3175 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3176 ; GFX940-NEXT:    ;;#ASMSTART
3177 ; GFX940-NEXT:    ; def s[0:2]
3178 ; GFX940-NEXT:    ;;#ASMEND
3179 ; GFX940-NEXT:    s_mov_b32 s8, s2
3180 ; GFX940-NEXT:    s_mov_b32 s9, s2
3181 ; GFX940-NEXT:    ;;#ASMSTART
3182 ; GFX940-NEXT:    ; use s[8:9]
3183 ; GFX940-NEXT:    ;;#ASMEND
3184 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3185   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3186   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 2>
3187   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3188   ret void
3191 define void @s_shuffle_v2i32_v3i32__3_2() {
3192 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_2:
3193 ; GFX900:       ; %bb.0:
3194 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3195 ; GFX900-NEXT:    ;;#ASMSTART
3196 ; GFX900-NEXT:    ; def s[4:6]
3197 ; GFX900-NEXT:    ;;#ASMEND
3198 ; GFX900-NEXT:    s_mov_b32 s9, s6
3199 ; GFX900-NEXT:    ;;#ASMSTART
3200 ; GFX900-NEXT:    ; use s[8:9]
3201 ; GFX900-NEXT:    ;;#ASMEND
3202 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3204 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_2:
3205 ; GFX90A:       ; %bb.0:
3206 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3207 ; GFX90A-NEXT:    ;;#ASMSTART
3208 ; GFX90A-NEXT:    ; def s[4:6]
3209 ; GFX90A-NEXT:    ;;#ASMEND
3210 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3211 ; GFX90A-NEXT:    ;;#ASMSTART
3212 ; GFX90A-NEXT:    ; use s[8:9]
3213 ; GFX90A-NEXT:    ;;#ASMEND
3214 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3216 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_2:
3217 ; GFX940:       ; %bb.0:
3218 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3219 ; GFX940-NEXT:    ;;#ASMSTART
3220 ; GFX940-NEXT:    ; def s[0:2]
3221 ; GFX940-NEXT:    ;;#ASMEND
3222 ; GFX940-NEXT:    s_mov_b32 s9, s2
3223 ; GFX940-NEXT:    ;;#ASMSTART
3224 ; GFX940-NEXT:    ; use s[8:9]
3225 ; GFX940-NEXT:    ;;#ASMEND
3226 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3227   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3228   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 2>
3229   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3230   ret void
3233 define void @s_shuffle_v2i32_v3i32__4_2() {
3234 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_2:
3235 ; GFX900:       ; %bb.0:
3236 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3237 ; GFX900-NEXT:    ;;#ASMSTART
3238 ; GFX900-NEXT:    ; def s[8:10]
3239 ; GFX900-NEXT:    ;;#ASMEND
3240 ; GFX900-NEXT:    ;;#ASMSTART
3241 ; GFX900-NEXT:    ; def s[4:6]
3242 ; GFX900-NEXT:    ;;#ASMEND
3243 ; GFX900-NEXT:    s_mov_b32 s8, s9
3244 ; GFX900-NEXT:    s_mov_b32 s9, s6
3245 ; GFX900-NEXT:    ;;#ASMSTART
3246 ; GFX900-NEXT:    ; use s[8:9]
3247 ; GFX900-NEXT:    ;;#ASMEND
3248 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3250 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_2:
3251 ; GFX90A:       ; %bb.0:
3252 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3253 ; GFX90A-NEXT:    ;;#ASMSTART
3254 ; GFX90A-NEXT:    ; def s[8:10]
3255 ; GFX90A-NEXT:    ;;#ASMEND
3256 ; GFX90A-NEXT:    ;;#ASMSTART
3257 ; GFX90A-NEXT:    ; def s[4:6]
3258 ; GFX90A-NEXT:    ;;#ASMEND
3259 ; GFX90A-NEXT:    s_mov_b32 s8, s9
3260 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3261 ; GFX90A-NEXT:    ;;#ASMSTART
3262 ; GFX90A-NEXT:    ; use s[8:9]
3263 ; GFX90A-NEXT:    ;;#ASMEND
3264 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3266 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_2:
3267 ; GFX940:       ; %bb.0:
3268 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3269 ; GFX940-NEXT:    ;;#ASMSTART
3270 ; GFX940-NEXT:    ; def s[0:2]
3271 ; GFX940-NEXT:    ;;#ASMEND
3272 ; GFX940-NEXT:    ;;#ASMSTART
3273 ; GFX940-NEXT:    ; def s[4:6]
3274 ; GFX940-NEXT:    ;;#ASMEND
3275 ; GFX940-NEXT:    s_mov_b32 s8, s5
3276 ; GFX940-NEXT:    s_mov_b32 s9, s2
3277 ; GFX940-NEXT:    ;;#ASMSTART
3278 ; GFX940-NEXT:    ; use s[8:9]
3279 ; GFX940-NEXT:    ;;#ASMEND
3280 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3281   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3282   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3283   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 2>
3284   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3285   ret void
3288 define void @s_shuffle_v2i32_v3i32__u_3() {
3289 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__u_3:
3290 ; GFX9:       ; %bb.0:
3291 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3292 ; GFX9-NEXT:    ;;#ASMSTART
3293 ; GFX9-NEXT:    ; use s[8:9]
3294 ; GFX9-NEXT:    ;;#ASMEND
3295 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3296   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3297   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 3>
3298   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3299   ret void
3302 define void @s_shuffle_v2i32_v3i32__0_3() {
3303 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_3:
3304 ; GFX900:       ; %bb.0:
3305 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3306 ; GFX900-NEXT:    ;;#ASMSTART
3307 ; GFX900-NEXT:    ; def s[8:10]
3308 ; GFX900-NEXT:    ;;#ASMEND
3309 ; GFX900-NEXT:    ;;#ASMSTART
3310 ; GFX900-NEXT:    ; use s[8:9]
3311 ; GFX900-NEXT:    ;;#ASMEND
3312 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3314 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_3:
3315 ; GFX90A:       ; %bb.0:
3316 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3317 ; GFX90A-NEXT:    ;;#ASMSTART
3318 ; GFX90A-NEXT:    ; def s[8:10]
3319 ; GFX90A-NEXT:    ;;#ASMEND
3320 ; GFX90A-NEXT:    ;;#ASMSTART
3321 ; GFX90A-NEXT:    ; use s[8:9]
3322 ; GFX90A-NEXT:    ;;#ASMEND
3323 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3325 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_3:
3326 ; GFX940:       ; %bb.0:
3327 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3328 ; GFX940-NEXT:    ;;#ASMSTART
3329 ; GFX940-NEXT:    ; def s[8:10]
3330 ; GFX940-NEXT:    ;;#ASMEND
3331 ; GFX940-NEXT:    s_nop 0
3332 ; GFX940-NEXT:    ;;#ASMSTART
3333 ; GFX940-NEXT:    ; use s[8:9]
3334 ; GFX940-NEXT:    ;;#ASMEND
3335 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3336   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3337   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 3>
3338   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3339   ret void
3342 define void @s_shuffle_v2i32_v3i32__1_3() {
3343 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_3:
3344 ; GFX900:       ; %bb.0:
3345 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3346 ; GFX900-NEXT:    ;;#ASMSTART
3347 ; GFX900-NEXT:    ; def s[4:6]
3348 ; GFX900-NEXT:    ;;#ASMEND
3349 ; GFX900-NEXT:    s_mov_b32 s8, s5
3350 ; GFX900-NEXT:    ;;#ASMSTART
3351 ; GFX900-NEXT:    ; use s[8:9]
3352 ; GFX900-NEXT:    ;;#ASMEND
3353 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3355 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_3:
3356 ; GFX90A:       ; %bb.0:
3357 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3358 ; GFX90A-NEXT:    ;;#ASMSTART
3359 ; GFX90A-NEXT:    ; def s[4:6]
3360 ; GFX90A-NEXT:    ;;#ASMEND
3361 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3362 ; GFX90A-NEXT:    ;;#ASMSTART
3363 ; GFX90A-NEXT:    ; use s[8:9]
3364 ; GFX90A-NEXT:    ;;#ASMEND
3365 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3367 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_3:
3368 ; GFX940:       ; %bb.0:
3369 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3370 ; GFX940-NEXT:    ;;#ASMSTART
3371 ; GFX940-NEXT:    ; def s[0:2]
3372 ; GFX940-NEXT:    ;;#ASMEND
3373 ; GFX940-NEXT:    s_mov_b32 s8, s1
3374 ; GFX940-NEXT:    ;;#ASMSTART
3375 ; GFX940-NEXT:    ; use s[8:9]
3376 ; GFX940-NEXT:    ;;#ASMEND
3377 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3378   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3379   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 3>
3380   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3381   ret void
3384 define void @s_shuffle_v2i32_v3i32__2_3() {
3385 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_3:
3386 ; GFX900:       ; %bb.0:
3387 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3388 ; GFX900-NEXT:    ;;#ASMSTART
3389 ; GFX900-NEXT:    ; def s[4:6]
3390 ; GFX900-NEXT:    ;;#ASMEND
3391 ; GFX900-NEXT:    s_mov_b32 s8, s6
3392 ; GFX900-NEXT:    ;;#ASMSTART
3393 ; GFX900-NEXT:    ; use s[8:9]
3394 ; GFX900-NEXT:    ;;#ASMEND
3395 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3397 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_3:
3398 ; GFX90A:       ; %bb.0:
3399 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3400 ; GFX90A-NEXT:    ;;#ASMSTART
3401 ; GFX90A-NEXT:    ; def s[4:6]
3402 ; GFX90A-NEXT:    ;;#ASMEND
3403 ; GFX90A-NEXT:    s_mov_b32 s8, s6
3404 ; GFX90A-NEXT:    ;;#ASMSTART
3405 ; GFX90A-NEXT:    ; use s[8:9]
3406 ; GFX90A-NEXT:    ;;#ASMEND
3407 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3409 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_3:
3410 ; GFX940:       ; %bb.0:
3411 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3412 ; GFX940-NEXT:    ;;#ASMSTART
3413 ; GFX940-NEXT:    ; def s[0:2]
3414 ; GFX940-NEXT:    ;;#ASMEND
3415 ; GFX940-NEXT:    s_mov_b32 s8, s2
3416 ; GFX940-NEXT:    ;;#ASMSTART
3417 ; GFX940-NEXT:    ; use s[8:9]
3418 ; GFX940-NEXT:    ;;#ASMEND
3419 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3420   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3421   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 3>
3422   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3423   ret void
3426 define void @s_shuffle_v2i32_v3i32__3_3() {
3427 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_3:
3428 ; GFX9:       ; %bb.0:
3429 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3430 ; GFX9-NEXT:    ;;#ASMSTART
3431 ; GFX9-NEXT:    ; use s[8:9]
3432 ; GFX9-NEXT:    ;;#ASMEND
3433 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3434   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3435   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 3>
3436   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3437   ret void
3440 define void @s_shuffle_v2i32_v3i32__4_3() {
3441 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_3:
3442 ; GFX900:       ; %bb.0:
3443 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3444 ; GFX900-NEXT:    ;;#ASMSTART
3445 ; GFX900-NEXT:    ; def s[4:6]
3446 ; GFX900-NEXT:    ;;#ASMEND
3447 ; GFX900-NEXT:    s_mov_b32 s8, s5
3448 ; GFX900-NEXT:    s_mov_b32 s9, s4
3449 ; GFX900-NEXT:    ;;#ASMSTART
3450 ; GFX900-NEXT:    ; use s[8:9]
3451 ; GFX900-NEXT:    ;;#ASMEND
3452 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3454 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_3:
3455 ; GFX90A:       ; %bb.0:
3456 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3457 ; GFX90A-NEXT:    ;;#ASMSTART
3458 ; GFX90A-NEXT:    ; def s[4:6]
3459 ; GFX90A-NEXT:    ;;#ASMEND
3460 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3461 ; GFX90A-NEXT:    s_mov_b32 s9, s4
3462 ; GFX90A-NEXT:    ;;#ASMSTART
3463 ; GFX90A-NEXT:    ; use s[8:9]
3464 ; GFX90A-NEXT:    ;;#ASMEND
3465 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3467 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_3:
3468 ; GFX940:       ; %bb.0:
3469 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3470 ; GFX940-NEXT:    ;;#ASMSTART
3471 ; GFX940-NEXT:    ; def s[0:2]
3472 ; GFX940-NEXT:    ;;#ASMEND
3473 ; GFX940-NEXT:    s_mov_b32 s8, s1
3474 ; GFX940-NEXT:    s_mov_b32 s9, s0
3475 ; GFX940-NEXT:    ;;#ASMSTART
3476 ; GFX940-NEXT:    ; use s[8:9]
3477 ; GFX940-NEXT:    ;;#ASMEND
3478 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3479   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3480   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3481   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 3>
3482   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3483   ret void
3486 define void @s_shuffle_v2i32_v3i32__u_4() {
3487 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_4:
3488 ; GFX900:       ; %bb.0:
3489 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3490 ; GFX900-NEXT:    ;;#ASMSTART
3491 ; GFX900-NEXT:    ; def s[8:10]
3492 ; GFX900-NEXT:    ;;#ASMEND
3493 ; GFX900-NEXT:    ;;#ASMSTART
3494 ; GFX900-NEXT:    ; use s[8:9]
3495 ; GFX900-NEXT:    ;;#ASMEND
3496 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3498 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_4:
3499 ; GFX90A:       ; %bb.0:
3500 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3501 ; GFX90A-NEXT:    ;;#ASMSTART
3502 ; GFX90A-NEXT:    ; def s[8:10]
3503 ; GFX90A-NEXT:    ;;#ASMEND
3504 ; GFX90A-NEXT:    ;;#ASMSTART
3505 ; GFX90A-NEXT:    ; use s[8:9]
3506 ; GFX90A-NEXT:    ;;#ASMEND
3507 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3509 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_4:
3510 ; GFX940:       ; %bb.0:
3511 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3512 ; GFX940-NEXT:    ;;#ASMSTART
3513 ; GFX940-NEXT:    ; def s[8:10]
3514 ; GFX940-NEXT:    ;;#ASMEND
3515 ; GFX940-NEXT:    s_nop 0
3516 ; GFX940-NEXT:    ;;#ASMSTART
3517 ; GFX940-NEXT:    ; use s[8:9]
3518 ; GFX940-NEXT:    ;;#ASMEND
3519 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3520   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3521   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3522   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 4>
3523   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3524   ret void
3527 define void @s_shuffle_v2i32_v3i32__0_4() {
3528 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_4:
3529 ; GFX900:       ; %bb.0:
3530 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3531 ; GFX900-NEXT:    ;;#ASMSTART
3532 ; GFX900-NEXT:    ; def s[8:10]
3533 ; GFX900-NEXT:    ;;#ASMEND
3534 ; GFX900-NEXT:    ;;#ASMSTART
3535 ; GFX900-NEXT:    ; def s[4:6]
3536 ; GFX900-NEXT:    ;;#ASMEND
3537 ; GFX900-NEXT:    s_mov_b32 s9, s5
3538 ; GFX900-NEXT:    ;;#ASMSTART
3539 ; GFX900-NEXT:    ; use s[8:9]
3540 ; GFX900-NEXT:    ;;#ASMEND
3541 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3543 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_4:
3544 ; GFX90A:       ; %bb.0:
3545 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3546 ; GFX90A-NEXT:    ;;#ASMSTART
3547 ; GFX90A-NEXT:    ; def s[8:10]
3548 ; GFX90A-NEXT:    ;;#ASMEND
3549 ; GFX90A-NEXT:    ;;#ASMSTART
3550 ; GFX90A-NEXT:    ; def s[4:6]
3551 ; GFX90A-NEXT:    ;;#ASMEND
3552 ; GFX90A-NEXT:    s_mov_b32 s9, s5
3553 ; GFX90A-NEXT:    ;;#ASMSTART
3554 ; GFX90A-NEXT:    ; use s[8:9]
3555 ; GFX90A-NEXT:    ;;#ASMEND
3556 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3558 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_4:
3559 ; GFX940:       ; %bb.0:
3560 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3561 ; GFX940-NEXT:    ;;#ASMSTART
3562 ; GFX940-NEXT:    ; def s[8:10]
3563 ; GFX940-NEXT:    ;;#ASMEND
3564 ; GFX940-NEXT:    ;;#ASMSTART
3565 ; GFX940-NEXT:    ; def s[0:2]
3566 ; GFX940-NEXT:    ;;#ASMEND
3567 ; GFX940-NEXT:    s_mov_b32 s9, s1
3568 ; GFX940-NEXT:    ;;#ASMSTART
3569 ; GFX940-NEXT:    ; use s[8:9]
3570 ; GFX940-NEXT:    ;;#ASMEND
3571 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3572   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3573   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3574   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 4>
3575   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3576   ret void
3579 define void @s_shuffle_v2i32_v3i32__1_4() {
3580 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_4:
3581 ; GFX900:       ; %bb.0:
3582 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3583 ; GFX900-NEXT:    ;;#ASMSTART
3584 ; GFX900-NEXT:    ; def s[8:10]
3585 ; GFX900-NEXT:    ;;#ASMEND
3586 ; GFX900-NEXT:    ;;#ASMSTART
3587 ; GFX900-NEXT:    ; def s[4:6]
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_v3i32__1_4:
3596 ; GFX90A:       ; %bb.0:
3597 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3598 ; GFX90A-NEXT:    ;;#ASMSTART
3599 ; GFX90A-NEXT:    ; def s[8:10]
3600 ; GFX90A-NEXT:    ;;#ASMEND
3601 ; GFX90A-NEXT:    ;;#ASMSTART
3602 ; GFX90A-NEXT:    ; def s[4:6]
3603 ; GFX90A-NEXT:    ;;#ASMEND
3604 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3605 ; GFX90A-NEXT:    ;;#ASMSTART
3606 ; GFX90A-NEXT:    ; use s[8:9]
3607 ; GFX90A-NEXT:    ;;#ASMEND
3608 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3610 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_4:
3611 ; GFX940:       ; %bb.0:
3612 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3613 ; GFX940-NEXT:    ;;#ASMSTART
3614 ; GFX940-NEXT:    ; def s[8:10]
3615 ; GFX940-NEXT:    ;;#ASMEND
3616 ; GFX940-NEXT:    ;;#ASMSTART
3617 ; GFX940-NEXT:    ; def s[0:2]
3618 ; GFX940-NEXT:    ;;#ASMEND
3619 ; GFX940-NEXT:    s_mov_b32 s8, s1
3620 ; GFX940-NEXT:    ;;#ASMSTART
3621 ; GFX940-NEXT:    ; use s[8:9]
3622 ; GFX940-NEXT:    ;;#ASMEND
3623 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3624   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3625   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3626   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 4>
3627   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3628   ret void
3631 define void @s_shuffle_v2i32_v3i32__2_4() {
3632 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_4:
3633 ; GFX900:       ; %bb.0:
3634 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3635 ; GFX900-NEXT:    ;;#ASMSTART
3636 ; GFX900-NEXT:    ; def s[8:10]
3637 ; GFX900-NEXT:    ;;#ASMEND
3638 ; GFX900-NEXT:    ;;#ASMSTART
3639 ; GFX900-NEXT:    ; def s[4:6]
3640 ; GFX900-NEXT:    ;;#ASMEND
3641 ; GFX900-NEXT:    s_mov_b32 s8, s6
3642 ; GFX900-NEXT:    ;;#ASMSTART
3643 ; GFX900-NEXT:    ; use s[8:9]
3644 ; GFX900-NEXT:    ;;#ASMEND
3645 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3647 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_4:
3648 ; GFX90A:       ; %bb.0:
3649 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3650 ; GFX90A-NEXT:    ;;#ASMSTART
3651 ; GFX90A-NEXT:    ; def s[8:10]
3652 ; GFX90A-NEXT:    ;;#ASMEND
3653 ; GFX90A-NEXT:    ;;#ASMSTART
3654 ; GFX90A-NEXT:    ; def s[4:6]
3655 ; GFX90A-NEXT:    ;;#ASMEND
3656 ; GFX90A-NEXT:    s_mov_b32 s8, s6
3657 ; GFX90A-NEXT:    ;;#ASMSTART
3658 ; GFX90A-NEXT:    ; use s[8:9]
3659 ; GFX90A-NEXT:    ;;#ASMEND
3660 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3662 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_4:
3663 ; GFX940:       ; %bb.0:
3664 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3665 ; GFX940-NEXT:    ;;#ASMSTART
3666 ; GFX940-NEXT:    ; def s[8:10]
3667 ; GFX940-NEXT:    ;;#ASMEND
3668 ; GFX940-NEXT:    ;;#ASMSTART
3669 ; GFX940-NEXT:    ; def s[0:2]
3670 ; GFX940-NEXT:    ;;#ASMEND
3671 ; GFX940-NEXT:    s_mov_b32 s8, s2
3672 ; GFX940-NEXT:    ;;#ASMSTART
3673 ; GFX940-NEXT:    ; use s[8:9]
3674 ; GFX940-NEXT:    ;;#ASMEND
3675 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3676   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3677   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3678   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 4>
3679   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3680   ret void
3683 define void @s_shuffle_v2i32_v3i32__3_4() {
3684 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_4:
3685 ; GFX900:       ; %bb.0:
3686 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3687 ; GFX900-NEXT:    ;;#ASMSTART
3688 ; GFX900-NEXT:    ; def s[8:10]
3689 ; GFX900-NEXT:    ;;#ASMEND
3690 ; GFX900-NEXT:    ;;#ASMSTART
3691 ; GFX900-NEXT:    ; use s[8:9]
3692 ; GFX900-NEXT:    ;;#ASMEND
3693 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3695 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_4:
3696 ; GFX90A:       ; %bb.0:
3697 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3698 ; GFX90A-NEXT:    ;;#ASMSTART
3699 ; GFX90A-NEXT:    ; def s[8:10]
3700 ; GFX90A-NEXT:    ;;#ASMEND
3701 ; GFX90A-NEXT:    ;;#ASMSTART
3702 ; GFX90A-NEXT:    ; use s[8:9]
3703 ; GFX90A-NEXT:    ;;#ASMEND
3704 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3706 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_4:
3707 ; GFX940:       ; %bb.0:
3708 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3709 ; GFX940-NEXT:    ;;#ASMSTART
3710 ; GFX940-NEXT:    ; def s[8:10]
3711 ; GFX940-NEXT:    ;;#ASMEND
3712 ; GFX940-NEXT:    s_nop 0
3713 ; GFX940-NEXT:    ;;#ASMSTART
3714 ; GFX940-NEXT:    ; use s[8:9]
3715 ; GFX940-NEXT:    ;;#ASMEND
3716 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3717   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3718   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3719   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 4>
3720   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3721   ret void
3724 define void @s_shuffle_v2i32_v3i32__4_4() {
3725 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__4_4:
3726 ; GFX9:       ; %bb.0:
3727 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3728 ; GFX9-NEXT:    ;;#ASMSTART
3729 ; GFX9-NEXT:    ; def s[8:10]
3730 ; GFX9-NEXT:    ;;#ASMEND
3731 ; GFX9-NEXT:    s_mov_b32 s8, s9
3732 ; GFX9-NEXT:    ;;#ASMSTART
3733 ; GFX9-NEXT:    ; use s[8:9]
3734 ; GFX9-NEXT:    ;;#ASMEND
3735 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3736   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3737   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3738   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 4>
3739   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3740   ret void
3743 define void @s_shuffle_v2i32_v3i32__u_5() {
3744 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_5:
3745 ; GFX900:       ; %bb.0:
3746 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3747 ; GFX900-NEXT:    ;;#ASMSTART
3748 ; GFX900-NEXT:    ; def s[4:6]
3749 ; GFX900-NEXT:    ;;#ASMEND
3750 ; GFX900-NEXT:    s_mov_b32 s9, s6
3751 ; GFX900-NEXT:    ;;#ASMSTART
3752 ; GFX900-NEXT:    ; use s[8:9]
3753 ; GFX900-NEXT:    ;;#ASMEND
3754 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3756 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_5:
3757 ; GFX90A:       ; %bb.0:
3758 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3759 ; GFX90A-NEXT:    ;;#ASMSTART
3760 ; GFX90A-NEXT:    ; def s[4:6]
3761 ; GFX90A-NEXT:    ;;#ASMEND
3762 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3763 ; GFX90A-NEXT:    ;;#ASMSTART
3764 ; GFX90A-NEXT:    ; use s[8:9]
3765 ; GFX90A-NEXT:    ;;#ASMEND
3766 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3768 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_5:
3769 ; GFX940:       ; %bb.0:
3770 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3771 ; GFX940-NEXT:    ;;#ASMSTART
3772 ; GFX940-NEXT:    ; def s[0:2]
3773 ; GFX940-NEXT:    ;;#ASMEND
3774 ; GFX940-NEXT:    s_mov_b32 s9, s2
3775 ; GFX940-NEXT:    ;;#ASMSTART
3776 ; GFX940-NEXT:    ; use s[8:9]
3777 ; GFX940-NEXT:    ;;#ASMEND
3778 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3779   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3780   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3781   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 5>
3782   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3783   ret void
3786 define void @s_shuffle_v2i32_v3i32__0_5() {
3787 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_5:
3788 ; GFX900:       ; %bb.0:
3789 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3790 ; GFX900-NEXT:    ;;#ASMSTART
3791 ; GFX900-NEXT:    ; def s[8:10]
3792 ; GFX900-NEXT:    ;;#ASMEND
3793 ; GFX900-NEXT:    ;;#ASMSTART
3794 ; GFX900-NEXT:    ; def s[4:6]
3795 ; GFX900-NEXT:    ;;#ASMEND
3796 ; GFX900-NEXT:    s_mov_b32 s9, s6
3797 ; GFX900-NEXT:    ;;#ASMSTART
3798 ; GFX900-NEXT:    ; use s[8:9]
3799 ; GFX900-NEXT:    ;;#ASMEND
3800 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3802 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_5:
3803 ; GFX90A:       ; %bb.0:
3804 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3805 ; GFX90A-NEXT:    ;;#ASMSTART
3806 ; GFX90A-NEXT:    ; def s[8:10]
3807 ; GFX90A-NEXT:    ;;#ASMEND
3808 ; GFX90A-NEXT:    ;;#ASMSTART
3809 ; GFX90A-NEXT:    ; def s[4:6]
3810 ; GFX90A-NEXT:    ;;#ASMEND
3811 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3812 ; GFX90A-NEXT:    ;;#ASMSTART
3813 ; GFX90A-NEXT:    ; use s[8:9]
3814 ; GFX90A-NEXT:    ;;#ASMEND
3815 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3817 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_5:
3818 ; GFX940:       ; %bb.0:
3819 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3820 ; GFX940-NEXT:    ;;#ASMSTART
3821 ; GFX940-NEXT:    ; def s[8:10]
3822 ; GFX940-NEXT:    ;;#ASMEND
3823 ; GFX940-NEXT:    ;;#ASMSTART
3824 ; GFX940-NEXT:    ; def s[0:2]
3825 ; GFX940-NEXT:    ;;#ASMEND
3826 ; GFX940-NEXT:    s_mov_b32 s9, s2
3827 ; GFX940-NEXT:    ;;#ASMSTART
3828 ; GFX940-NEXT:    ; use s[8:9]
3829 ; GFX940-NEXT:    ;;#ASMEND
3830 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3831   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3832   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3833   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 5>
3834   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3835   ret void
3838 define void @s_shuffle_v2i32_v3i32__1_5() {
3839 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_5:
3840 ; GFX900:       ; %bb.0:
3841 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3842 ; GFX900-NEXT:    ;;#ASMSTART
3843 ; GFX900-NEXT:    ; def s[8:10]
3844 ; GFX900-NEXT:    ;;#ASMEND
3845 ; GFX900-NEXT:    ;;#ASMSTART
3846 ; GFX900-NEXT:    ; def s[4:6]
3847 ; GFX900-NEXT:    ;;#ASMEND
3848 ; GFX900-NEXT:    s_mov_b32 s8, s5
3849 ; GFX900-NEXT:    s_mov_b32 s9, s10
3850 ; GFX900-NEXT:    ;;#ASMSTART
3851 ; GFX900-NEXT:    ; use s[8:9]
3852 ; GFX900-NEXT:    ;;#ASMEND
3853 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3855 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_5:
3856 ; GFX90A:       ; %bb.0:
3857 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3858 ; GFX90A-NEXT:    ;;#ASMSTART
3859 ; GFX90A-NEXT:    ; def s[8:10]
3860 ; GFX90A-NEXT:    ;;#ASMEND
3861 ; GFX90A-NEXT:    ;;#ASMSTART
3862 ; GFX90A-NEXT:    ; def s[4:6]
3863 ; GFX90A-NEXT:    ;;#ASMEND
3864 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3865 ; GFX90A-NEXT:    s_mov_b32 s9, s10
3866 ; GFX90A-NEXT:    ;;#ASMSTART
3867 ; GFX90A-NEXT:    ; use s[8:9]
3868 ; GFX90A-NEXT:    ;;#ASMEND
3869 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3871 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_5:
3872 ; GFX940:       ; %bb.0:
3873 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3874 ; GFX940-NEXT:    ;;#ASMSTART
3875 ; GFX940-NEXT:    ; def s[0:2]
3876 ; GFX940-NEXT:    ;;#ASMEND
3877 ; GFX940-NEXT:    ;;#ASMSTART
3878 ; GFX940-NEXT:    ; def s[4:6]
3879 ; GFX940-NEXT:    ;;#ASMEND
3880 ; GFX940-NEXT:    s_mov_b32 s8, s1
3881 ; GFX940-NEXT:    s_mov_b32 s9, s6
3882 ; GFX940-NEXT:    ;;#ASMSTART
3883 ; GFX940-NEXT:    ; use s[8:9]
3884 ; GFX940-NEXT:    ;;#ASMEND
3885 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3886   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3887   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3888   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 5>
3889   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3890   ret void
3893 define void @s_shuffle_v2i32_v3i32__2_5() {
3894 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_5:
3895 ; GFX900:       ; %bb.0:
3896 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3897 ; GFX900-NEXT:    ;;#ASMSTART
3898 ; GFX900-NEXT:    ; def s[8:10]
3899 ; GFX900-NEXT:    ;;#ASMEND
3900 ; GFX900-NEXT:    ;;#ASMSTART
3901 ; GFX900-NEXT:    ; def s[4:6]
3902 ; GFX900-NEXT:    ;;#ASMEND
3903 ; GFX900-NEXT:    s_mov_b32 s8, s6
3904 ; GFX900-NEXT:    s_mov_b32 s9, s10
3905 ; GFX900-NEXT:    ;;#ASMSTART
3906 ; GFX900-NEXT:    ; use s[8:9]
3907 ; GFX900-NEXT:    ;;#ASMEND
3908 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3910 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_5:
3911 ; GFX90A:       ; %bb.0:
3912 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3913 ; GFX90A-NEXT:    ;;#ASMSTART
3914 ; GFX90A-NEXT:    ; def s[8:10]
3915 ; GFX90A-NEXT:    ;;#ASMEND
3916 ; GFX90A-NEXT:    ;;#ASMSTART
3917 ; GFX90A-NEXT:    ; def s[4:6]
3918 ; GFX90A-NEXT:    ;;#ASMEND
3919 ; GFX90A-NEXT:    s_mov_b32 s8, s6
3920 ; GFX90A-NEXT:    s_mov_b32 s9, s10
3921 ; GFX90A-NEXT:    ;;#ASMSTART
3922 ; GFX90A-NEXT:    ; use s[8:9]
3923 ; GFX90A-NEXT:    ;;#ASMEND
3924 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3926 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_5:
3927 ; GFX940:       ; %bb.0:
3928 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3929 ; GFX940-NEXT:    ;;#ASMSTART
3930 ; GFX940-NEXT:    ; def s[0:2]
3931 ; GFX940-NEXT:    ;;#ASMEND
3932 ; GFX940-NEXT:    ;;#ASMSTART
3933 ; GFX940-NEXT:    ; def s[4:6]
3934 ; GFX940-NEXT:    ;;#ASMEND
3935 ; GFX940-NEXT:    s_mov_b32 s8, s2
3936 ; GFX940-NEXT:    s_mov_b32 s9, s6
3937 ; GFX940-NEXT:    ;;#ASMSTART
3938 ; GFX940-NEXT:    ; use s[8:9]
3939 ; GFX940-NEXT:    ;;#ASMEND
3940 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3941   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3942   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3943   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 5>
3944   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3945   ret void
3948 define void @s_shuffle_v2i32_v3i32__3_5() {
3949 ; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_5:
3950 ; GFX9:       ; %bb.0:
3951 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3952 ; GFX9-NEXT:    ;;#ASMSTART
3953 ; GFX9-NEXT:    ; def s[8:10]
3954 ; GFX9-NEXT:    ;;#ASMEND
3955 ; GFX9-NEXT:    s_mov_b32 s9, s10
3956 ; GFX9-NEXT:    ;;#ASMSTART
3957 ; GFX9-NEXT:    ; use s[8:9]
3958 ; GFX9-NEXT:    ;;#ASMEND
3959 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3960   %vec0 = call <3 x i32> asm "; def $0", "=s"()
3961   %vec1 = call <3 x i32> asm "; def $0", "=s"()
3962   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 5>
3963   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
3964   ret void
3967 define void @s_shuffle_v2i32_v3i32__4_5() {
3968 ; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_5:
3969 ; GFX900:       ; %bb.0:
3970 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3971 ; GFX900-NEXT:    ;;#ASMSTART
3972 ; GFX900-NEXT:    ; def s[4:6]
3973 ; GFX900-NEXT:    ;;#ASMEND
3974 ; GFX900-NEXT:    s_mov_b32 s8, s5
3975 ; GFX900-NEXT:    s_mov_b32 s9, s6
3976 ; GFX900-NEXT:    ;;#ASMSTART
3977 ; GFX900-NEXT:    ; use s[8:9]
3978 ; GFX900-NEXT:    ;;#ASMEND
3979 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3981 ; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_5:
3982 ; GFX90A:       ; %bb.0:
3983 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3984 ; GFX90A-NEXT:    ;;#ASMSTART
3985 ; GFX90A-NEXT:    ; def s[4:6]
3986 ; GFX90A-NEXT:    ;;#ASMEND
3987 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3988 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3989 ; GFX90A-NEXT:    ;;#ASMSTART
3990 ; GFX90A-NEXT:    ; use s[8:9]
3991 ; GFX90A-NEXT:    ;;#ASMEND
3992 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3994 ; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_5:
3995 ; GFX940:       ; %bb.0:
3996 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3997 ; GFX940-NEXT:    ;;#ASMSTART
3998 ; GFX940-NEXT:    ; def s[0:2]
3999 ; GFX940-NEXT:    ;;#ASMEND
4000 ; GFX940-NEXT:    s_mov_b32 s8, s1
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 <3 x i32> asm "; def $0", "=s"()
4007   %vec1 = call <3 x i32> asm "; def $0", "=s"()
4008   %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 5>
4009   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
4010   ret void
4012 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
4013 ; GFX90APLUS: {{.*}}