[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / shufflevector.v2p0.v4p0.ll
blob0b0570a328201a4de71584dcafedfd890f8a27bc
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_v2p0_v4p0__u_u(ptr addrspace(1) inreg %ptr) {
8 ; GFX9-LABEL: v_shuffle_v2p0_v4p0__u_u:
9 ; GFX9:       ; %bb.0:
10 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
12   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
13   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> poison
14   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
15   ret void
18 define void @v_shuffle_v2p0_v4p0__0_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_u:
20 ; GFX900:       ; %bb.0:
21 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
23 ; GFX900-NEXT:    ;;#ASMSTART
24 ; GFX900-NEXT:    ; def v[0:7]
25 ; GFX900-NEXT:    ;;#ASMEND
26 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
27 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
28 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
30 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_u:
31 ; GFX90A:       ; %bb.0:
32 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
34 ; GFX90A-NEXT:    ;;#ASMSTART
35 ; GFX90A-NEXT:    ; def v[0:7]
36 ; GFX90A-NEXT:    ;;#ASMEND
37 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
38 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
39 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_u:
42 ; GFX940:       ; %bb.0:
43 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
45 ; GFX940-NEXT:    ;;#ASMSTART
46 ; GFX940-NEXT:    ; def v[0:7]
47 ; GFX940-NEXT:    ;;#ASMEND
48 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
49 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
50 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
51   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
52   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 poison>
53   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
54   ret void
57 define void @v_shuffle_v2p0_v4p0__1_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_u:
59 ; GFX900:       ; %bb.0:
60 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
62 ; GFX900-NEXT:    ;;#ASMSTART
63 ; GFX900-NEXT:    ; def v[0:7]
64 ; GFX900-NEXT:    ;;#ASMEND
65 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
66 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
67 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
69 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_u:
70 ; GFX90A:       ; %bb.0:
71 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
73 ; GFX90A-NEXT:    ;;#ASMSTART
74 ; GFX90A-NEXT:    ; def v[0:7]
75 ; GFX90A-NEXT:    ;;#ASMEND
76 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
77 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
78 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
80 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_u:
81 ; GFX940:       ; %bb.0:
82 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
83 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
84 ; GFX940-NEXT:    ;;#ASMSTART
85 ; GFX940-NEXT:    ; def v[0:7]
86 ; GFX940-NEXT:    ;;#ASMEND
87 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
88 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
89 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
90   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
91   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 poison>
92   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
93   ret void
96 define void @v_shuffle_v2p0_v4p0__2_u(ptr addrspace(1) inreg %ptr) {
97 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_u:
98 ; GFX900:       ; %bb.0:
99 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
100 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
101 ; GFX900-NEXT:    ;;#ASMSTART
102 ; GFX900-NEXT:    ; def v[0:7]
103 ; GFX900-NEXT:    ;;#ASMEND
104 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
105 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
106 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
108 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_u:
109 ; GFX90A:       ; %bb.0:
110 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
111 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
112 ; GFX90A-NEXT:    ;;#ASMSTART
113 ; GFX90A-NEXT:    ; def v[0:7]
114 ; GFX90A-NEXT:    ;;#ASMEND
115 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
116 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
117 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
119 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_u:
120 ; GFX940:       ; %bb.0:
121 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
122 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
123 ; GFX940-NEXT:    ;;#ASMSTART
124 ; GFX940-NEXT:    ; def v[0:7]
125 ; GFX940-NEXT:    ;;#ASMEND
126 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
127 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
128 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
129   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
130   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 poison>
131   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
132   ret void
135 define void @v_shuffle_v2p0_v4p0__3_u(ptr addrspace(1) inreg %ptr) {
136 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_u:
137 ; GFX900:       ; %bb.0:
138 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
139 ; GFX900-NEXT:    ;;#ASMSTART
140 ; GFX900-NEXT:    ; def v[0:7]
141 ; GFX900-NEXT:    ;;#ASMEND
142 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
143 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
144 ; GFX900-NEXT:    v_mov_b32_e32 v1, v7
145 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
146 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
147 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
149 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_u:
150 ; GFX90A:       ; %bb.0:
151 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
152 ; GFX90A-NEXT:    ;;#ASMSTART
153 ; GFX90A-NEXT:    ; def v[0:7]
154 ; GFX90A-NEXT:    ;;#ASMEND
155 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
156 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
157 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
158 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
159 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
160 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
162 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_u:
163 ; GFX940:       ; %bb.0:
164 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
165 ; GFX940-NEXT:    ;;#ASMSTART
166 ; GFX940-NEXT:    ; def v[0:7]
167 ; GFX940-NEXT:    ;;#ASMEND
168 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
169 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
170 ; GFX940-NEXT:    v_mov_b32_e32 v1, v7
171 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
172 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
173 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
174   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
175   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 poison>
176   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
177   ret void
180 define void @v_shuffle_v2p0_v4p0__4_u(ptr addrspace(1) inreg %ptr) {
181 ; GFX9-LABEL: v_shuffle_v2p0_v4p0__4_u:
182 ; GFX9:       ; %bb.0:
183 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
184 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
185   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
186   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 poison>
187   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
188   ret void
191 define void @v_shuffle_v2p0_v4p0__5_u(ptr addrspace(1) inreg %ptr) {
192 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_u:
193 ; GFX900:       ; %bb.0:
194 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
195 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
196 ; GFX900-NEXT:    ;;#ASMSTART
197 ; GFX900-NEXT:    ; def v[0:7]
198 ; GFX900-NEXT:    ;;#ASMEND
199 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
200 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
201 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
203 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_u:
204 ; GFX90A:       ; %bb.0:
205 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
206 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
207 ; GFX90A-NEXT:    ;;#ASMSTART
208 ; GFX90A-NEXT:    ; def v[0:7]
209 ; GFX90A-NEXT:    ;;#ASMEND
210 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
211 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
212 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
214 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_u:
215 ; GFX940:       ; %bb.0:
216 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
217 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
218 ; GFX940-NEXT:    ;;#ASMSTART
219 ; GFX940-NEXT:    ; def v[0:7]
220 ; GFX940-NEXT:    ;;#ASMEND
221 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
222 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
223 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
224   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
225   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
226   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>
227   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
228   ret void
231 define void @v_shuffle_v2p0_v4p0__6_u(ptr addrspace(1) inreg %ptr) {
232 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_u:
233 ; GFX900:       ; %bb.0:
234 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
235 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
236 ; GFX900-NEXT:    ;;#ASMSTART
237 ; GFX900-NEXT:    ; def v[0:7]
238 ; GFX900-NEXT:    ;;#ASMEND
239 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
240 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
241 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
243 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_u:
244 ; GFX90A:       ; %bb.0:
245 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
246 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
247 ; GFX90A-NEXT:    ;;#ASMSTART
248 ; GFX90A-NEXT:    ; def v[0:7]
249 ; GFX90A-NEXT:    ;;#ASMEND
250 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
251 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
252 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
254 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_u:
255 ; GFX940:       ; %bb.0:
256 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
257 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
258 ; GFX940-NEXT:    ;;#ASMSTART
259 ; GFX940-NEXT:    ; def v[0:7]
260 ; GFX940-NEXT:    ;;#ASMEND
261 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
262 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
263 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
264   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
265   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
266   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 poison>
267   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
268   ret void
271 define void @v_shuffle_v2p0_v4p0__7_u(ptr addrspace(1) inreg %ptr) {
272 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_u:
273 ; GFX900:       ; %bb.0:
274 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
275 ; GFX900-NEXT:    ;;#ASMSTART
276 ; GFX900-NEXT:    ; def v[0:7]
277 ; GFX900-NEXT:    ;;#ASMEND
278 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
279 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
280 ; GFX900-NEXT:    v_mov_b32_e32 v1, v7
281 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
282 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
283 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
285 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_u:
286 ; GFX90A:       ; %bb.0:
287 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
288 ; GFX90A-NEXT:    ;;#ASMSTART
289 ; GFX90A-NEXT:    ; def v[0:7]
290 ; GFX90A-NEXT:    ;;#ASMEND
291 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
292 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
293 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
294 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
295 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
296 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
298 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_u:
299 ; GFX940:       ; %bb.0:
300 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
301 ; GFX940-NEXT:    ;;#ASMSTART
302 ; GFX940-NEXT:    ; def v[0:7]
303 ; GFX940-NEXT:    ;;#ASMEND
304 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
305 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
306 ; GFX940-NEXT:    v_mov_b32_e32 v1, v7
307 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
308 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
309 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
310   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
311   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
312   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 poison>
313   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
314   ret void
317 define void @v_shuffle_v2p0_v4p0__7_0(ptr addrspace(1) inreg %ptr) {
318 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_0:
319 ; GFX900:       ; %bb.0:
320 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
321 ; GFX900-NEXT:    ;;#ASMSTART
322 ; GFX900-NEXT:    ; def v[0:7]
323 ; GFX900-NEXT:    ;;#ASMEND
324 ; GFX900-NEXT:    v_mov_b32_e32 v12, 0
325 ; GFX900-NEXT:    v_mov_b32_e32 v8, v6
326 ; GFX900-NEXT:    v_mov_b32_e32 v9, v7
327 ; GFX900-NEXT:    ;;#ASMSTART
328 ; GFX900-NEXT:    ; def v[0:7]
329 ; GFX900-NEXT:    ;;#ASMEND
330 ; GFX900-NEXT:    v_mov_b32_e32 v10, v0
331 ; GFX900-NEXT:    v_mov_b32_e32 v11, v1
332 ; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
333 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
334 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
336 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_0:
337 ; GFX90A:       ; %bb.0:
338 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
339 ; GFX90A-NEXT:    ;;#ASMSTART
340 ; GFX90A-NEXT:    ; def v[0:7]
341 ; GFX90A-NEXT:    ;;#ASMEND
342 ; GFX90A-NEXT:    ;;#ASMSTART
343 ; GFX90A-NEXT:    ; def v[2:9]
344 ; GFX90A-NEXT:    ;;#ASMEND
345 ; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
346 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v8
347 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v9
348 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
349 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
350 ; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]
351 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
352 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
354 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_0:
355 ; GFX940:       ; %bb.0:
356 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
357 ; GFX940-NEXT:    ;;#ASMSTART
358 ; GFX940-NEXT:    ; def v[0:7]
359 ; GFX940-NEXT:    ;;#ASMEND
360 ; GFX940-NEXT:    v_mov_b32_e32 v10, 0
361 ; GFX940-NEXT:    ;;#ASMSTART
362 ; GFX940-NEXT:    ; def v[2:9]
363 ; GFX940-NEXT:    ;;#ASMEND
364 ; GFX940-NEXT:    s_nop 0
365 ; GFX940-NEXT:    v_mov_b32_e32 v2, v8
366 ; GFX940-NEXT:    v_mov_b32_e32 v3, v9
367 ; GFX940-NEXT:    v_mov_b32_e32 v4, v0
368 ; GFX940-NEXT:    v_mov_b32_e32 v5, v1
369 ; GFX940-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] sc0 sc1
370 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
371 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
372   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
373   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
374   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 0>
375   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
376   ret void
379 define void @v_shuffle_v2p0_v4p0__7_1(ptr addrspace(1) inreg %ptr) {
380 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_1:
381 ; GFX900:       ; %bb.0:
382 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
383 ; GFX900-NEXT:    ;;#ASMSTART
384 ; GFX900-NEXT:    ; def v[0:7]
385 ; GFX900-NEXT:    ;;#ASMEND
386 ; GFX900-NEXT:    v_mov_b32_e32 v12, 0
387 ; GFX900-NEXT:    ;;#ASMSTART
388 ; GFX900-NEXT:    ; def v[4:11]
389 ; GFX900-NEXT:    ;;#ASMEND
390 ; GFX900-NEXT:    v_mov_b32_e32 v0, v10
391 ; GFX900-NEXT:    v_mov_b32_e32 v1, v11
392 ; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17]
393 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
394 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
396 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_1:
397 ; GFX90A:       ; %bb.0:
398 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
399 ; GFX90A-NEXT:    ;;#ASMSTART
400 ; GFX90A-NEXT:    ; def v[0:7]
401 ; GFX90A-NEXT:    ;;#ASMEND
402 ; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
403 ; GFX90A-NEXT:    ;;#ASMSTART
404 ; GFX90A-NEXT:    ; def v[4:11]
405 ; GFX90A-NEXT:    ;;#ASMEND
406 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v10
407 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v11
408 ; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17]
409 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
410 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
412 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_1:
413 ; GFX940:       ; %bb.0:
414 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
415 ; GFX940-NEXT:    ;;#ASMSTART
416 ; GFX940-NEXT:    ; def v[0:7]
417 ; GFX940-NEXT:    ;;#ASMEND
418 ; GFX940-NEXT:    v_mov_b32_e32 v12, 0
419 ; GFX940-NEXT:    ;;#ASMSTART
420 ; GFX940-NEXT:    ; def v[4:11]
421 ; GFX940-NEXT:    ;;#ASMEND
422 ; GFX940-NEXT:    s_nop 0
423 ; GFX940-NEXT:    v_mov_b32_e32 v0, v10
424 ; GFX940-NEXT:    v_mov_b32_e32 v1, v11
425 ; GFX940-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] sc0 sc1
426 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
427 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
428   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
429   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
430   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 1>
431   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
432   ret void
435 define void @v_shuffle_v2p0_v4p0__7_2(ptr addrspace(1) inreg %ptr) {
436 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_2:
437 ; GFX900:       ; %bb.0:
438 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
439 ; GFX900-NEXT:    ;;#ASMSTART
440 ; GFX900-NEXT:    ; def v[0:7]
441 ; GFX900-NEXT:    ;;#ASMEND
442 ; GFX900-NEXT:    v_mov_b32_e32 v14, 0
443 ; GFX900-NEXT:    ;;#ASMSTART
444 ; GFX900-NEXT:    ; def v[6:13]
445 ; GFX900-NEXT:    ;;#ASMEND
446 ; GFX900-NEXT:    v_mov_b32_e32 v2, v12
447 ; GFX900-NEXT:    v_mov_b32_e32 v3, v13
448 ; GFX900-NEXT:    global_store_dwordx4 v14, v[2:5], s[16:17]
449 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
450 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
452 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_2:
453 ; GFX90A:       ; %bb.0:
454 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
455 ; GFX90A-NEXT:    ;;#ASMSTART
456 ; GFX90A-NEXT:    ; def v[0:7]
457 ; GFX90A-NEXT:    ;;#ASMEND
458 ; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
459 ; GFX90A-NEXT:    ;;#ASMSTART
460 ; GFX90A-NEXT:    ; def v[6:13]
461 ; GFX90A-NEXT:    ;;#ASMEND
462 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v12
463 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v13
464 ; GFX90A-NEXT:    global_store_dwordx4 v14, v[2:5], s[16:17]
465 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
466 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
468 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_2:
469 ; GFX940:       ; %bb.0:
470 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
471 ; GFX940-NEXT:    ;;#ASMSTART
472 ; GFX940-NEXT:    ; def v[0:7]
473 ; GFX940-NEXT:    ;;#ASMEND
474 ; GFX940-NEXT:    v_mov_b32_e32 v14, 0
475 ; GFX940-NEXT:    ;;#ASMSTART
476 ; GFX940-NEXT:    ; def v[6:13]
477 ; GFX940-NEXT:    ;;#ASMEND
478 ; GFX940-NEXT:    s_nop 0
479 ; GFX940-NEXT:    v_mov_b32_e32 v2, v12
480 ; GFX940-NEXT:    v_mov_b32_e32 v3, v13
481 ; GFX940-NEXT:    global_store_dwordx4 v14, v[2:5], s[0:1] sc0 sc1
482 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
483 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
484   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
485   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
486   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 2>
487   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
488   ret void
491 define void @v_shuffle_v2p0_v4p0__7_3(ptr addrspace(1) inreg %ptr) {
492 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_3:
493 ; GFX900:       ; %bb.0:
494 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
495 ; GFX900-NEXT:    ;;#ASMSTART
496 ; GFX900-NEXT:    ; def v[0:7]
497 ; GFX900-NEXT:    ;;#ASMEND
498 ; GFX900-NEXT:    v_mov_b32_e32 v16, 0
499 ; GFX900-NEXT:    ;;#ASMSTART
500 ; GFX900-NEXT:    ; def v[8:15]
501 ; GFX900-NEXT:    ;;#ASMEND
502 ; GFX900-NEXT:    v_mov_b32_e32 v4, v14
503 ; GFX900-NEXT:    v_mov_b32_e32 v5, v15
504 ; GFX900-NEXT:    global_store_dwordx4 v16, v[4:7], s[16:17]
505 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
506 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
508 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_3:
509 ; GFX90A:       ; %bb.0:
510 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
511 ; GFX90A-NEXT:    ;;#ASMSTART
512 ; GFX90A-NEXT:    ; def v[0:7]
513 ; GFX90A-NEXT:    ;;#ASMEND
514 ; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
515 ; GFX90A-NEXT:    ;;#ASMSTART
516 ; GFX90A-NEXT:    ; def v[8:15]
517 ; GFX90A-NEXT:    ;;#ASMEND
518 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v14
519 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v15
520 ; GFX90A-NEXT:    global_store_dwordx4 v16, v[4:7], s[16:17]
521 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
522 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
524 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_3:
525 ; GFX940:       ; %bb.0:
526 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
527 ; GFX940-NEXT:    ;;#ASMSTART
528 ; GFX940-NEXT:    ; def v[0:7]
529 ; GFX940-NEXT:    ;;#ASMEND
530 ; GFX940-NEXT:    v_mov_b32_e32 v16, 0
531 ; GFX940-NEXT:    ;;#ASMSTART
532 ; GFX940-NEXT:    ; def v[8:15]
533 ; GFX940-NEXT:    ;;#ASMEND
534 ; GFX940-NEXT:    s_nop 0
535 ; GFX940-NEXT:    v_mov_b32_e32 v4, v14
536 ; GFX940-NEXT:    v_mov_b32_e32 v5, v15
537 ; GFX940-NEXT:    global_store_dwordx4 v16, v[4:7], s[0:1] sc0 sc1
538 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
539 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
540   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
541   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
542   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 3>
543   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
544   ret void
547 define void @v_shuffle_v2p0_v4p0__7_4(ptr addrspace(1) inreg %ptr) {
548 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_4:
549 ; GFX900:       ; %bb.0:
550 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
551 ; GFX900-NEXT:    ;;#ASMSTART
552 ; GFX900-NEXT:    ; def v[0:7]
553 ; GFX900-NEXT:    ;;#ASMEND
554 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
555 ; GFX900-NEXT:    v_mov_b32_e32 v2, v6
556 ; GFX900-NEXT:    v_mov_b32_e32 v3, v7
557 ; GFX900-NEXT:    v_mov_b32_e32 v4, v0
558 ; GFX900-NEXT:    v_mov_b32_e32 v5, v1
559 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
560 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
561 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
563 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_4:
564 ; GFX90A:       ; %bb.0:
565 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
566 ; GFX90A-NEXT:    ;;#ASMSTART
567 ; GFX90A-NEXT:    ; def v[0:7]
568 ; GFX90A-NEXT:    ;;#ASMEND
569 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
570 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
571 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
572 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
573 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
574 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
575 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
576 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
578 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_4:
579 ; GFX940:       ; %bb.0:
580 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
581 ; GFX940-NEXT:    ;;#ASMSTART
582 ; GFX940-NEXT:    ; def v[0:7]
583 ; GFX940-NEXT:    ;;#ASMEND
584 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
585 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
586 ; GFX940-NEXT:    v_mov_b32_e32 v3, v7
587 ; GFX940-NEXT:    v_mov_b32_e32 v4, v0
588 ; GFX940-NEXT:    v_mov_b32_e32 v5, v1
589 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
590 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
591 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
592   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
593   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
594   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 4>
595   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
596   ret void
599 define void @v_shuffle_v2p0_v4p0__7_5(ptr addrspace(1) inreg %ptr) {
600 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_5:
601 ; GFX900:       ; %bb.0:
602 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
603 ; GFX900-NEXT:    ;;#ASMSTART
604 ; GFX900-NEXT:    ; def v[0:7]
605 ; GFX900-NEXT:    ;;#ASMEND
606 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
607 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
608 ; GFX900-NEXT:    v_mov_b32_e32 v1, v7
609 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
610 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
611 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
613 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_5:
614 ; GFX90A:       ; %bb.0:
615 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
616 ; GFX90A-NEXT:    ;;#ASMSTART
617 ; GFX90A-NEXT:    ; def v[0:7]
618 ; GFX90A-NEXT:    ;;#ASMEND
619 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
620 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
621 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
622 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
623 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
624 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
626 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_5:
627 ; GFX940:       ; %bb.0:
628 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
629 ; GFX940-NEXT:    ;;#ASMSTART
630 ; GFX940-NEXT:    ; def v[0:7]
631 ; GFX940-NEXT:    ;;#ASMEND
632 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
633 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
634 ; GFX940-NEXT:    v_mov_b32_e32 v1, v7
635 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
636 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
637 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
638   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
639   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
640   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 5>
641   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
642   ret void
645 define void @v_shuffle_v2p0_v4p0__7_6(ptr addrspace(1) inreg %ptr) {
646 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_6:
647 ; GFX900:       ; %bb.0:
648 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
649 ; GFX900-NEXT:    ;;#ASMSTART
650 ; GFX900-NEXT:    ; def v[0:7]
651 ; GFX900-NEXT:    ;;#ASMEND
652 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
653 ; GFX900-NEXT:    v_mov_b32_e32 v2, v6
654 ; GFX900-NEXT:    v_mov_b32_e32 v3, v7
655 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
656 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
657 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
659 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_6:
660 ; GFX90A:       ; %bb.0:
661 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
662 ; GFX90A-NEXT:    ;;#ASMSTART
663 ; GFX90A-NEXT:    ; def v[0:7]
664 ; GFX90A-NEXT:    ;;#ASMEND
665 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
666 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
667 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
668 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
669 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
670 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
672 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_6:
673 ; GFX940:       ; %bb.0:
674 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
675 ; GFX940-NEXT:    ;;#ASMSTART
676 ; GFX940-NEXT:    ; def v[0:7]
677 ; GFX940-NEXT:    ;;#ASMEND
678 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
679 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
680 ; GFX940-NEXT:    v_mov_b32_e32 v3, v7
681 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
682 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
683 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
684   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
685   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
686   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 6>
687   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
688   ret void
691 define void @v_shuffle_v2p0_v4p0__7_7(ptr addrspace(1) inreg %ptr) {
692 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_7:
693 ; GFX900:       ; %bb.0:
694 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
695 ; GFX900-NEXT:    ;;#ASMSTART
696 ; GFX900-NEXT:    ; def v[0:7]
697 ; GFX900-NEXT:    ;;#ASMEND
698 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
699 ; GFX900-NEXT:    v_mov_b32_e32 v4, v6
700 ; GFX900-NEXT:    v_mov_b32_e32 v5, v7
701 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
702 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
703 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
705 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_7:
706 ; GFX90A:       ; %bb.0:
707 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
708 ; GFX90A-NEXT:    ;;#ASMSTART
709 ; GFX90A-NEXT:    ; def v[0:7]
710 ; GFX90A-NEXT:    ;;#ASMEND
711 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
712 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
713 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
714 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
715 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
716 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
718 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__7_7:
719 ; GFX940:       ; %bb.0:
720 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
721 ; GFX940-NEXT:    ;;#ASMSTART
722 ; GFX940-NEXT:    ; def v[0:7]
723 ; GFX940-NEXT:    ;;#ASMEND
724 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
725 ; GFX940-NEXT:    v_mov_b32_e32 v4, v6
726 ; GFX940-NEXT:    v_mov_b32_e32 v5, v7
727 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
728 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
729 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
730   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
731   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
732   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 7>
733   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
734   ret void
737 define void @v_shuffle_v2p0_v4p0__u_0(ptr addrspace(1) inreg %ptr) {
738 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_0:
739 ; GFX900:       ; %bb.0:
740 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
741 ; GFX900-NEXT:    ;;#ASMSTART
742 ; GFX900-NEXT:    ; def v[0:7]
743 ; GFX900-NEXT:    ;;#ASMEND
744 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
745 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
746 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
747 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
748 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
749 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
751 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_0:
752 ; GFX90A:       ; %bb.0:
753 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
754 ; GFX90A-NEXT:    ;;#ASMSTART
755 ; GFX90A-NEXT:    ; def v[0:7]
756 ; GFX90A-NEXT:    ;;#ASMEND
757 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
758 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
759 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
760 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
761 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
762 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
764 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_0:
765 ; GFX940:       ; %bb.0:
766 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
767 ; GFX940-NEXT:    ;;#ASMSTART
768 ; GFX940-NEXT:    ; def v[0:7]
769 ; GFX940-NEXT:    ;;#ASMEND
770 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
771 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
772 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
773 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
774 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
775 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
776   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
777   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 0>
778   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
779   ret void
782 define void @v_shuffle_v2p0_v4p0__0_0(ptr addrspace(1) inreg %ptr) {
783 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_0:
784 ; GFX900:       ; %bb.0:
785 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
786 ; GFX900-NEXT:    ;;#ASMSTART
787 ; GFX900-NEXT:    ; def v[0:7]
788 ; GFX900-NEXT:    ;;#ASMEND
789 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
790 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
791 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
792 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
793 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
794 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
796 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_0:
797 ; GFX90A:       ; %bb.0:
798 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
799 ; GFX90A-NEXT:    ;;#ASMSTART
800 ; GFX90A-NEXT:    ; def v[0:7]
801 ; GFX90A-NEXT:    ;;#ASMEND
802 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
803 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
804 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
805 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
806 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
807 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
809 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_0:
810 ; GFX940:       ; %bb.0:
811 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
812 ; GFX940-NEXT:    ;;#ASMSTART
813 ; GFX940-NEXT:    ; def v[0:7]
814 ; GFX940-NEXT:    ;;#ASMEND
815 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
816 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
817 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
818 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
819 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
820 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
821   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
822   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> zeroinitializer
823   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
824   ret void
827 define void @v_shuffle_v2p0_v4p0__1_0(ptr addrspace(1) inreg %ptr) {
828 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_0:
829 ; GFX900:       ; %bb.0:
830 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
831 ; GFX900-NEXT:    ;;#ASMSTART
832 ; GFX900-NEXT:    ; def v[0:7]
833 ; GFX900-NEXT:    ;;#ASMEND
834 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
835 ; GFX900-NEXT:    v_mov_b32_e32 v4, v0
836 ; GFX900-NEXT:    v_mov_b32_e32 v5, v1
837 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
838 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
839 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
841 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_0:
842 ; GFX90A:       ; %bb.0:
843 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
844 ; GFX90A-NEXT:    ;;#ASMSTART
845 ; GFX90A-NEXT:    ; def v[0:7]
846 ; GFX90A-NEXT:    ;;#ASMEND
847 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
848 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
849 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
850 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
851 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
852 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
854 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_0:
855 ; GFX940:       ; %bb.0:
856 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857 ; GFX940-NEXT:    ;;#ASMSTART
858 ; GFX940-NEXT:    ; def v[0:7]
859 ; GFX940-NEXT:    ;;#ASMEND
860 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
861 ; GFX940-NEXT:    v_mov_b32_e32 v4, v0
862 ; GFX940-NEXT:    v_mov_b32_e32 v5, v1
863 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
864 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
865 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
866   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
867   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 0>
868   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
869   ret void
872 define void @v_shuffle_v2p0_v4p0__2_0(ptr addrspace(1) inreg %ptr) {
873 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_0:
874 ; GFX900:       ; %bb.0:
875 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
876 ; GFX900-NEXT:    ;;#ASMSTART
877 ; GFX900-NEXT:    ; def v[0:7]
878 ; GFX900-NEXT:    ;;#ASMEND
879 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
880 ; GFX900-NEXT:    v_mov_b32_e32 v6, v0
881 ; GFX900-NEXT:    v_mov_b32_e32 v7, v1
882 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
883 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
884 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
886 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_0:
887 ; GFX90A:       ; %bb.0:
888 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
889 ; GFX90A-NEXT:    ;;#ASMSTART
890 ; GFX90A-NEXT:    ; def v[0:7]
891 ; GFX90A-NEXT:    ;;#ASMEND
892 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
893 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
894 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
895 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
896 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
897 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
899 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_0:
900 ; GFX940:       ; %bb.0:
901 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
902 ; GFX940-NEXT:    ;;#ASMSTART
903 ; GFX940-NEXT:    ; def v[0:7]
904 ; GFX940-NEXT:    ;;#ASMEND
905 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
906 ; GFX940-NEXT:    v_mov_b32_e32 v6, v0
907 ; GFX940-NEXT:    v_mov_b32_e32 v7, v1
908 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
909 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
910 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
911   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
912   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 0>
913   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
914   ret void
917 define void @v_shuffle_v2p0_v4p0__3_0(ptr addrspace(1) inreg %ptr) {
918 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_0:
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:7]
923 ; GFX900-NEXT:    ;;#ASMEND
924 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
925 ; GFX900-NEXT:    v_mov_b32_e32 v2, v6
926 ; GFX900-NEXT:    v_mov_b32_e32 v3, v7
927 ; GFX900-NEXT:    v_mov_b32_e32 v4, v0
928 ; GFX900-NEXT:    v_mov_b32_e32 v5, v1
929 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
930 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
931 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
933 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_0:
934 ; GFX90A:       ; %bb.0:
935 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
936 ; GFX90A-NEXT:    ;;#ASMSTART
937 ; GFX90A-NEXT:    ; def v[0:7]
938 ; GFX90A-NEXT:    ;;#ASMEND
939 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
940 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
941 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
942 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
943 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
944 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
945 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
946 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
948 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_0:
949 ; GFX940:       ; %bb.0:
950 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
951 ; GFX940-NEXT:    ;;#ASMSTART
952 ; GFX940-NEXT:    ; def v[0:7]
953 ; GFX940-NEXT:    ;;#ASMEND
954 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
955 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
956 ; GFX940-NEXT:    v_mov_b32_e32 v3, v7
957 ; GFX940-NEXT:    v_mov_b32_e32 v4, v0
958 ; GFX940-NEXT:    v_mov_b32_e32 v5, v1
959 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
960 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
961 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
962   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
963   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 0>
964   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
965   ret void
968 define void @v_shuffle_v2p0_v4p0__4_0(ptr addrspace(1) inreg %ptr) {
969 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_0:
970 ; GFX900:       ; %bb.0:
971 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
972 ; GFX900-NEXT:    ;;#ASMSTART
973 ; GFX900-NEXT:    ; def v[0:7]
974 ; GFX900-NEXT:    ;;#ASMEND
975 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
976 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
977 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
978 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
979 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
980 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
982 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_0:
983 ; GFX90A:       ; %bb.0:
984 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
985 ; GFX90A-NEXT:    ;;#ASMSTART
986 ; GFX90A-NEXT:    ; def v[0:7]
987 ; GFX90A-NEXT:    ;;#ASMEND
988 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
989 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
990 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
991 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
992 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
993 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
995 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_0:
996 ; GFX940:       ; %bb.0:
997 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
998 ; GFX940-NEXT:    ;;#ASMSTART
999 ; GFX940-NEXT:    ; def v[0:7]
1000 ; GFX940-NEXT:    ;;#ASMEND
1001 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1002 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
1003 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
1004 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
1005 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1006 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1007   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1008   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 0>
1009   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1010   ret void
1013 define void @v_shuffle_v2p0_v4p0__5_0(ptr addrspace(1) inreg %ptr) {
1014 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_0:
1015 ; GFX900:       ; %bb.0:
1016 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1017 ; GFX900-NEXT:    ;;#ASMSTART
1018 ; GFX900-NEXT:    ; def v[0:7]
1019 ; GFX900-NEXT:    ;;#ASMEND
1020 ; GFX900-NEXT:    ;;#ASMSTART
1021 ; GFX900-NEXT:    ; def v[2:9]
1022 ; GFX900-NEXT:    ;;#ASMEND
1023 ; GFX900-NEXT:    v_mov_b32_e32 v10, 0
1024 ; GFX900-NEXT:    v_mov_b32_e32 v6, v0
1025 ; GFX900-NEXT:    v_mov_b32_e32 v7, v1
1026 ; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]
1027 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1028 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1030 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_0:
1031 ; GFX90A:       ; %bb.0:
1032 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1033 ; GFX90A-NEXT:    ;;#ASMSTART
1034 ; GFX90A-NEXT:    ; def v[0:7]
1035 ; GFX90A-NEXT:    ;;#ASMEND
1036 ; GFX90A-NEXT:    ;;#ASMSTART
1037 ; GFX90A-NEXT:    ; def v[2:9]
1038 ; GFX90A-NEXT:    ;;#ASMEND
1039 ; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
1040 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
1041 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
1042 ; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]
1043 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1044 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1046 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_0:
1047 ; GFX940:       ; %bb.0:
1048 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1049 ; GFX940-NEXT:    ;;#ASMSTART
1050 ; GFX940-NEXT:    ; def v[0:7]
1051 ; GFX940-NEXT:    ;;#ASMEND
1052 ; GFX940-NEXT:    v_mov_b32_e32 v10, 0
1053 ; GFX940-NEXT:    ;;#ASMSTART
1054 ; GFX940-NEXT:    ; def v[2:9]
1055 ; GFX940-NEXT:    ;;#ASMEND
1056 ; GFX940-NEXT:    s_nop 0
1057 ; GFX940-NEXT:    v_mov_b32_e32 v6, v0
1058 ; GFX940-NEXT:    v_mov_b32_e32 v7, v1
1059 ; GFX940-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1] sc0 sc1
1060 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1061 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1062   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1063   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
1064   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 0>
1065   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1066   ret void
1069 define void @v_shuffle_v2p0_v4p0__6_0(ptr addrspace(1) inreg %ptr) {
1070 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_0:
1071 ; GFX900:       ; %bb.0:
1072 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1073 ; GFX900-NEXT:    ;;#ASMSTART
1074 ; GFX900-NEXT:    ; def v[0:7]
1075 ; GFX900-NEXT:    ;;#ASMEND
1076 ; GFX900-NEXT:    ;;#ASMSTART
1077 ; GFX900-NEXT:    ; def v[2:9]
1078 ; GFX900-NEXT:    ;;#ASMEND
1079 ; GFX900-NEXT:    v_mov_b32_e32 v10, 0
1080 ; GFX900-NEXT:    v_mov_b32_e32 v8, v0
1081 ; GFX900-NEXT:    v_mov_b32_e32 v9, v1
1082 ; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]
1083 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1084 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1086 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_0:
1087 ; GFX90A:       ; %bb.0:
1088 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1089 ; GFX90A-NEXT:    ;;#ASMSTART
1090 ; GFX90A-NEXT:    ; def v[0:7]
1091 ; GFX90A-NEXT:    ;;#ASMEND
1092 ; GFX90A-NEXT:    ;;#ASMSTART
1093 ; GFX90A-NEXT:    ; def v[2:9]
1094 ; GFX90A-NEXT:    ;;#ASMEND
1095 ; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
1096 ; GFX90A-NEXT:    v_mov_b32_e32 v8, v0
1097 ; GFX90A-NEXT:    v_mov_b32_e32 v9, v1
1098 ; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]
1099 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1100 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1102 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_0:
1103 ; GFX940:       ; %bb.0:
1104 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1105 ; GFX940-NEXT:    ;;#ASMSTART
1106 ; GFX940-NEXT:    ; def v[0:7]
1107 ; GFX940-NEXT:    ;;#ASMEND
1108 ; GFX940-NEXT:    v_mov_b32_e32 v10, 0
1109 ; GFX940-NEXT:    ;;#ASMSTART
1110 ; GFX940-NEXT:    ; def v[2:9]
1111 ; GFX940-NEXT:    ;;#ASMEND
1112 ; GFX940-NEXT:    s_nop 0
1113 ; GFX940-NEXT:    v_mov_b32_e32 v8, v0
1114 ; GFX940-NEXT:    v_mov_b32_e32 v9, v1
1115 ; GFX940-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] sc0 sc1
1116 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1117 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1118   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1119   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
1120   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 0>
1121   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1122   ret void
1125 define void @v_shuffle_v2p0_v4p0__u_1(ptr addrspace(1) inreg %ptr) {
1126 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_1:
1127 ; GFX900:       ; %bb.0:
1128 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1129 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1130 ; GFX900-NEXT:    ;;#ASMSTART
1131 ; GFX900-NEXT:    ; def v[0:7]
1132 ; GFX900-NEXT:    ;;#ASMEND
1133 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1134 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1135 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1137 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_1:
1138 ; GFX90A:       ; %bb.0:
1139 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1140 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1141 ; GFX90A-NEXT:    ;;#ASMSTART
1142 ; GFX90A-NEXT:    ; def v[0:7]
1143 ; GFX90A-NEXT:    ;;#ASMEND
1144 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1145 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1146 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1148 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_1:
1149 ; GFX940:       ; %bb.0:
1150 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1151 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1152 ; GFX940-NEXT:    ;;#ASMSTART
1153 ; GFX940-NEXT:    ; def v[0:7]
1154 ; GFX940-NEXT:    ;;#ASMEND
1155 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
1156 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1157 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1158   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1159   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 1>
1160   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1161   ret void
1164 define void @v_shuffle_v2p0_v4p0__0_1(ptr addrspace(1) inreg %ptr) {
1165 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_1:
1166 ; GFX900:       ; %bb.0:
1167 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1168 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1169 ; GFX900-NEXT:    ;;#ASMSTART
1170 ; GFX900-NEXT:    ; def v[0:7]
1171 ; GFX900-NEXT:    ;;#ASMEND
1172 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1173 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1174 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1176 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_1:
1177 ; GFX90A:       ; %bb.0:
1178 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1179 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1180 ; GFX90A-NEXT:    ;;#ASMSTART
1181 ; GFX90A-NEXT:    ; def v[0:7]
1182 ; GFX90A-NEXT:    ;;#ASMEND
1183 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1184 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1185 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1187 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_1:
1188 ; GFX940:       ; %bb.0:
1189 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1190 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1191 ; GFX940-NEXT:    ;;#ASMSTART
1192 ; GFX940-NEXT:    ; def v[0:7]
1193 ; GFX940-NEXT:    ;;#ASMEND
1194 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
1195 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1196 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1197   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1198   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 1>
1199   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1200   ret void
1203 define void @v_shuffle_v2p0_v4p0__1_1(ptr addrspace(1) inreg %ptr) {
1204 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_1:
1205 ; GFX900:       ; %bb.0:
1206 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1207 ; GFX900-NEXT:    ;;#ASMSTART
1208 ; GFX900-NEXT:    ; def v[0:7]
1209 ; GFX900-NEXT:    ;;#ASMEND
1210 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1211 ; GFX900-NEXT:    v_mov_b32_e32 v4, v2
1212 ; GFX900-NEXT:    v_mov_b32_e32 v5, v3
1213 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1214 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1215 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1217 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_1:
1218 ; GFX90A:       ; %bb.0:
1219 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1220 ; GFX90A-NEXT:    ;;#ASMSTART
1221 ; GFX90A-NEXT:    ; def v[0:7]
1222 ; GFX90A-NEXT:    ;;#ASMEND
1223 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1224 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
1225 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
1226 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1227 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1228 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1230 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_1:
1231 ; GFX940:       ; %bb.0:
1232 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1233 ; GFX940-NEXT:    ;;#ASMSTART
1234 ; GFX940-NEXT:    ; def v[0:7]
1235 ; GFX940-NEXT:    ;;#ASMEND
1236 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1237 ; GFX940-NEXT:    v_mov_b32_e32 v4, v2
1238 ; GFX940-NEXT:    v_mov_b32_e32 v5, v3
1239 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
1240 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1241 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1242   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1243   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 1>
1244   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1245   ret void
1248 define void @v_shuffle_v2p0_v4p0__2_1(ptr addrspace(1) inreg %ptr) {
1249 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_1:
1250 ; GFX900:       ; %bb.0:
1251 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1252 ; GFX900-NEXT:    ;;#ASMSTART
1253 ; GFX900-NEXT:    ; def v[0:7]
1254 ; GFX900-NEXT:    ;;#ASMEND
1255 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1256 ; GFX900-NEXT:    v_mov_b32_e32 v6, v2
1257 ; GFX900-NEXT:    v_mov_b32_e32 v7, v3
1258 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1259 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1260 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1262 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_1:
1263 ; GFX90A:       ; %bb.0:
1264 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1265 ; GFX90A-NEXT:    ;;#ASMSTART
1266 ; GFX90A-NEXT:    ; def v[0:7]
1267 ; GFX90A-NEXT:    ;;#ASMEND
1268 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1269 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
1270 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
1271 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1272 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1273 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1275 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_1:
1276 ; GFX940:       ; %bb.0:
1277 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1278 ; GFX940-NEXT:    ;;#ASMSTART
1279 ; GFX940-NEXT:    ; def v[0:7]
1280 ; GFX940-NEXT:    ;;#ASMEND
1281 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1282 ; GFX940-NEXT:    v_mov_b32_e32 v6, v2
1283 ; GFX940-NEXT:    v_mov_b32_e32 v7, v3
1284 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
1285 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1286 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1287   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1288   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 1>
1289   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1290   ret void
1293 define void @v_shuffle_v2p0_v4p0__3_1(ptr addrspace(1) inreg %ptr) {
1294 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_1:
1295 ; GFX900:       ; %bb.0:
1296 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1297 ; GFX900-NEXT:    ;;#ASMSTART
1298 ; GFX900-NEXT:    ; def v[0:7]
1299 ; GFX900-NEXT:    ;;#ASMEND
1300 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1301 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
1302 ; GFX900-NEXT:    v_mov_b32_e32 v1, v7
1303 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1304 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1305 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1307 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_1:
1308 ; GFX90A:       ; %bb.0:
1309 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1310 ; GFX90A-NEXT:    ;;#ASMSTART
1311 ; GFX90A-NEXT:    ; def v[0:7]
1312 ; GFX90A-NEXT:    ;;#ASMEND
1313 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1314 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
1315 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
1316 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1317 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1318 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1320 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_1:
1321 ; GFX940:       ; %bb.0:
1322 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1323 ; GFX940-NEXT:    ;;#ASMSTART
1324 ; GFX940-NEXT:    ; def v[0:7]
1325 ; GFX940-NEXT:    ;;#ASMEND
1326 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1327 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
1328 ; GFX940-NEXT:    v_mov_b32_e32 v1, v7
1329 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
1330 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1331 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1332   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1333   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 1>
1334   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1335   ret void
1338 define void @v_shuffle_v2p0_v4p0__4_1(ptr addrspace(1) inreg %ptr) {
1339 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_1:
1340 ; GFX900:       ; %bb.0:
1341 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1342 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1343 ; GFX900-NEXT:    ;;#ASMSTART
1344 ; GFX900-NEXT:    ; def v[0:7]
1345 ; GFX900-NEXT:    ;;#ASMEND
1346 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1347 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1348 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1350 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_1:
1351 ; GFX90A:       ; %bb.0:
1352 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1353 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1354 ; GFX90A-NEXT:    ;;#ASMSTART
1355 ; GFX90A-NEXT:    ; def v[0:7]
1356 ; GFX90A-NEXT:    ;;#ASMEND
1357 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1358 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1359 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1361 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_1:
1362 ; GFX940:       ; %bb.0:
1363 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1364 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1365 ; GFX940-NEXT:    ;;#ASMSTART
1366 ; GFX940-NEXT:    ; def v[0:7]
1367 ; GFX940-NEXT:    ;;#ASMEND
1368 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
1369 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1370 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1371   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1372   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 1>
1373   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1374   ret void
1377 define void @v_shuffle_v2p0_v4p0__5_1(ptr addrspace(1) inreg %ptr) {
1378 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_1:
1379 ; GFX900:       ; %bb.0:
1380 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1381 ; GFX900-NEXT:    ;;#ASMSTART
1382 ; GFX900-NEXT:    ; def v[0:7]
1383 ; GFX900-NEXT:    ;;#ASMEND
1384 ; GFX900-NEXT:    ;;#ASMSTART
1385 ; GFX900-NEXT:    ; def v[4:11]
1386 ; GFX900-NEXT:    ;;#ASMEND
1387 ; GFX900-NEXT:    v_mov_b32_e32 v12, 0
1388 ; GFX900-NEXT:    v_mov_b32_e32 v8, v2
1389 ; GFX900-NEXT:    v_mov_b32_e32 v9, v3
1390 ; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17]
1391 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1392 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1394 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_1:
1395 ; GFX90A:       ; %bb.0:
1396 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1397 ; GFX90A-NEXT:    ;;#ASMSTART
1398 ; GFX90A-NEXT:    ; def v[0:7]
1399 ; GFX90A-NEXT:    ;;#ASMEND
1400 ; GFX90A-NEXT:    ;;#ASMSTART
1401 ; GFX90A-NEXT:    ; def v[4:11]
1402 ; GFX90A-NEXT:    ;;#ASMEND
1403 ; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
1404 ; GFX90A-NEXT:    v_mov_b32_e32 v8, v2
1405 ; GFX90A-NEXT:    v_mov_b32_e32 v9, v3
1406 ; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17]
1407 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1408 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1410 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_1:
1411 ; GFX940:       ; %bb.0:
1412 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1413 ; GFX940-NEXT:    ;;#ASMSTART
1414 ; GFX940-NEXT:    ; def v[0:7]
1415 ; GFX940-NEXT:    ;;#ASMEND
1416 ; GFX940-NEXT:    v_mov_b32_e32 v12, 0
1417 ; GFX940-NEXT:    ;;#ASMSTART
1418 ; GFX940-NEXT:    ; def v[4:11]
1419 ; GFX940-NEXT:    ;;#ASMEND
1420 ; GFX940-NEXT:    s_nop 0
1421 ; GFX940-NEXT:    v_mov_b32_e32 v8, v2
1422 ; GFX940-NEXT:    v_mov_b32_e32 v9, v3
1423 ; GFX940-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] sc0 sc1
1424 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1425 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1426   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1427   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
1428   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 1>
1429   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1430   ret void
1433 define void @v_shuffle_v2p0_v4p0__6_1(ptr addrspace(1) inreg %ptr) {
1434 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_1:
1435 ; GFX900:       ; %bb.0:
1436 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1437 ; GFX900-NEXT:    ;;#ASMSTART
1438 ; GFX900-NEXT:    ; def v[0:7]
1439 ; GFX900-NEXT:    ;;#ASMEND
1440 ; GFX900-NEXT:    ;;#ASMSTART
1441 ; GFX900-NEXT:    ; def v[4:11]
1442 ; GFX900-NEXT:    ;;#ASMEND
1443 ; GFX900-NEXT:    v_mov_b32_e32 v12, 0
1444 ; GFX900-NEXT:    v_mov_b32_e32 v10, v2
1445 ; GFX900-NEXT:    v_mov_b32_e32 v11, v3
1446 ; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
1447 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1448 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1450 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_1:
1451 ; GFX90A:       ; %bb.0:
1452 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1453 ; GFX90A-NEXT:    ;;#ASMSTART
1454 ; GFX90A-NEXT:    ; def v[0:7]
1455 ; GFX90A-NEXT:    ;;#ASMEND
1456 ; GFX90A-NEXT:    ;;#ASMSTART
1457 ; GFX90A-NEXT:    ; def v[4:11]
1458 ; GFX90A-NEXT:    ;;#ASMEND
1459 ; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
1460 ; GFX90A-NEXT:    v_mov_b32_e32 v10, v2
1461 ; GFX90A-NEXT:    v_mov_b32_e32 v11, v3
1462 ; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]
1463 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1464 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1466 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_1:
1467 ; GFX940:       ; %bb.0:
1468 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1469 ; GFX940-NEXT:    ;;#ASMSTART
1470 ; GFX940-NEXT:    ; def v[0:7]
1471 ; GFX940-NEXT:    ;;#ASMEND
1472 ; GFX940-NEXT:    v_mov_b32_e32 v12, 0
1473 ; GFX940-NEXT:    ;;#ASMSTART
1474 ; GFX940-NEXT:    ; def v[4:11]
1475 ; GFX940-NEXT:    ;;#ASMEND
1476 ; GFX940-NEXT:    s_nop 0
1477 ; GFX940-NEXT:    v_mov_b32_e32 v10, v2
1478 ; GFX940-NEXT:    v_mov_b32_e32 v11, v3
1479 ; GFX940-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] sc0 sc1
1480 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1481 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1482   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1483   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
1484   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 1>
1485   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1486   ret void
1489 define void @v_shuffle_v2p0_v4p0__u_2(ptr addrspace(1) inreg %ptr) {
1490 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_2:
1491 ; GFX900:       ; %bb.0:
1492 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1493 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1494 ; GFX900-NEXT:    ;;#ASMSTART
1495 ; GFX900-NEXT:    ; def v[0:7]
1496 ; GFX900-NEXT:    ;;#ASMEND
1497 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1498 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1499 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1501 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_2:
1502 ; GFX90A:       ; %bb.0:
1503 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1504 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1505 ; GFX90A-NEXT:    ;;#ASMSTART
1506 ; GFX90A-NEXT:    ; def v[0:7]
1507 ; GFX90A-NEXT:    ;;#ASMEND
1508 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1509 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1510 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1512 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_2:
1513 ; GFX940:       ; %bb.0:
1514 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1515 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1516 ; GFX940-NEXT:    ;;#ASMSTART
1517 ; GFX940-NEXT:    ; def v[0:7]
1518 ; GFX940-NEXT:    ;;#ASMEND
1519 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
1520 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1521 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1522   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1523   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 2>
1524   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1525   ret void
1528 define void @v_shuffle_v2p0_v4p0__0_2(ptr addrspace(1) inreg %ptr) {
1529 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_2:
1530 ; GFX900:       ; %bb.0:
1531 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1532 ; GFX900-NEXT:    ;;#ASMSTART
1533 ; GFX900-NEXT:    ; def v[0:7]
1534 ; GFX900-NEXT:    ;;#ASMEND
1535 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1536 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
1537 ; GFX900-NEXT:    v_mov_b32_e32 v3, v5
1538 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1539 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1540 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1542 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_2:
1543 ; GFX90A:       ; %bb.0:
1544 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1545 ; GFX90A-NEXT:    ;;#ASMSTART
1546 ; GFX90A-NEXT:    ; def v[0:7]
1547 ; GFX90A-NEXT:    ;;#ASMEND
1548 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1549 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1550 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
1551 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1552 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1553 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1555 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_2:
1556 ; GFX940:       ; %bb.0:
1557 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1558 ; GFX940-NEXT:    ;;#ASMSTART
1559 ; GFX940-NEXT:    ; def v[0:7]
1560 ; GFX940-NEXT:    ;;#ASMEND
1561 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1562 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1563 ; GFX940-NEXT:    v_mov_b32_e32 v3, v5
1564 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
1565 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1566 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1567   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1568   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 2>
1569   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1570   ret void
1573 define void @v_shuffle_v2p0_v4p0__1_2(ptr addrspace(1) inreg %ptr) {
1574 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_2:
1575 ; GFX900:       ; %bb.0:
1576 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1577 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1578 ; GFX900-NEXT:    ;;#ASMSTART
1579 ; GFX900-NEXT:    ; def v[0:7]
1580 ; GFX900-NEXT:    ;;#ASMEND
1581 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1582 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1583 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1585 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_2:
1586 ; GFX90A:       ; %bb.0:
1587 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1588 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1589 ; GFX90A-NEXT:    ;;#ASMSTART
1590 ; GFX90A-NEXT:    ; def v[0:7]
1591 ; GFX90A-NEXT:    ;;#ASMEND
1592 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1593 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1594 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1596 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_2:
1597 ; GFX940:       ; %bb.0:
1598 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1599 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1600 ; GFX940-NEXT:    ;;#ASMSTART
1601 ; GFX940-NEXT:    ; def v[0:7]
1602 ; GFX940-NEXT:    ;;#ASMEND
1603 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
1604 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1605 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1606   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1607   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 2>
1608   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1609   ret void
1612 define void @v_shuffle_v2p0_v4p0__2_2(ptr addrspace(1) inreg %ptr) {
1613 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_2:
1614 ; GFX900:       ; %bb.0:
1615 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1616 ; GFX900-NEXT:    ;;#ASMSTART
1617 ; GFX900-NEXT:    ; def v[0:7]
1618 ; GFX900-NEXT:    ;;#ASMEND
1619 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1620 ; GFX900-NEXT:    v_mov_b32_e32 v6, v4
1621 ; GFX900-NEXT:    v_mov_b32_e32 v7, v5
1622 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1623 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1624 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1626 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_2:
1627 ; GFX90A:       ; %bb.0:
1628 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1629 ; GFX90A-NEXT:    ;;#ASMSTART
1630 ; GFX90A-NEXT:    ; def v[0:7]
1631 ; GFX90A-NEXT:    ;;#ASMEND
1632 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1633 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v4
1634 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v5
1635 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1636 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1637 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1639 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_2:
1640 ; GFX940:       ; %bb.0:
1641 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1642 ; GFX940-NEXT:    ;;#ASMSTART
1643 ; GFX940-NEXT:    ; def v[0:7]
1644 ; GFX940-NEXT:    ;;#ASMEND
1645 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1646 ; GFX940-NEXT:    v_mov_b32_e32 v6, v4
1647 ; GFX940-NEXT:    v_mov_b32_e32 v7, v5
1648 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
1649 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1650 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1651   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1652   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 2>
1653   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1654   ret void
1657 define void @v_shuffle_v2p0_v4p0__3_2(ptr addrspace(1) inreg %ptr) {
1658 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_2:
1659 ; GFX900:       ; %bb.0:
1660 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1661 ; GFX900-NEXT:    ;;#ASMSTART
1662 ; GFX900-NEXT:    ; def v[0:7]
1663 ; GFX900-NEXT:    ;;#ASMEND
1664 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1665 ; GFX900-NEXT:    v_mov_b32_e32 v2, v6
1666 ; GFX900-NEXT:    v_mov_b32_e32 v3, v7
1667 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1668 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1669 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1671 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_2:
1672 ; GFX90A:       ; %bb.0:
1673 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1674 ; GFX90A-NEXT:    ;;#ASMSTART
1675 ; GFX90A-NEXT:    ; def v[0:7]
1676 ; GFX90A-NEXT:    ;;#ASMEND
1677 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1678 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
1679 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
1680 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1681 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1682 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1684 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_2:
1685 ; GFX940:       ; %bb.0:
1686 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1687 ; GFX940-NEXT:    ;;#ASMSTART
1688 ; GFX940-NEXT:    ; def v[0:7]
1689 ; GFX940-NEXT:    ;;#ASMEND
1690 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1691 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
1692 ; GFX940-NEXT:    v_mov_b32_e32 v3, v7
1693 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
1694 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1695 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1696   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1697   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 2>
1698   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1699   ret void
1702 define void @v_shuffle_v2p0_v4p0__4_2(ptr addrspace(1) inreg %ptr) {
1703 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_2:
1704 ; GFX900:       ; %bb.0:
1705 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1706 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1707 ; GFX900-NEXT:    ;;#ASMSTART
1708 ; GFX900-NEXT:    ; def v[0:7]
1709 ; GFX900-NEXT:    ;;#ASMEND
1710 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1711 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1712 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1714 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_2:
1715 ; GFX90A:       ; %bb.0:
1716 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1717 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1718 ; GFX90A-NEXT:    ;;#ASMSTART
1719 ; GFX90A-NEXT:    ; def v[0:7]
1720 ; GFX90A-NEXT:    ;;#ASMEND
1721 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1722 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1723 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1725 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_2:
1726 ; GFX940:       ; %bb.0:
1727 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1728 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1729 ; GFX940-NEXT:    ;;#ASMSTART
1730 ; GFX940-NEXT:    ; def v[0:7]
1731 ; GFX940-NEXT:    ;;#ASMEND
1732 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
1733 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1734 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1735   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1736   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 2>
1737   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1738   ret void
1741 define void @v_shuffle_v2p0_v4p0__5_2(ptr addrspace(1) inreg %ptr) {
1742 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_2:
1743 ; GFX900:       ; %bb.0:
1744 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1745 ; GFX900-NEXT:    ;;#ASMSTART
1746 ; GFX900-NEXT:    ; def v[0:7]
1747 ; GFX900-NEXT:    ;;#ASMEND
1748 ; GFX900-NEXT:    ;;#ASMSTART
1749 ; GFX900-NEXT:    ; def v[6:13]
1750 ; GFX900-NEXT:    ;;#ASMEND
1751 ; GFX900-NEXT:    v_mov_b32_e32 v14, 0
1752 ; GFX900-NEXT:    v_mov_b32_e32 v10, v4
1753 ; GFX900-NEXT:    v_mov_b32_e32 v11, v5
1754 ; GFX900-NEXT:    global_store_dwordx4 v14, v[8:11], s[16:17]
1755 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1756 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1758 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_2:
1759 ; GFX90A:       ; %bb.0:
1760 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1761 ; GFX90A-NEXT:    ;;#ASMSTART
1762 ; GFX90A-NEXT:    ; def v[0:7]
1763 ; GFX90A-NEXT:    ;;#ASMEND
1764 ; GFX90A-NEXT:    ;;#ASMSTART
1765 ; GFX90A-NEXT:    ; def v[6:13]
1766 ; GFX90A-NEXT:    ;;#ASMEND
1767 ; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
1768 ; GFX90A-NEXT:    v_mov_b32_e32 v10, v4
1769 ; GFX90A-NEXT:    v_mov_b32_e32 v11, v5
1770 ; GFX90A-NEXT:    global_store_dwordx4 v14, v[8:11], s[16:17]
1771 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1772 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1774 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_2:
1775 ; GFX940:       ; %bb.0:
1776 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1777 ; GFX940-NEXT:    ;;#ASMSTART
1778 ; GFX940-NEXT:    ; def v[0:7]
1779 ; GFX940-NEXT:    ;;#ASMEND
1780 ; GFX940-NEXT:    v_mov_b32_e32 v14, 0
1781 ; GFX940-NEXT:    ;;#ASMSTART
1782 ; GFX940-NEXT:    ; def v[6:13]
1783 ; GFX940-NEXT:    ;;#ASMEND
1784 ; GFX940-NEXT:    s_nop 0
1785 ; GFX940-NEXT:    v_mov_b32_e32 v10, v4
1786 ; GFX940-NEXT:    v_mov_b32_e32 v11, v5
1787 ; GFX940-NEXT:    global_store_dwordx4 v14, v[8:11], s[0:1] sc0 sc1
1788 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1789 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1790   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1791   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
1792   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 2>
1793   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1794   ret void
1797 define void @v_shuffle_v2p0_v4p0__6_2(ptr addrspace(1) inreg %ptr) {
1798 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_2:
1799 ; GFX900:       ; %bb.0:
1800 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1801 ; GFX900-NEXT:    ;;#ASMSTART
1802 ; GFX900-NEXT:    ; def v[0:7]
1803 ; GFX900-NEXT:    ;;#ASMEND
1804 ; GFX900-NEXT:    ;;#ASMSTART
1805 ; GFX900-NEXT:    ; def v[6:13]
1806 ; GFX900-NEXT:    ;;#ASMEND
1807 ; GFX900-NEXT:    v_mov_b32_e32 v14, 0
1808 ; GFX900-NEXT:    v_mov_b32_e32 v12, v4
1809 ; GFX900-NEXT:    v_mov_b32_e32 v13, v5
1810 ; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]
1811 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1812 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1814 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_2:
1815 ; GFX90A:       ; %bb.0:
1816 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1817 ; GFX90A-NEXT:    ;;#ASMSTART
1818 ; GFX90A-NEXT:    ; def v[0:7]
1819 ; GFX90A-NEXT:    ;;#ASMEND
1820 ; GFX90A-NEXT:    ;;#ASMSTART
1821 ; GFX90A-NEXT:    ; def v[6:13]
1822 ; GFX90A-NEXT:    ;;#ASMEND
1823 ; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
1824 ; GFX90A-NEXT:    v_mov_b32_e32 v12, v4
1825 ; GFX90A-NEXT:    v_mov_b32_e32 v13, v5
1826 ; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]
1827 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1828 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1830 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_2:
1831 ; GFX940:       ; %bb.0:
1832 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1833 ; GFX940-NEXT:    ;;#ASMSTART
1834 ; GFX940-NEXT:    ; def v[0:7]
1835 ; GFX940-NEXT:    ;;#ASMEND
1836 ; GFX940-NEXT:    v_mov_b32_e32 v14, 0
1837 ; GFX940-NEXT:    ;;#ASMSTART
1838 ; GFX940-NEXT:    ; def v[6:13]
1839 ; GFX940-NEXT:    ;;#ASMEND
1840 ; GFX940-NEXT:    s_nop 0
1841 ; GFX940-NEXT:    v_mov_b32_e32 v12, v4
1842 ; GFX940-NEXT:    v_mov_b32_e32 v13, v5
1843 ; GFX940-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1] sc0 sc1
1844 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1845 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1846   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1847   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
1848   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 2>
1849   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1850   ret void
1853 define void @v_shuffle_v2p0_v4p0__u_3(ptr addrspace(1) inreg %ptr) {
1854 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_3:
1855 ; GFX900:       ; %bb.0:
1856 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1857 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1858 ; GFX900-NEXT:    ;;#ASMSTART
1859 ; GFX900-NEXT:    ; def v[0:7]
1860 ; GFX900-NEXT:    ;;#ASMEND
1861 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1862 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1863 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1865 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_3:
1866 ; GFX90A:       ; %bb.0:
1867 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1868 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1869 ; GFX90A-NEXT:    ;;#ASMSTART
1870 ; GFX90A-NEXT:    ; def v[0:7]
1871 ; GFX90A-NEXT:    ;;#ASMEND
1872 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1873 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1874 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1876 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_3:
1877 ; GFX940:       ; %bb.0:
1878 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1879 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1880 ; GFX940-NEXT:    ;;#ASMSTART
1881 ; GFX940-NEXT:    ; def v[0:7]
1882 ; GFX940-NEXT:    ;;#ASMEND
1883 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
1884 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1885 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1886   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1887   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 3>
1888   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1889   ret void
1892 define void @v_shuffle_v2p0_v4p0__0_3(ptr addrspace(1) inreg %ptr) {
1893 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_3:
1894 ; GFX900:       ; %bb.0:
1895 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1896 ; GFX900-NEXT:    ;;#ASMSTART
1897 ; GFX900-NEXT:    ; def v[0:7]
1898 ; GFX900-NEXT:    ;;#ASMEND
1899 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1900 ; GFX900-NEXT:    v_mov_b32_e32 v2, v6
1901 ; GFX900-NEXT:    v_mov_b32_e32 v3, v7
1902 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1903 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1904 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1906 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_3:
1907 ; GFX90A:       ; %bb.0:
1908 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1909 ; GFX90A-NEXT:    ;;#ASMSTART
1910 ; GFX90A-NEXT:    ; def v[0:7]
1911 ; GFX90A-NEXT:    ;;#ASMEND
1912 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1913 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
1914 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
1915 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
1916 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1917 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1919 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_3:
1920 ; GFX940:       ; %bb.0:
1921 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1922 ; GFX940-NEXT:    ;;#ASMSTART
1923 ; GFX940-NEXT:    ; def v[0:7]
1924 ; GFX940-NEXT:    ;;#ASMEND
1925 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1926 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
1927 ; GFX940-NEXT:    v_mov_b32_e32 v3, v7
1928 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
1929 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1930 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1931   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1932   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 3>
1933   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1934   ret void
1937 define void @v_shuffle_v2p0_v4p0__1_3(ptr addrspace(1) inreg %ptr) {
1938 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_3:
1939 ; GFX900:       ; %bb.0:
1940 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1941 ; GFX900-NEXT:    ;;#ASMSTART
1942 ; GFX900-NEXT:    ; def v[0:7]
1943 ; GFX900-NEXT:    ;;#ASMEND
1944 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1945 ; GFX900-NEXT:    v_mov_b32_e32 v4, v6
1946 ; GFX900-NEXT:    v_mov_b32_e32 v5, v7
1947 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1948 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1949 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1951 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_3:
1952 ; GFX90A:       ; %bb.0:
1953 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1954 ; GFX90A-NEXT:    ;;#ASMSTART
1955 ; GFX90A-NEXT:    ; def v[0:7]
1956 ; GFX90A-NEXT:    ;;#ASMEND
1957 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1958 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
1959 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
1960 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
1961 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1962 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1964 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_3:
1965 ; GFX940:       ; %bb.0:
1966 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1967 ; GFX940-NEXT:    ;;#ASMSTART
1968 ; GFX940-NEXT:    ; def v[0:7]
1969 ; GFX940-NEXT:    ;;#ASMEND
1970 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
1971 ; GFX940-NEXT:    v_mov_b32_e32 v4, v6
1972 ; GFX940-NEXT:    v_mov_b32_e32 v5, v7
1973 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
1974 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1975 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1976   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
1977   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 3>
1978   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
1979   ret void
1982 define void @v_shuffle_v2p0_v4p0__2_3(ptr addrspace(1) inreg %ptr) {
1983 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_3:
1984 ; GFX900:       ; %bb.0:
1985 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1986 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
1987 ; GFX900-NEXT:    ;;#ASMSTART
1988 ; GFX900-NEXT:    ; def v[0:7]
1989 ; GFX900-NEXT:    ;;#ASMEND
1990 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
1991 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1992 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1994 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_3:
1995 ; GFX90A:       ; %bb.0:
1996 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1997 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
1998 ; GFX90A-NEXT:    ;;#ASMSTART
1999 ; GFX90A-NEXT:    ; def v[0:7]
2000 ; GFX90A-NEXT:    ;;#ASMEND
2001 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2002 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2003 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2005 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_3:
2006 ; GFX940:       ; %bb.0:
2007 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2008 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2009 ; GFX940-NEXT:    ;;#ASMSTART
2010 ; GFX940-NEXT:    ; def v[0:7]
2011 ; GFX940-NEXT:    ;;#ASMEND
2012 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
2013 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2014 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2015   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2016   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 3>
2017   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2018   ret void
2021 define void @v_shuffle_v2p0_v4p0__3_3(ptr addrspace(1) inreg %ptr) {
2022 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_3:
2023 ; GFX900:       ; %bb.0:
2024 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2025 ; GFX900-NEXT:    ;;#ASMSTART
2026 ; GFX900-NEXT:    ; def v[0:7]
2027 ; GFX900-NEXT:    ;;#ASMEND
2028 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2029 ; GFX900-NEXT:    v_mov_b32_e32 v4, v6
2030 ; GFX900-NEXT:    v_mov_b32_e32 v5, v7
2031 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2032 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2033 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2035 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_3:
2036 ; GFX90A:       ; %bb.0:
2037 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2038 ; GFX90A-NEXT:    ;;#ASMSTART
2039 ; GFX90A-NEXT:    ; def v[0:7]
2040 ; GFX90A-NEXT:    ;;#ASMEND
2041 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2042 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
2043 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
2044 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2045 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2046 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2048 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_3:
2049 ; GFX940:       ; %bb.0:
2050 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2051 ; GFX940-NEXT:    ;;#ASMSTART
2052 ; GFX940-NEXT:    ; def v[0:7]
2053 ; GFX940-NEXT:    ;;#ASMEND
2054 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2055 ; GFX940-NEXT:    v_mov_b32_e32 v4, v6
2056 ; GFX940-NEXT:    v_mov_b32_e32 v5, v7
2057 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
2058 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2059 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2060   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2061   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 3>
2062   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2063   ret void
2066 define void @v_shuffle_v2p0_v4p0__4_3(ptr addrspace(1) inreg %ptr) {
2067 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_3:
2068 ; GFX900:       ; %bb.0:
2069 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2070 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2071 ; GFX900-NEXT:    ;;#ASMSTART
2072 ; GFX900-NEXT:    ; def v[0:7]
2073 ; GFX900-NEXT:    ;;#ASMEND
2074 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2075 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2076 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2078 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_3:
2079 ; GFX90A:       ; %bb.0:
2080 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2081 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2082 ; GFX90A-NEXT:    ;;#ASMSTART
2083 ; GFX90A-NEXT:    ; def v[0:7]
2084 ; GFX90A-NEXT:    ;;#ASMEND
2085 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2086 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2087 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2089 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_3:
2090 ; GFX940:       ; %bb.0:
2091 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2092 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2093 ; GFX940-NEXT:    ;;#ASMSTART
2094 ; GFX940-NEXT:    ; def v[0:7]
2095 ; GFX940-NEXT:    ;;#ASMEND
2096 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
2097 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2098 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2099   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2100   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 3>
2101   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2102   ret void
2105 define void @v_shuffle_v2p0_v4p0__5_3(ptr addrspace(1) inreg %ptr) {
2106 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_3:
2107 ; GFX900:       ; %bb.0:
2108 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2109 ; GFX900-NEXT:    ;;#ASMSTART
2110 ; GFX900-NEXT:    ; def v[8:15]
2111 ; GFX900-NEXT:    ;;#ASMEND
2112 ; GFX900-NEXT:    v_mov_b32_e32 v16, 0
2113 ; GFX900-NEXT:    ;;#ASMSTART
2114 ; GFX900-NEXT:    ; def v[0:7]
2115 ; GFX900-NEXT:    ;;#ASMEND
2116 ; GFX900-NEXT:    v_mov_b32_e32 v12, v6
2117 ; GFX900-NEXT:    v_mov_b32_e32 v13, v7
2118 ; GFX900-NEXT:    global_store_dwordx4 v16, v[10:13], s[16:17]
2119 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2120 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2122 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_3:
2123 ; GFX90A:       ; %bb.0:
2124 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2125 ; GFX90A-NEXT:    ;;#ASMSTART
2126 ; GFX90A-NEXT:    ; def v[8:15]
2127 ; GFX90A-NEXT:    ;;#ASMEND
2128 ; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
2129 ; GFX90A-NEXT:    ;;#ASMSTART
2130 ; GFX90A-NEXT:    ; def v[0:7]
2131 ; GFX90A-NEXT:    ;;#ASMEND
2132 ; GFX90A-NEXT:    v_mov_b32_e32 v12, v6
2133 ; GFX90A-NEXT:    v_mov_b32_e32 v13, v7
2134 ; GFX90A-NEXT:    global_store_dwordx4 v16, v[10:13], s[16:17]
2135 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2136 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2138 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_3:
2139 ; GFX940:       ; %bb.0:
2140 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2141 ; GFX940-NEXT:    ;;#ASMSTART
2142 ; GFX940-NEXT:    ; def v[8:15]
2143 ; GFX940-NEXT:    ;;#ASMEND
2144 ; GFX940-NEXT:    v_mov_b32_e32 v16, 0
2145 ; GFX940-NEXT:    ;;#ASMSTART
2146 ; GFX940-NEXT:    ; def v[0:7]
2147 ; GFX940-NEXT:    ;;#ASMEND
2148 ; GFX940-NEXT:    s_nop 0
2149 ; GFX940-NEXT:    v_mov_b32_e32 v12, v6
2150 ; GFX940-NEXT:    v_mov_b32_e32 v13, v7
2151 ; GFX940-NEXT:    global_store_dwordx4 v16, v[10:13], s[0:1] sc0 sc1
2152 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2153 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2154   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2155   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2156   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 3>
2157   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2158   ret void
2161 define void @v_shuffle_v2p0_v4p0__6_3(ptr addrspace(1) inreg %ptr) {
2162 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_3:
2163 ; GFX900:       ; %bb.0:
2164 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2165 ; GFX900-NEXT:    ;;#ASMSTART
2166 ; GFX900-NEXT:    ; def v[8:15]
2167 ; GFX900-NEXT:    ;;#ASMEND
2168 ; GFX900-NEXT:    v_mov_b32_e32 v16, 0
2169 ; GFX900-NEXT:    ;;#ASMSTART
2170 ; GFX900-NEXT:    ; def v[0:7]
2171 ; GFX900-NEXT:    ;;#ASMEND
2172 ; GFX900-NEXT:    v_mov_b32_e32 v14, v6
2173 ; GFX900-NEXT:    v_mov_b32_e32 v15, v7
2174 ; GFX900-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]
2175 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2176 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2178 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_3:
2179 ; GFX90A:       ; %bb.0:
2180 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2181 ; GFX90A-NEXT:    ;;#ASMSTART
2182 ; GFX90A-NEXT:    ; def v[8:15]
2183 ; GFX90A-NEXT:    ;;#ASMEND
2184 ; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
2185 ; GFX90A-NEXT:    ;;#ASMSTART
2186 ; GFX90A-NEXT:    ; def v[0:7]
2187 ; GFX90A-NEXT:    ;;#ASMEND
2188 ; GFX90A-NEXT:    v_mov_b32_e32 v14, v6
2189 ; GFX90A-NEXT:    v_mov_b32_e32 v15, v7
2190 ; GFX90A-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]
2191 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2192 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2194 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_3:
2195 ; GFX940:       ; %bb.0:
2196 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2197 ; GFX940-NEXT:    ;;#ASMSTART
2198 ; GFX940-NEXT:    ; def v[8:15]
2199 ; GFX940-NEXT:    ;;#ASMEND
2200 ; GFX940-NEXT:    v_mov_b32_e32 v16, 0
2201 ; GFX940-NEXT:    ;;#ASMSTART
2202 ; GFX940-NEXT:    ; def v[0:7]
2203 ; GFX940-NEXT:    ;;#ASMEND
2204 ; GFX940-NEXT:    s_nop 0
2205 ; GFX940-NEXT:    v_mov_b32_e32 v14, v6
2206 ; GFX940-NEXT:    v_mov_b32_e32 v15, v7
2207 ; GFX940-NEXT:    global_store_dwordx4 v16, v[12:15], s[0:1] sc0 sc1
2208 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2209 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2210   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2211   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2212   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 3>
2213   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2214   ret void
2217 define void @v_shuffle_v2p0_v4p0__u_4(ptr addrspace(1) inreg %ptr) {
2218 ; GFX9-LABEL: v_shuffle_v2p0_v4p0__u_4:
2219 ; GFX9:       ; %bb.0:
2220 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2221 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2222   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2223   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 4>
2224   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2225   ret void
2228 define void @v_shuffle_v2p0_v4p0__0_4(ptr addrspace(1) inreg %ptr) {
2229 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_4:
2230 ; GFX900:       ; %bb.0:
2231 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2232 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2233 ; GFX900-NEXT:    ;;#ASMSTART
2234 ; GFX900-NEXT:    ; def v[0:7]
2235 ; GFX900-NEXT:    ;;#ASMEND
2236 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2237 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2238 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2240 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_4:
2241 ; GFX90A:       ; %bb.0:
2242 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2243 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2244 ; GFX90A-NEXT:    ;;#ASMSTART
2245 ; GFX90A-NEXT:    ; def v[0:7]
2246 ; GFX90A-NEXT:    ;;#ASMEND
2247 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2248 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2249 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2251 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_4:
2252 ; GFX940:       ; %bb.0:
2253 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2254 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2255 ; GFX940-NEXT:    ;;#ASMSTART
2256 ; GFX940-NEXT:    ; def v[0:7]
2257 ; GFX940-NEXT:    ;;#ASMEND
2258 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
2259 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2260 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2261   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2262   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 4>
2263   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2264   ret void
2267 define void @v_shuffle_v2p0_v4p0__1_4(ptr addrspace(1) inreg %ptr) {
2268 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_4:
2269 ; GFX900:       ; %bb.0:
2270 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2271 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2272 ; GFX900-NEXT:    ;;#ASMSTART
2273 ; GFX900-NEXT:    ; def v[0:7]
2274 ; GFX900-NEXT:    ;;#ASMEND
2275 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2276 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2277 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2279 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_4:
2280 ; GFX90A:       ; %bb.0:
2281 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2282 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2283 ; GFX90A-NEXT:    ;;#ASMSTART
2284 ; GFX90A-NEXT:    ; def v[0:7]
2285 ; GFX90A-NEXT:    ;;#ASMEND
2286 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2287 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2288 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2290 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_4:
2291 ; GFX940:       ; %bb.0:
2292 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2293 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2294 ; GFX940-NEXT:    ;;#ASMSTART
2295 ; GFX940-NEXT:    ; def v[0:7]
2296 ; GFX940-NEXT:    ;;#ASMEND
2297 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
2298 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2299 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2300   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2301   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 4>
2302   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2303   ret void
2306 define void @v_shuffle_v2p0_v4p0__2_4(ptr addrspace(1) inreg %ptr) {
2307 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_4:
2308 ; GFX900:       ; %bb.0:
2309 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2310 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2311 ; GFX900-NEXT:    ;;#ASMSTART
2312 ; GFX900-NEXT:    ; def v[0:7]
2313 ; GFX900-NEXT:    ;;#ASMEND
2314 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2315 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2316 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2318 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_4:
2319 ; GFX90A:       ; %bb.0:
2320 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2321 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2322 ; GFX90A-NEXT:    ;;#ASMSTART
2323 ; GFX90A-NEXT:    ; def v[0:7]
2324 ; GFX90A-NEXT:    ;;#ASMEND
2325 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2326 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2327 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2329 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_4:
2330 ; GFX940:       ; %bb.0:
2331 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2332 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2333 ; GFX940-NEXT:    ;;#ASMSTART
2334 ; GFX940-NEXT:    ; def v[0:7]
2335 ; GFX940-NEXT:    ;;#ASMEND
2336 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
2337 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2338 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2339   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2340   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 4>
2341   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2342   ret void
2345 define void @v_shuffle_v2p0_v4p0__3_4(ptr addrspace(1) inreg %ptr) {
2346 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_4:
2347 ; GFX900:       ; %bb.0:
2348 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2349 ; GFX900-NEXT:    ;;#ASMSTART
2350 ; GFX900-NEXT:    ; def v[0:7]
2351 ; GFX900-NEXT:    ;;#ASMEND
2352 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2353 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
2354 ; GFX900-NEXT:    v_mov_b32_e32 v1, v7
2355 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2356 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2357 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2359 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_4:
2360 ; GFX90A:       ; %bb.0:
2361 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2362 ; GFX90A-NEXT:    ;;#ASMSTART
2363 ; GFX90A-NEXT:    ; def v[0:7]
2364 ; GFX90A-NEXT:    ;;#ASMEND
2365 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2366 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
2367 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
2368 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2369 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2370 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2372 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_4:
2373 ; GFX940:       ; %bb.0:
2374 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2375 ; GFX940-NEXT:    ;;#ASMSTART
2376 ; GFX940-NEXT:    ; def v[0:7]
2377 ; GFX940-NEXT:    ;;#ASMEND
2378 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2379 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
2380 ; GFX940-NEXT:    v_mov_b32_e32 v1, v7
2381 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
2382 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2383 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2384   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2385   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 4>
2386   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2387   ret void
2390 define void @v_shuffle_v2p0_v4p0__4_4(ptr addrspace(1) inreg %ptr) {
2391 ; GFX9-LABEL: v_shuffle_v2p0_v4p0__4_4:
2392 ; GFX9:       ; %bb.0:
2393 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2394 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2395   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2396   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 4>
2397   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2398   ret void
2401 define void @v_shuffle_v2p0_v4p0__5_4(ptr addrspace(1) inreg %ptr) {
2402 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_4:
2403 ; GFX900:       ; %bb.0:
2404 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2405 ; GFX900-NEXT:    ;;#ASMSTART
2406 ; GFX900-NEXT:    ; def v[0:7]
2407 ; GFX900-NEXT:    ;;#ASMEND
2408 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2409 ; GFX900-NEXT:    v_mov_b32_e32 v4, v0
2410 ; GFX900-NEXT:    v_mov_b32_e32 v5, v1
2411 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2412 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2413 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2415 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_4:
2416 ; GFX90A:       ; %bb.0:
2417 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2418 ; GFX90A-NEXT:    ;;#ASMSTART
2419 ; GFX90A-NEXT:    ; def v[0:7]
2420 ; GFX90A-NEXT:    ;;#ASMEND
2421 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2422 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
2423 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
2424 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2425 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2426 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2428 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_4:
2429 ; GFX940:       ; %bb.0:
2430 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2431 ; GFX940-NEXT:    ;;#ASMSTART
2432 ; GFX940-NEXT:    ; def v[0:7]
2433 ; GFX940-NEXT:    ;;#ASMEND
2434 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2435 ; GFX940-NEXT:    v_mov_b32_e32 v4, v0
2436 ; GFX940-NEXT:    v_mov_b32_e32 v5, v1
2437 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
2438 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2439 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2440   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2441   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2442   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 4>
2443   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2444   ret void
2447 define void @v_shuffle_v2p0_v4p0__6_4(ptr addrspace(1) inreg %ptr) {
2448 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_4:
2449 ; GFX900:       ; %bb.0:
2450 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2451 ; GFX900-NEXT:    ;;#ASMSTART
2452 ; GFX900-NEXT:    ; def v[0:7]
2453 ; GFX900-NEXT:    ;;#ASMEND
2454 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2455 ; GFX900-NEXT:    v_mov_b32_e32 v6, v0
2456 ; GFX900-NEXT:    v_mov_b32_e32 v7, v1
2457 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2458 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2459 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2461 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_4:
2462 ; GFX90A:       ; %bb.0:
2463 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2464 ; GFX90A-NEXT:    ;;#ASMSTART
2465 ; GFX90A-NEXT:    ; def v[0:7]
2466 ; GFX90A-NEXT:    ;;#ASMEND
2467 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2468 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
2469 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v1
2470 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2471 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2472 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2474 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_4:
2475 ; GFX940:       ; %bb.0:
2476 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2477 ; GFX940-NEXT:    ;;#ASMSTART
2478 ; GFX940-NEXT:    ; def v[0:7]
2479 ; GFX940-NEXT:    ;;#ASMEND
2480 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2481 ; GFX940-NEXT:    v_mov_b32_e32 v6, v0
2482 ; GFX940-NEXT:    v_mov_b32_e32 v7, v1
2483 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
2484 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2485 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2486   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2487   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2488   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 4>
2489   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2490   ret void
2493 define void @v_shuffle_v2p0_v4p0__u_5(ptr addrspace(1) inreg %ptr) {
2494 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_5:
2495 ; GFX900:       ; %bb.0:
2496 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2497 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2498 ; GFX900-NEXT:    ;;#ASMSTART
2499 ; GFX900-NEXT:    ; def v[0:7]
2500 ; GFX900-NEXT:    ;;#ASMEND
2501 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2502 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2503 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2505 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_5:
2506 ; GFX90A:       ; %bb.0:
2507 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2508 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2509 ; GFX90A-NEXT:    ;;#ASMSTART
2510 ; GFX90A-NEXT:    ; def v[0:7]
2511 ; GFX90A-NEXT:    ;;#ASMEND
2512 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2513 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2514 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2516 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_5:
2517 ; GFX940:       ; %bb.0:
2518 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2519 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2520 ; GFX940-NEXT:    ;;#ASMSTART
2521 ; GFX940-NEXT:    ; def v[0:7]
2522 ; GFX940-NEXT:    ;;#ASMEND
2523 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
2524 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2525 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2526   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2527   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2528   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>
2529   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2530   ret void
2533 define void @v_shuffle_v2p0_v4p0__0_5(ptr addrspace(1) inreg %ptr) {
2534 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_5:
2535 ; GFX900:       ; %bb.0:
2536 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2537 ; GFX900-NEXT:    ;;#ASMSTART
2538 ; GFX900-NEXT:    ; def v[0:7]
2539 ; GFX900-NEXT:    ;;#ASMEND
2540 ; GFX900-NEXT:    ;;#ASMSTART
2541 ; GFX900-NEXT:    ; def v[2:9]
2542 ; GFX900-NEXT:    ;;#ASMEND
2543 ; GFX900-NEXT:    v_mov_b32_e32 v10, 0
2544 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
2545 ; GFX900-NEXT:    v_mov_b32_e32 v3, v5
2546 ; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
2547 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2548 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2550 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_5:
2551 ; GFX90A:       ; %bb.0:
2552 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2553 ; GFX90A-NEXT:    ;;#ASMSTART
2554 ; GFX90A-NEXT:    ; def v[0:7]
2555 ; GFX90A-NEXT:    ;;#ASMEND
2556 ; GFX90A-NEXT:    ;;#ASMSTART
2557 ; GFX90A-NEXT:    ; def v[2:9]
2558 ; GFX90A-NEXT:    ;;#ASMEND
2559 ; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
2560 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
2561 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
2562 ; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
2563 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2564 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2566 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_5:
2567 ; GFX940:       ; %bb.0:
2568 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2569 ; GFX940-NEXT:    ;;#ASMSTART
2570 ; GFX940-NEXT:    ; def v[0:7]
2571 ; GFX940-NEXT:    ;;#ASMEND
2572 ; GFX940-NEXT:    v_mov_b32_e32 v10, 0
2573 ; GFX940-NEXT:    ;;#ASMSTART
2574 ; GFX940-NEXT:    ; def v[2:9]
2575 ; GFX940-NEXT:    ;;#ASMEND
2576 ; GFX940-NEXT:    s_nop 0
2577 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
2578 ; GFX940-NEXT:    v_mov_b32_e32 v3, v5
2579 ; GFX940-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1
2580 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2581 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2582   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2583   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2584   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 5>
2585   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2586   ret void
2589 define void @v_shuffle_v2p0_v4p0__1_5(ptr addrspace(1) inreg %ptr) {
2590 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_5:
2591 ; GFX900:       ; %bb.0:
2592 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2593 ; GFX900-NEXT:    ;;#ASMSTART
2594 ; GFX900-NEXT:    ; def v[0:7]
2595 ; GFX900-NEXT:    ;;#ASMEND
2596 ; GFX900-NEXT:    ;;#ASMSTART
2597 ; GFX900-NEXT:    ; def v[4:11]
2598 ; GFX900-NEXT:    ;;#ASMEND
2599 ; GFX900-NEXT:    v_mov_b32_e32 v12, 0
2600 ; GFX900-NEXT:    v_mov_b32_e32 v4, v6
2601 ; GFX900-NEXT:    v_mov_b32_e32 v5, v7
2602 ; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
2603 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2604 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2606 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_5:
2607 ; GFX90A:       ; %bb.0:
2608 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2609 ; GFX90A-NEXT:    ;;#ASMSTART
2610 ; GFX90A-NEXT:    ; def v[0:7]
2611 ; GFX90A-NEXT:    ;;#ASMEND
2612 ; GFX90A-NEXT:    ;;#ASMSTART
2613 ; GFX90A-NEXT:    ; def v[4:11]
2614 ; GFX90A-NEXT:    ;;#ASMEND
2615 ; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
2616 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
2617 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
2618 ; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
2619 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2620 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2622 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_5:
2623 ; GFX940:       ; %bb.0:
2624 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2625 ; GFX940-NEXT:    ;;#ASMSTART
2626 ; GFX940-NEXT:    ; def v[0:7]
2627 ; GFX940-NEXT:    ;;#ASMEND
2628 ; GFX940-NEXT:    v_mov_b32_e32 v12, 0
2629 ; GFX940-NEXT:    ;;#ASMSTART
2630 ; GFX940-NEXT:    ; def v[4:11]
2631 ; GFX940-NEXT:    ;;#ASMEND
2632 ; GFX940-NEXT:    s_nop 0
2633 ; GFX940-NEXT:    v_mov_b32_e32 v4, v6
2634 ; GFX940-NEXT:    v_mov_b32_e32 v5, v7
2635 ; GFX940-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1
2636 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2637 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2638   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2639   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2640   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 5>
2641   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2642   ret void
2645 define void @v_shuffle_v2p0_v4p0__2_5(ptr addrspace(1) inreg %ptr) {
2646 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_5:
2647 ; GFX900:       ; %bb.0:
2648 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2649 ; GFX900-NEXT:    ;;#ASMSTART
2650 ; GFX900-NEXT:    ; def v[0:7]
2651 ; GFX900-NEXT:    ;;#ASMEND
2652 ; GFX900-NEXT:    ;;#ASMSTART
2653 ; GFX900-NEXT:    ; def v[6:13]
2654 ; GFX900-NEXT:    ;;#ASMEND
2655 ; GFX900-NEXT:    v_mov_b32_e32 v14, 0
2656 ; GFX900-NEXT:    v_mov_b32_e32 v6, v8
2657 ; GFX900-NEXT:    v_mov_b32_e32 v7, v9
2658 ; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
2659 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2660 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2662 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_5:
2663 ; GFX90A:       ; %bb.0:
2664 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2665 ; GFX90A-NEXT:    ;;#ASMSTART
2666 ; GFX90A-NEXT:    ; def v[0:7]
2667 ; GFX90A-NEXT:    ;;#ASMEND
2668 ; GFX90A-NEXT:    ;;#ASMSTART
2669 ; GFX90A-NEXT:    ; def v[6:13]
2670 ; GFX90A-NEXT:    ;;#ASMEND
2671 ; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
2672 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v8
2673 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v9
2674 ; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
2675 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2676 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2678 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_5:
2679 ; GFX940:       ; %bb.0:
2680 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2681 ; GFX940-NEXT:    ;;#ASMSTART
2682 ; GFX940-NEXT:    ; def v[0:7]
2683 ; GFX940-NEXT:    ;;#ASMEND
2684 ; GFX940-NEXT:    v_mov_b32_e32 v14, 0
2685 ; GFX940-NEXT:    ;;#ASMSTART
2686 ; GFX940-NEXT:    ; def v[6:13]
2687 ; GFX940-NEXT:    ;;#ASMEND
2688 ; GFX940-NEXT:    s_nop 0
2689 ; GFX940-NEXT:    v_mov_b32_e32 v6, v8
2690 ; GFX940-NEXT:    v_mov_b32_e32 v7, v9
2691 ; GFX940-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1
2692 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2693 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2694   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2695   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2696   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 5>
2697   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2698   ret void
2701 define void @v_shuffle_v2p0_v4p0__3_5(ptr addrspace(1) inreg %ptr) {
2702 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_5:
2703 ; GFX900:       ; %bb.0:
2704 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2705 ; GFX900-NEXT:    ;;#ASMSTART
2706 ; GFX900-NEXT:    ; def v[8:15]
2707 ; GFX900-NEXT:    ;;#ASMEND
2708 ; GFX900-NEXT:    v_mov_b32_e32 v16, 0
2709 ; GFX900-NEXT:    ;;#ASMSTART
2710 ; GFX900-NEXT:    ; def v[0:7]
2711 ; GFX900-NEXT:    ;;#ASMEND
2712 ; GFX900-NEXT:    v_mov_b32_e32 v8, v6
2713 ; GFX900-NEXT:    v_mov_b32_e32 v9, v7
2714 ; GFX900-NEXT:    global_store_dwordx4 v16, v[8:11], s[16:17]
2715 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2716 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2718 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_5:
2719 ; GFX90A:       ; %bb.0:
2720 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2721 ; GFX90A-NEXT:    ;;#ASMSTART
2722 ; GFX90A-NEXT:    ; def v[8:15]
2723 ; GFX90A-NEXT:    ;;#ASMEND
2724 ; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
2725 ; GFX90A-NEXT:    ;;#ASMSTART
2726 ; GFX90A-NEXT:    ; def v[0:7]
2727 ; GFX90A-NEXT:    ;;#ASMEND
2728 ; GFX90A-NEXT:    v_mov_b32_e32 v8, v6
2729 ; GFX90A-NEXT:    v_mov_b32_e32 v9, v7
2730 ; GFX90A-NEXT:    global_store_dwordx4 v16, v[8:11], s[16:17]
2731 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2732 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2734 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_5:
2735 ; GFX940:       ; %bb.0:
2736 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2737 ; GFX940-NEXT:    ;;#ASMSTART
2738 ; GFX940-NEXT:    ; def v[8:15]
2739 ; GFX940-NEXT:    ;;#ASMEND
2740 ; GFX940-NEXT:    v_mov_b32_e32 v16, 0
2741 ; GFX940-NEXT:    ;;#ASMSTART
2742 ; GFX940-NEXT:    ; def v[0:7]
2743 ; GFX940-NEXT:    ;;#ASMEND
2744 ; GFX940-NEXT:    s_nop 0
2745 ; GFX940-NEXT:    v_mov_b32_e32 v8, v6
2746 ; GFX940-NEXT:    v_mov_b32_e32 v9, v7
2747 ; GFX940-NEXT:    global_store_dwordx4 v16, v[8:11], s[0:1] sc0 sc1
2748 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2749 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2750   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2751   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2752   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 5>
2753   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2754   ret void
2757 define void @v_shuffle_v2p0_v4p0__4_5(ptr addrspace(1) inreg %ptr) {
2758 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_5:
2759 ; GFX900:       ; %bb.0:
2760 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2761 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2762 ; GFX900-NEXT:    ;;#ASMSTART
2763 ; GFX900-NEXT:    ; def v[0:7]
2764 ; GFX900-NEXT:    ;;#ASMEND
2765 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2766 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2767 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2769 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_5:
2770 ; GFX90A:       ; %bb.0:
2771 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2772 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2773 ; GFX90A-NEXT:    ;;#ASMSTART
2774 ; GFX90A-NEXT:    ; def v[0:7]
2775 ; GFX90A-NEXT:    ;;#ASMEND
2776 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2777 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2778 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2780 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_5:
2781 ; GFX940:       ; %bb.0:
2782 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2783 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2784 ; GFX940-NEXT:    ;;#ASMSTART
2785 ; GFX940-NEXT:    ; def v[0:7]
2786 ; GFX940-NEXT:    ;;#ASMEND
2787 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
2788 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2789 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2790   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2791   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2792   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 5>
2793   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2794   ret void
2797 define void @v_shuffle_v2p0_v4p0__5_5(ptr addrspace(1) inreg %ptr) {
2798 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_5:
2799 ; GFX900:       ; %bb.0:
2800 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2801 ; GFX900-NEXT:    ;;#ASMSTART
2802 ; GFX900-NEXT:    ; def v[0:7]
2803 ; GFX900-NEXT:    ;;#ASMEND
2804 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2805 ; GFX900-NEXT:    v_mov_b32_e32 v4, v2
2806 ; GFX900-NEXT:    v_mov_b32_e32 v5, v3
2807 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2808 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2809 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2811 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_5:
2812 ; GFX90A:       ; %bb.0:
2813 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2814 ; GFX90A-NEXT:    ;;#ASMSTART
2815 ; GFX90A-NEXT:    ; def v[0:7]
2816 ; GFX90A-NEXT:    ;;#ASMEND
2817 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2818 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
2819 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
2820 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2821 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2822 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2824 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_5:
2825 ; GFX940:       ; %bb.0:
2826 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2827 ; GFX940-NEXT:    ;;#ASMSTART
2828 ; GFX940-NEXT:    ; def v[0:7]
2829 ; GFX940-NEXT:    ;;#ASMEND
2830 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2831 ; GFX940-NEXT:    v_mov_b32_e32 v4, v2
2832 ; GFX940-NEXT:    v_mov_b32_e32 v5, v3
2833 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
2834 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2835 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2836   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2837   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2838   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 5>
2839   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2840   ret void
2843 define void @v_shuffle_v2p0_v4p0__6_5(ptr addrspace(1) inreg %ptr) {
2844 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_5:
2845 ; GFX900:       ; %bb.0:
2846 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2847 ; GFX900-NEXT:    ;;#ASMSTART
2848 ; GFX900-NEXT:    ; def v[0:7]
2849 ; GFX900-NEXT:    ;;#ASMEND
2850 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2851 ; GFX900-NEXT:    v_mov_b32_e32 v6, v2
2852 ; GFX900-NEXT:    v_mov_b32_e32 v7, v3
2853 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2854 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2855 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2857 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_5:
2858 ; GFX90A:       ; %bb.0:
2859 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2860 ; GFX90A-NEXT:    ;;#ASMSTART
2861 ; GFX90A-NEXT:    ; def v[0:7]
2862 ; GFX90A-NEXT:    ;;#ASMEND
2863 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2864 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
2865 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
2866 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
2867 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2868 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2870 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_5:
2871 ; GFX940:       ; %bb.0:
2872 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2873 ; GFX940-NEXT:    ;;#ASMSTART
2874 ; GFX940-NEXT:    ; def v[0:7]
2875 ; GFX940-NEXT:    ;;#ASMEND
2876 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2877 ; GFX940-NEXT:    v_mov_b32_e32 v6, v2
2878 ; GFX940-NEXT:    v_mov_b32_e32 v7, v3
2879 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
2880 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2881 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2882   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2883   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2884   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 5>
2885   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2886   ret void
2889 define void @v_shuffle_v2p0_v4p0__u_6(ptr addrspace(1) inreg %ptr) {
2890 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_6:
2891 ; GFX900:       ; %bb.0:
2892 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2893 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2894 ; GFX900-NEXT:    ;;#ASMSTART
2895 ; GFX900-NEXT:    ; def v[0:7]
2896 ; GFX900-NEXT:    ;;#ASMEND
2897 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2898 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2899 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2901 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_6:
2902 ; GFX90A:       ; %bb.0:
2903 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2904 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2905 ; GFX90A-NEXT:    ;;#ASMSTART
2906 ; GFX90A-NEXT:    ; def v[0:7]
2907 ; GFX90A-NEXT:    ;;#ASMEND
2908 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
2909 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2910 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2912 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_6:
2913 ; GFX940:       ; %bb.0:
2914 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2915 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2916 ; GFX940-NEXT:    ;;#ASMSTART
2917 ; GFX940-NEXT:    ; def v[0:7]
2918 ; GFX940-NEXT:    ;;#ASMEND
2919 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
2920 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2921 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2922   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2923   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2924   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 6>
2925   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2926   ret void
2929 define void @v_shuffle_v2p0_v4p0__0_6(ptr addrspace(1) inreg %ptr) {
2930 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_6:
2931 ; GFX900:       ; %bb.0:
2932 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2933 ; GFX900-NEXT:    ;;#ASMSTART
2934 ; GFX900-NEXT:    ; def v[0:7]
2935 ; GFX900-NEXT:    ;;#ASMEND
2936 ; GFX900-NEXT:    ;;#ASMSTART
2937 ; GFX900-NEXT:    ; def v[2:9]
2938 ; GFX900-NEXT:    ;;#ASMEND
2939 ; GFX900-NEXT:    v_mov_b32_e32 v10, 0
2940 ; GFX900-NEXT:    v_mov_b32_e32 v2, v6
2941 ; GFX900-NEXT:    v_mov_b32_e32 v3, v7
2942 ; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
2943 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2944 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2946 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_6:
2947 ; GFX90A:       ; %bb.0:
2948 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2949 ; GFX90A-NEXT:    ;;#ASMSTART
2950 ; GFX90A-NEXT:    ; def v[0:7]
2951 ; GFX90A-NEXT:    ;;#ASMEND
2952 ; GFX90A-NEXT:    ;;#ASMSTART
2953 ; GFX90A-NEXT:    ; def v[2:9]
2954 ; GFX90A-NEXT:    ;;#ASMEND
2955 ; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
2956 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
2957 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
2958 ; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
2959 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2960 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2962 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_6:
2963 ; GFX940:       ; %bb.0:
2964 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2965 ; GFX940-NEXT:    ;;#ASMSTART
2966 ; GFX940-NEXT:    ; def v[0:7]
2967 ; GFX940-NEXT:    ;;#ASMEND
2968 ; GFX940-NEXT:    v_mov_b32_e32 v10, 0
2969 ; GFX940-NEXT:    ;;#ASMSTART
2970 ; GFX940-NEXT:    ; def v[2:9]
2971 ; GFX940-NEXT:    ;;#ASMEND
2972 ; GFX940-NEXT:    s_nop 0
2973 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
2974 ; GFX940-NEXT:    v_mov_b32_e32 v3, v7
2975 ; GFX940-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1
2976 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2977 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2978   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
2979   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
2980   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 6>
2981   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
2982   ret void
2985 define void @v_shuffle_v2p0_v4p0__1_6(ptr addrspace(1) inreg %ptr) {
2986 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_6:
2987 ; GFX900:       ; %bb.0:
2988 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2989 ; GFX900-NEXT:    ;;#ASMSTART
2990 ; GFX900-NEXT:    ; def v[0:7]
2991 ; GFX900-NEXT:    ;;#ASMEND
2992 ; GFX900-NEXT:    ;;#ASMSTART
2993 ; GFX900-NEXT:    ; def v[4:11]
2994 ; GFX900-NEXT:    ;;#ASMEND
2995 ; GFX900-NEXT:    v_mov_b32_e32 v12, 0
2996 ; GFX900-NEXT:    v_mov_b32_e32 v4, v8
2997 ; GFX900-NEXT:    v_mov_b32_e32 v5, v9
2998 ; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
2999 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3000 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3002 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_6:
3003 ; GFX90A:       ; %bb.0:
3004 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3005 ; GFX90A-NEXT:    ;;#ASMSTART
3006 ; GFX90A-NEXT:    ; def v[0:7]
3007 ; GFX90A-NEXT:    ;;#ASMEND
3008 ; GFX90A-NEXT:    ;;#ASMSTART
3009 ; GFX90A-NEXT:    ; def v[4:11]
3010 ; GFX90A-NEXT:    ;;#ASMEND
3011 ; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
3012 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v8
3013 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v9
3014 ; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
3015 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3016 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3018 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_6:
3019 ; GFX940:       ; %bb.0:
3020 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3021 ; GFX940-NEXT:    ;;#ASMSTART
3022 ; GFX940-NEXT:    ; def v[0:7]
3023 ; GFX940-NEXT:    ;;#ASMEND
3024 ; GFX940-NEXT:    v_mov_b32_e32 v12, 0
3025 ; GFX940-NEXT:    ;;#ASMSTART
3026 ; GFX940-NEXT:    ; def v[4:11]
3027 ; GFX940-NEXT:    ;;#ASMEND
3028 ; GFX940-NEXT:    s_nop 0
3029 ; GFX940-NEXT:    v_mov_b32_e32 v4, v8
3030 ; GFX940-NEXT:    v_mov_b32_e32 v5, v9
3031 ; GFX940-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1
3032 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3033 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3034   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3035   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3036   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 6>
3037   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3038   ret void
3041 define void @v_shuffle_v2p0_v4p0__2_6(ptr addrspace(1) inreg %ptr) {
3042 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_6:
3043 ; GFX900:       ; %bb.0:
3044 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3045 ; GFX900-NEXT:    ;;#ASMSTART
3046 ; GFX900-NEXT:    ; def v[0:7]
3047 ; GFX900-NEXT:    ;;#ASMEND
3048 ; GFX900-NEXT:    ;;#ASMSTART
3049 ; GFX900-NEXT:    ; def v[6:13]
3050 ; GFX900-NEXT:    ;;#ASMEND
3051 ; GFX900-NEXT:    v_mov_b32_e32 v14, 0
3052 ; GFX900-NEXT:    v_mov_b32_e32 v6, v10
3053 ; GFX900-NEXT:    v_mov_b32_e32 v7, v11
3054 ; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
3055 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3056 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3058 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_6:
3059 ; GFX90A:       ; %bb.0:
3060 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3061 ; GFX90A-NEXT:    ;;#ASMSTART
3062 ; GFX90A-NEXT:    ; def v[0:7]
3063 ; GFX90A-NEXT:    ;;#ASMEND
3064 ; GFX90A-NEXT:    ;;#ASMSTART
3065 ; GFX90A-NEXT:    ; def v[6:13]
3066 ; GFX90A-NEXT:    ;;#ASMEND
3067 ; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
3068 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v10
3069 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v11
3070 ; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
3071 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3072 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3074 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_6:
3075 ; GFX940:       ; %bb.0:
3076 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3077 ; GFX940-NEXT:    ;;#ASMSTART
3078 ; GFX940-NEXT:    ; def v[0:7]
3079 ; GFX940-NEXT:    ;;#ASMEND
3080 ; GFX940-NEXT:    v_mov_b32_e32 v14, 0
3081 ; GFX940-NEXT:    ;;#ASMSTART
3082 ; GFX940-NEXT:    ; def v[6:13]
3083 ; GFX940-NEXT:    ;;#ASMEND
3084 ; GFX940-NEXT:    s_nop 0
3085 ; GFX940-NEXT:    v_mov_b32_e32 v6, v10
3086 ; GFX940-NEXT:    v_mov_b32_e32 v7, v11
3087 ; GFX940-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1
3088 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3089 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3090   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3091   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3092   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 6>
3093   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3094   ret void
3097 define void @v_shuffle_v2p0_v4p0__3_6(ptr addrspace(1) inreg %ptr) {
3098 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_6:
3099 ; GFX900:       ; %bb.0:
3100 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3101 ; GFX900-NEXT:    ;;#ASMSTART
3102 ; GFX900-NEXT:    ; def v[8:15]
3103 ; GFX900-NEXT:    ;;#ASMEND
3104 ; GFX900-NEXT:    v_mov_b32_e32 v16, 0
3105 ; GFX900-NEXT:    ;;#ASMSTART
3106 ; GFX900-NEXT:    ; def v[0:7]
3107 ; GFX900-NEXT:    ;;#ASMEND
3108 ; GFX900-NEXT:    v_mov_b32_e32 v10, v6
3109 ; GFX900-NEXT:    v_mov_b32_e32 v11, v7
3110 ; GFX900-NEXT:    global_store_dwordx4 v16, v[10:13], s[16:17]
3111 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3112 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3114 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_6:
3115 ; GFX90A:       ; %bb.0:
3116 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3117 ; GFX90A-NEXT:    ;;#ASMSTART
3118 ; GFX90A-NEXT:    ; def v[8:15]
3119 ; GFX90A-NEXT:    ;;#ASMEND
3120 ; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
3121 ; GFX90A-NEXT:    ;;#ASMSTART
3122 ; GFX90A-NEXT:    ; def v[0:7]
3123 ; GFX90A-NEXT:    ;;#ASMEND
3124 ; GFX90A-NEXT:    v_mov_b32_e32 v10, v6
3125 ; GFX90A-NEXT:    v_mov_b32_e32 v11, v7
3126 ; GFX90A-NEXT:    global_store_dwordx4 v16, v[10:13], s[16:17]
3127 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3128 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3130 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_6:
3131 ; GFX940:       ; %bb.0:
3132 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3133 ; GFX940-NEXT:    ;;#ASMSTART
3134 ; GFX940-NEXT:    ; def v[8:15]
3135 ; GFX940-NEXT:    ;;#ASMEND
3136 ; GFX940-NEXT:    v_mov_b32_e32 v16, 0
3137 ; GFX940-NEXT:    ;;#ASMSTART
3138 ; GFX940-NEXT:    ; def v[0:7]
3139 ; GFX940-NEXT:    ;;#ASMEND
3140 ; GFX940-NEXT:    s_nop 0
3141 ; GFX940-NEXT:    v_mov_b32_e32 v10, v6
3142 ; GFX940-NEXT:    v_mov_b32_e32 v11, v7
3143 ; GFX940-NEXT:    global_store_dwordx4 v16, v[10:13], s[0:1] sc0 sc1
3144 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3145 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3146   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3147   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3148   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 6>
3149   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3150   ret void
3153 define void @v_shuffle_v2p0_v4p0__4_6(ptr addrspace(1) inreg %ptr) {
3154 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_6:
3155 ; GFX900:       ; %bb.0:
3156 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3157 ; GFX900-NEXT:    ;;#ASMSTART
3158 ; GFX900-NEXT:    ; def v[0:7]
3159 ; GFX900-NEXT:    ;;#ASMEND
3160 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
3161 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
3162 ; GFX900-NEXT:    v_mov_b32_e32 v3, v5
3163 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
3164 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3165 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3167 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_6:
3168 ; GFX90A:       ; %bb.0:
3169 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3170 ; GFX90A-NEXT:    ;;#ASMSTART
3171 ; GFX90A-NEXT:    ; def v[0:7]
3172 ; GFX90A-NEXT:    ;;#ASMEND
3173 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
3174 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
3175 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
3176 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
3177 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3178 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3180 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_6:
3181 ; GFX940:       ; %bb.0:
3182 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3183 ; GFX940-NEXT:    ;;#ASMSTART
3184 ; GFX940-NEXT:    ; def v[0:7]
3185 ; GFX940-NEXT:    ;;#ASMEND
3186 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
3187 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
3188 ; GFX940-NEXT:    v_mov_b32_e32 v3, v5
3189 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
3190 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3191 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3192   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3193   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3194   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 6>
3195   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3196   ret void
3199 define void @v_shuffle_v2p0_v4p0__5_6(ptr addrspace(1) inreg %ptr) {
3200 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_6:
3201 ; GFX900:       ; %bb.0:
3202 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3203 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
3204 ; GFX900-NEXT:    ;;#ASMSTART
3205 ; GFX900-NEXT:    ; def v[0:7]
3206 ; GFX900-NEXT:    ;;#ASMEND
3207 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
3208 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3209 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3211 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_6:
3212 ; GFX90A:       ; %bb.0:
3213 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3214 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
3215 ; GFX90A-NEXT:    ;;#ASMSTART
3216 ; GFX90A-NEXT:    ; def v[0:7]
3217 ; GFX90A-NEXT:    ;;#ASMEND
3218 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
3219 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3220 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3222 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_6:
3223 ; GFX940:       ; %bb.0:
3224 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3225 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
3226 ; GFX940-NEXT:    ;;#ASMSTART
3227 ; GFX940-NEXT:    ; def v[0:7]
3228 ; GFX940-NEXT:    ;;#ASMEND
3229 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
3230 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3231 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3232   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3233   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3234   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 6>
3235   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3236   ret void
3239 define void @v_shuffle_v2p0_v4p0__6_6(ptr addrspace(1) inreg %ptr) {
3240 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_6:
3241 ; GFX900:       ; %bb.0:
3242 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3243 ; GFX900-NEXT:    ;;#ASMSTART
3244 ; GFX900-NEXT:    ; def v[0:7]
3245 ; GFX900-NEXT:    ;;#ASMEND
3246 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
3247 ; GFX900-NEXT:    v_mov_b32_e32 v6, v4
3248 ; GFX900-NEXT:    v_mov_b32_e32 v7, v5
3249 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
3250 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3251 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3253 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_6:
3254 ; GFX90A:       ; %bb.0:
3255 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3256 ; GFX90A-NEXT:    ;;#ASMSTART
3257 ; GFX90A-NEXT:    ; def v[0:7]
3258 ; GFX90A-NEXT:    ;;#ASMEND
3259 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
3260 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v4
3261 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v5
3262 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
3263 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3264 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3266 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_6:
3267 ; GFX940:       ; %bb.0:
3268 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3269 ; GFX940-NEXT:    ;;#ASMSTART
3270 ; GFX940-NEXT:    ; def v[0:7]
3271 ; GFX940-NEXT:    ;;#ASMEND
3272 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
3273 ; GFX940-NEXT:    v_mov_b32_e32 v6, v4
3274 ; GFX940-NEXT:    v_mov_b32_e32 v7, v5
3275 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
3276 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3277 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3278   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3279   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3280   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 6>
3281   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3282   ret void
3285 define void @v_shuffle_v2p0_v4p0__u_7(ptr addrspace(1) inreg %ptr) {
3286 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_7:
3287 ; GFX900:       ; %bb.0:
3288 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3289 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
3290 ; GFX900-NEXT:    ;;#ASMSTART
3291 ; GFX900-NEXT:    ; def v[0:7]
3292 ; GFX900-NEXT:    ;;#ASMEND
3293 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
3294 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3295 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3297 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_7:
3298 ; GFX90A:       ; %bb.0:
3299 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3300 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
3301 ; GFX90A-NEXT:    ;;#ASMSTART
3302 ; GFX90A-NEXT:    ; def v[0:7]
3303 ; GFX90A-NEXT:    ;;#ASMEND
3304 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
3305 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3306 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3308 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__u_7:
3309 ; GFX940:       ; %bb.0:
3310 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3311 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
3312 ; GFX940-NEXT:    ;;#ASMSTART
3313 ; GFX940-NEXT:    ; def v[0:7]
3314 ; GFX940-NEXT:    ;;#ASMEND
3315 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
3316 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3317 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3318   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3319   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3320   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 7>
3321   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3322   ret void
3325 define void @v_shuffle_v2p0_v4p0__0_7(ptr addrspace(1) inreg %ptr) {
3326 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_7:
3327 ; GFX900:       ; %bb.0:
3328 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3329 ; GFX900-NEXT:    ;;#ASMSTART
3330 ; GFX900-NEXT:    ; def v[0:7]
3331 ; GFX900-NEXT:    ;;#ASMEND
3332 ; GFX900-NEXT:    ;;#ASMSTART
3333 ; GFX900-NEXT:    ; def v[2:9]
3334 ; GFX900-NEXT:    ;;#ASMEND
3335 ; GFX900-NEXT:    v_mov_b32_e32 v10, 0
3336 ; GFX900-NEXT:    v_mov_b32_e32 v2, v8
3337 ; GFX900-NEXT:    v_mov_b32_e32 v3, v9
3338 ; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
3339 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3340 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3342 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_7:
3343 ; GFX90A:       ; %bb.0:
3344 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3345 ; GFX90A-NEXT:    ;;#ASMSTART
3346 ; GFX90A-NEXT:    ; def v[0:7]
3347 ; GFX90A-NEXT:    ;;#ASMEND
3348 ; GFX90A-NEXT:    ;;#ASMSTART
3349 ; GFX90A-NEXT:    ; def v[2:9]
3350 ; GFX90A-NEXT:    ;;#ASMEND
3351 ; GFX90A-NEXT:    v_mov_b32_e32 v10, 0
3352 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v8
3353 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v9
3354 ; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17]
3355 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3356 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3358 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__0_7:
3359 ; GFX940:       ; %bb.0:
3360 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3361 ; GFX940-NEXT:    ;;#ASMSTART
3362 ; GFX940-NEXT:    ; def v[0:7]
3363 ; GFX940-NEXT:    ;;#ASMEND
3364 ; GFX940-NEXT:    v_mov_b32_e32 v10, 0
3365 ; GFX940-NEXT:    ;;#ASMSTART
3366 ; GFX940-NEXT:    ; def v[2:9]
3367 ; GFX940-NEXT:    ;;#ASMEND
3368 ; GFX940-NEXT:    s_nop 0
3369 ; GFX940-NEXT:    v_mov_b32_e32 v2, v8
3370 ; GFX940-NEXT:    v_mov_b32_e32 v3, v9
3371 ; GFX940-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] sc0 sc1
3372 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3373 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3374   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3375   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3376   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 7>
3377   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3378   ret void
3381 define void @v_shuffle_v2p0_v4p0__1_7(ptr addrspace(1) inreg %ptr) {
3382 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_7:
3383 ; GFX900:       ; %bb.0:
3384 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3385 ; GFX900-NEXT:    ;;#ASMSTART
3386 ; GFX900-NEXT:    ; def v[0:7]
3387 ; GFX900-NEXT:    ;;#ASMEND
3388 ; GFX900-NEXT:    ;;#ASMSTART
3389 ; GFX900-NEXT:    ; def v[4:11]
3390 ; GFX900-NEXT:    ;;#ASMEND
3391 ; GFX900-NEXT:    v_mov_b32_e32 v12, 0
3392 ; GFX900-NEXT:    v_mov_b32_e32 v4, v10
3393 ; GFX900-NEXT:    v_mov_b32_e32 v5, v11
3394 ; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
3395 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3396 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3398 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_7:
3399 ; GFX90A:       ; %bb.0:
3400 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3401 ; GFX90A-NEXT:    ;;#ASMSTART
3402 ; GFX90A-NEXT:    ; def v[0:7]
3403 ; GFX90A-NEXT:    ;;#ASMEND
3404 ; GFX90A-NEXT:    ;;#ASMSTART
3405 ; GFX90A-NEXT:    ; def v[4:11]
3406 ; GFX90A-NEXT:    ;;#ASMEND
3407 ; GFX90A-NEXT:    v_mov_b32_e32 v12, 0
3408 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v10
3409 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v11
3410 ; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17]
3411 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3412 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3414 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__1_7:
3415 ; GFX940:       ; %bb.0:
3416 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3417 ; GFX940-NEXT:    ;;#ASMSTART
3418 ; GFX940-NEXT:    ; def v[0:7]
3419 ; GFX940-NEXT:    ;;#ASMEND
3420 ; GFX940-NEXT:    v_mov_b32_e32 v12, 0
3421 ; GFX940-NEXT:    ;;#ASMSTART
3422 ; GFX940-NEXT:    ; def v[4:11]
3423 ; GFX940-NEXT:    ;;#ASMEND
3424 ; GFX940-NEXT:    s_nop 0
3425 ; GFX940-NEXT:    v_mov_b32_e32 v4, v10
3426 ; GFX940-NEXT:    v_mov_b32_e32 v5, v11
3427 ; GFX940-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] sc0 sc1
3428 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3429 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3430   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3431   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3432   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 7>
3433   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3434   ret void
3437 define void @v_shuffle_v2p0_v4p0__2_7(ptr addrspace(1) inreg %ptr) {
3438 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_7:
3439 ; GFX900:       ; %bb.0:
3440 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3441 ; GFX900-NEXT:    ;;#ASMSTART
3442 ; GFX900-NEXT:    ; def v[0:7]
3443 ; GFX900-NEXT:    ;;#ASMEND
3444 ; GFX900-NEXT:    ;;#ASMSTART
3445 ; GFX900-NEXT:    ; def v[6:13]
3446 ; GFX900-NEXT:    ;;#ASMEND
3447 ; GFX900-NEXT:    v_mov_b32_e32 v14, 0
3448 ; GFX900-NEXT:    v_mov_b32_e32 v6, v12
3449 ; GFX900-NEXT:    v_mov_b32_e32 v7, v13
3450 ; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
3451 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3452 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3454 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_7:
3455 ; GFX90A:       ; %bb.0:
3456 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3457 ; GFX90A-NEXT:    ;;#ASMSTART
3458 ; GFX90A-NEXT:    ; def v[0:7]
3459 ; GFX90A-NEXT:    ;;#ASMEND
3460 ; GFX90A-NEXT:    ;;#ASMSTART
3461 ; GFX90A-NEXT:    ; def v[6:13]
3462 ; GFX90A-NEXT:    ;;#ASMEND
3463 ; GFX90A-NEXT:    v_mov_b32_e32 v14, 0
3464 ; GFX90A-NEXT:    v_mov_b32_e32 v6, v12
3465 ; GFX90A-NEXT:    v_mov_b32_e32 v7, v13
3466 ; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]
3467 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3468 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3470 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__2_7:
3471 ; GFX940:       ; %bb.0:
3472 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3473 ; GFX940-NEXT:    ;;#ASMSTART
3474 ; GFX940-NEXT:    ; def v[0:7]
3475 ; GFX940-NEXT:    ;;#ASMEND
3476 ; GFX940-NEXT:    v_mov_b32_e32 v14, 0
3477 ; GFX940-NEXT:    ;;#ASMSTART
3478 ; GFX940-NEXT:    ; def v[6:13]
3479 ; GFX940-NEXT:    ;;#ASMEND
3480 ; GFX940-NEXT:    s_nop 0
3481 ; GFX940-NEXT:    v_mov_b32_e32 v6, v12
3482 ; GFX940-NEXT:    v_mov_b32_e32 v7, v13
3483 ; GFX940-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] sc0 sc1
3484 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3485 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3486   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3487   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3488   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 7>
3489   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3490   ret void
3493 define void @v_shuffle_v2p0_v4p0__3_7(ptr addrspace(1) inreg %ptr) {
3494 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_7:
3495 ; GFX900:       ; %bb.0:
3496 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3497 ; GFX900-NEXT:    ;;#ASMSTART
3498 ; GFX900-NEXT:    ; def v[8:15]
3499 ; GFX900-NEXT:    ;;#ASMEND
3500 ; GFX900-NEXT:    v_mov_b32_e32 v16, 0
3501 ; GFX900-NEXT:    ;;#ASMSTART
3502 ; GFX900-NEXT:    ; def v[0:7]
3503 ; GFX900-NEXT:    ;;#ASMEND
3504 ; GFX900-NEXT:    v_mov_b32_e32 v12, v6
3505 ; GFX900-NEXT:    v_mov_b32_e32 v13, v7
3506 ; GFX900-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]
3507 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3508 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3510 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_7:
3511 ; GFX90A:       ; %bb.0:
3512 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3513 ; GFX90A-NEXT:    ;;#ASMSTART
3514 ; GFX90A-NEXT:    ; def v[8:15]
3515 ; GFX90A-NEXT:    ;;#ASMEND
3516 ; GFX90A-NEXT:    v_mov_b32_e32 v16, 0
3517 ; GFX90A-NEXT:    ;;#ASMSTART
3518 ; GFX90A-NEXT:    ; def v[0:7]
3519 ; GFX90A-NEXT:    ;;#ASMEND
3520 ; GFX90A-NEXT:    v_mov_b32_e32 v12, v6
3521 ; GFX90A-NEXT:    v_mov_b32_e32 v13, v7
3522 ; GFX90A-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]
3523 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3524 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3526 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__3_7:
3527 ; GFX940:       ; %bb.0:
3528 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3529 ; GFX940-NEXT:    ;;#ASMSTART
3530 ; GFX940-NEXT:    ; def v[8:15]
3531 ; GFX940-NEXT:    ;;#ASMEND
3532 ; GFX940-NEXT:    v_mov_b32_e32 v16, 0
3533 ; GFX940-NEXT:    ;;#ASMSTART
3534 ; GFX940-NEXT:    ; def v[0:7]
3535 ; GFX940-NEXT:    ;;#ASMEND
3536 ; GFX940-NEXT:    s_nop 0
3537 ; GFX940-NEXT:    v_mov_b32_e32 v12, v6
3538 ; GFX940-NEXT:    v_mov_b32_e32 v13, v7
3539 ; GFX940-NEXT:    global_store_dwordx4 v16, v[12:15], s[0:1] sc0 sc1
3540 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3541 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3542   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3543   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3544   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 7>
3545   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3546   ret void
3549 define void @v_shuffle_v2p0_v4p0__4_7(ptr addrspace(1) inreg %ptr) {
3550 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_7:
3551 ; GFX900:       ; %bb.0:
3552 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3553 ; GFX900-NEXT:    ;;#ASMSTART
3554 ; GFX900-NEXT:    ; def v[0:7]
3555 ; GFX900-NEXT:    ;;#ASMEND
3556 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
3557 ; GFX900-NEXT:    v_mov_b32_e32 v2, v6
3558 ; GFX900-NEXT:    v_mov_b32_e32 v3, v7
3559 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
3560 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3561 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3563 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_7:
3564 ; GFX90A:       ; %bb.0:
3565 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3566 ; GFX90A-NEXT:    ;;#ASMSTART
3567 ; GFX90A-NEXT:    ; def v[0:7]
3568 ; GFX90A-NEXT:    ;;#ASMEND
3569 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
3570 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
3571 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
3572 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
3573 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3574 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3576 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__4_7:
3577 ; GFX940:       ; %bb.0:
3578 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3579 ; GFX940-NEXT:    ;;#ASMSTART
3580 ; GFX940-NEXT:    ; def v[0:7]
3581 ; GFX940-NEXT:    ;;#ASMEND
3582 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
3583 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
3584 ; GFX940-NEXT:    v_mov_b32_e32 v3, v7
3585 ; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
3586 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3587 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3588   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3589   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3590   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 7>
3591   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3592   ret void
3595 define void @v_shuffle_v2p0_v4p0__5_7(ptr addrspace(1) inreg %ptr) {
3596 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_7:
3597 ; GFX900:       ; %bb.0:
3598 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3599 ; GFX900-NEXT:    ;;#ASMSTART
3600 ; GFX900-NEXT:    ; def v[0:7]
3601 ; GFX900-NEXT:    ;;#ASMEND
3602 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
3603 ; GFX900-NEXT:    v_mov_b32_e32 v4, v6
3604 ; GFX900-NEXT:    v_mov_b32_e32 v5, v7
3605 ; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
3606 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3607 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3609 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_7:
3610 ; GFX90A:       ; %bb.0:
3611 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3612 ; GFX90A-NEXT:    ;;#ASMSTART
3613 ; GFX90A-NEXT:    ; def v[0:7]
3614 ; GFX90A-NEXT:    ;;#ASMEND
3615 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
3616 ; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
3617 ; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
3618 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
3619 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3620 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3622 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__5_7:
3623 ; GFX940:       ; %bb.0:
3624 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3625 ; GFX940-NEXT:    ;;#ASMSTART
3626 ; GFX940-NEXT:    ; def v[0:7]
3627 ; GFX940-NEXT:    ;;#ASMEND
3628 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
3629 ; GFX940-NEXT:    v_mov_b32_e32 v4, v6
3630 ; GFX940-NEXT:    v_mov_b32_e32 v5, v7
3631 ; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
3632 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3633 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3634   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3635   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3636   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 7>
3637   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3638   ret void
3641 define void @v_shuffle_v2p0_v4p0__6_7(ptr addrspace(1) inreg %ptr) {
3642 ; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_7:
3643 ; GFX900:       ; %bb.0:
3644 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3645 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
3646 ; GFX900-NEXT:    ;;#ASMSTART
3647 ; GFX900-NEXT:    ; def v[0:7]
3648 ; GFX900-NEXT:    ;;#ASMEND
3649 ; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
3650 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3651 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3653 ; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_7:
3654 ; GFX90A:       ; %bb.0:
3655 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3656 ; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
3657 ; GFX90A-NEXT:    ;;#ASMSTART
3658 ; GFX90A-NEXT:    ; def v[0:7]
3659 ; GFX90A-NEXT:    ;;#ASMEND
3660 ; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
3661 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3662 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3664 ; GFX940-LABEL: v_shuffle_v2p0_v4p0__6_7:
3665 ; GFX940:       ; %bb.0:
3666 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3667 ; GFX940-NEXT:    v_mov_b32_e32 v8, 0
3668 ; GFX940-NEXT:    ;;#ASMSTART
3669 ; GFX940-NEXT:    ; def v[0:7]
3670 ; GFX940-NEXT:    ;;#ASMEND
3671 ; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
3672 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3673 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3674   %vec0 = call <4 x ptr> asm "; def $0", "=v"()
3675   %vec1 = call <4 x ptr> asm "; def $0", "=v"()
3676   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 7>
3677   store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16
3678   ret void
3681 define void @s_shuffle_v2p0_v4p0__u_u() {
3682 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__u_u:
3683 ; GFX9:       ; %bb.0:
3684 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3685 ; GFX9-NEXT:    ;;#ASMSTART
3686 ; GFX9-NEXT:    ; use s[8:11]
3687 ; GFX9-NEXT:    ;;#ASMEND
3688 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3689   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
3690   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> poison
3691   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
3692   ret void
3695 define void @s_shuffle_v2p0_v4p0__0_u() {
3696 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_u:
3697 ; GFX900:       ; %bb.0:
3698 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3699 ; GFX900-NEXT:    ;;#ASMSTART
3700 ; GFX900-NEXT:    ; def s[8:15]
3701 ; GFX900-NEXT:    ;;#ASMEND
3702 ; GFX900-NEXT:    ;;#ASMSTART
3703 ; GFX900-NEXT:    ; use s[8:11]
3704 ; GFX900-NEXT:    ;;#ASMEND
3705 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3707 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_u:
3708 ; GFX90A:       ; %bb.0:
3709 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3710 ; GFX90A-NEXT:    ;;#ASMSTART
3711 ; GFX90A-NEXT:    ; def s[8:15]
3712 ; GFX90A-NEXT:    ;;#ASMEND
3713 ; GFX90A-NEXT:    ;;#ASMSTART
3714 ; GFX90A-NEXT:    ; use s[8:11]
3715 ; GFX90A-NEXT:    ;;#ASMEND
3716 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3718 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_u:
3719 ; GFX940:       ; %bb.0:
3720 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3721 ; GFX940-NEXT:    ;;#ASMSTART
3722 ; GFX940-NEXT:    ; def s[8:15]
3723 ; GFX940-NEXT:    ;;#ASMEND
3724 ; GFX940-NEXT:    s_nop 0
3725 ; GFX940-NEXT:    ;;#ASMSTART
3726 ; GFX940-NEXT:    ; use s[8:11]
3727 ; GFX940-NEXT:    ;;#ASMEND
3728 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3729   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
3730   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 poison>
3731   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
3732   ret void
3735 define void @s_shuffle_v2p0_v4p0__1_u() {
3736 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_u:
3737 ; GFX900:       ; %bb.0:
3738 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3739 ; GFX900-NEXT:    ;;#ASMSTART
3740 ; GFX900-NEXT:    ; def s[4:11]
3741 ; GFX900-NEXT:    ;;#ASMEND
3742 ; GFX900-NEXT:    s_mov_b32 s8, s6
3743 ; GFX900-NEXT:    s_mov_b32 s9, s7
3744 ; GFX900-NEXT:    ;;#ASMSTART
3745 ; GFX900-NEXT:    ; use s[8:11]
3746 ; GFX900-NEXT:    ;;#ASMEND
3747 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3749 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_u:
3750 ; GFX90A:       ; %bb.0:
3751 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3752 ; GFX90A-NEXT:    ;;#ASMSTART
3753 ; GFX90A-NEXT:    ; def s[4:11]
3754 ; GFX90A-NEXT:    ;;#ASMEND
3755 ; GFX90A-NEXT:    s_mov_b32 s8, s6
3756 ; GFX90A-NEXT:    s_mov_b32 s9, s7
3757 ; GFX90A-NEXT:    ;;#ASMSTART
3758 ; GFX90A-NEXT:    ; use s[8:11]
3759 ; GFX90A-NEXT:    ;;#ASMEND
3760 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3762 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_u:
3763 ; GFX940:       ; %bb.0:
3764 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3765 ; GFX940-NEXT:    ;;#ASMSTART
3766 ; GFX940-NEXT:    ; def s[0:7]
3767 ; GFX940-NEXT:    ;;#ASMEND
3768 ; GFX940-NEXT:    s_mov_b32 s8, s2
3769 ; GFX940-NEXT:    s_mov_b32 s9, s3
3770 ; GFX940-NEXT:    ;;#ASMSTART
3771 ; GFX940-NEXT:    ; use s[8:11]
3772 ; GFX940-NEXT:    ;;#ASMEND
3773 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3774   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
3775   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 poison>
3776   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
3777   ret void
3780 define void @s_shuffle_v2p0_v4p0__2_u() {
3781 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_u:
3782 ; GFX900:       ; %bb.0:
3783 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3784 ; GFX900-NEXT:    ;;#ASMSTART
3785 ; GFX900-NEXT:    ; def s[4:11]
3786 ; GFX900-NEXT:    ;;#ASMEND
3787 ; GFX900-NEXT:    ;;#ASMSTART
3788 ; GFX900-NEXT:    ; use s[8:11]
3789 ; GFX900-NEXT:    ;;#ASMEND
3790 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3792 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_u:
3793 ; GFX90A:       ; %bb.0:
3794 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3795 ; GFX90A-NEXT:    ;;#ASMSTART
3796 ; GFX90A-NEXT:    ; def s[4:11]
3797 ; GFX90A-NEXT:    ;;#ASMEND
3798 ; GFX90A-NEXT:    ;;#ASMSTART
3799 ; GFX90A-NEXT:    ; use s[8:11]
3800 ; GFX90A-NEXT:    ;;#ASMEND
3801 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3803 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_u:
3804 ; GFX940:       ; %bb.0:
3805 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3806 ; GFX940-NEXT:    ;;#ASMSTART
3807 ; GFX940-NEXT:    ; def s[4:11]
3808 ; GFX940-NEXT:    ;;#ASMEND
3809 ; GFX940-NEXT:    s_nop 0
3810 ; GFX940-NEXT:    ;;#ASMSTART
3811 ; GFX940-NEXT:    ; use s[8:11]
3812 ; GFX940-NEXT:    ;;#ASMEND
3813 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3814   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
3815   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 poison>
3816   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
3817   ret void
3820 define void @s_shuffle_v2p0_v4p0__3_u() {
3821 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_u:
3822 ; GFX900:       ; %bb.0:
3823 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3824 ; GFX900-NEXT:    ;;#ASMSTART
3825 ; GFX900-NEXT:    ; def s[4:11]
3826 ; GFX900-NEXT:    ;;#ASMEND
3827 ; GFX900-NEXT:    s_mov_b32 s8, s10
3828 ; GFX900-NEXT:    s_mov_b32 s9, s11
3829 ; GFX900-NEXT:    ;;#ASMSTART
3830 ; GFX900-NEXT:    ; use s[8:11]
3831 ; GFX900-NEXT:    ;;#ASMEND
3832 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3834 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_u:
3835 ; GFX90A:       ; %bb.0:
3836 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3837 ; GFX90A-NEXT:    ;;#ASMSTART
3838 ; GFX90A-NEXT:    ; def s[4:11]
3839 ; GFX90A-NEXT:    ;;#ASMEND
3840 ; GFX90A-NEXT:    s_mov_b32 s8, s10
3841 ; GFX90A-NEXT:    s_mov_b32 s9, s11
3842 ; GFX90A-NEXT:    ;;#ASMSTART
3843 ; GFX90A-NEXT:    ; use s[8:11]
3844 ; GFX90A-NEXT:    ;;#ASMEND
3845 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3847 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_u:
3848 ; GFX940:       ; %bb.0:
3849 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3850 ; GFX940-NEXT:    ;;#ASMSTART
3851 ; GFX940-NEXT:    ; def s[0:7]
3852 ; GFX940-NEXT:    ;;#ASMEND
3853 ; GFX940-NEXT:    s_mov_b32 s8, s6
3854 ; GFX940-NEXT:    s_mov_b32 s9, s7
3855 ; GFX940-NEXT:    ;;#ASMSTART
3856 ; GFX940-NEXT:    ; use s[8:11]
3857 ; GFX940-NEXT:    ;;#ASMEND
3858 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3859   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
3860   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 poison>
3861   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
3862   ret void
3865 define void @s_shuffle_v2p0_v4p0__4_u() {
3866 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_u:
3867 ; GFX9:       ; %bb.0:
3868 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3869 ; GFX9-NEXT:    ;;#ASMSTART
3870 ; GFX9-NEXT:    ; use s[8:11]
3871 ; GFX9-NEXT:    ;;#ASMEND
3872 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3873   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
3874   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 poison>
3875   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
3876   ret void
3879 define void @s_shuffle_v2p0_v4p0__5_u() {
3880 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_u:
3881 ; GFX900:       ; %bb.0:
3882 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3883 ; GFX900-NEXT:    ;;#ASMSTART
3884 ; GFX900-NEXT:    ; def s[4:11]
3885 ; GFX900-NEXT:    ;;#ASMEND
3886 ; GFX900-NEXT:    s_mov_b32 s8, s6
3887 ; GFX900-NEXT:    s_mov_b32 s9, s7
3888 ; GFX900-NEXT:    ;;#ASMSTART
3889 ; GFX900-NEXT:    ; use s[8:11]
3890 ; GFX900-NEXT:    ;;#ASMEND
3891 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3893 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_u:
3894 ; GFX90A:       ; %bb.0:
3895 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3896 ; GFX90A-NEXT:    ;;#ASMSTART
3897 ; GFX90A-NEXT:    ; def s[4:11]
3898 ; GFX90A-NEXT:    ;;#ASMEND
3899 ; GFX90A-NEXT:    s_mov_b32 s8, s6
3900 ; GFX90A-NEXT:    s_mov_b32 s9, s7
3901 ; GFX90A-NEXT:    ;;#ASMSTART
3902 ; GFX90A-NEXT:    ; use s[8:11]
3903 ; GFX90A-NEXT:    ;;#ASMEND
3904 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3906 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_u:
3907 ; GFX940:       ; %bb.0:
3908 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3909 ; GFX940-NEXT:    ;;#ASMSTART
3910 ; GFX940-NEXT:    ; def s[0:7]
3911 ; GFX940-NEXT:    ;;#ASMEND
3912 ; GFX940-NEXT:    s_mov_b32 s8, s2
3913 ; GFX940-NEXT:    s_mov_b32 s9, s3
3914 ; GFX940-NEXT:    ;;#ASMSTART
3915 ; GFX940-NEXT:    ; use s[8:11]
3916 ; GFX940-NEXT:    ;;#ASMEND
3917 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3918   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
3919   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
3920   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>
3921   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
3922   ret void
3925 define void @s_shuffle_v2p0_v4p0__6_u() {
3926 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_u:
3927 ; GFX900:       ; %bb.0:
3928 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3929 ; GFX900-NEXT:    ;;#ASMSTART
3930 ; GFX900-NEXT:    ; def s[4:11]
3931 ; GFX900-NEXT:    ;;#ASMEND
3932 ; GFX900-NEXT:    ;;#ASMSTART
3933 ; GFX900-NEXT:    ; use s[8:11]
3934 ; GFX900-NEXT:    ;;#ASMEND
3935 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3937 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_u:
3938 ; GFX90A:       ; %bb.0:
3939 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3940 ; GFX90A-NEXT:    ;;#ASMSTART
3941 ; GFX90A-NEXT:    ; def s[4:11]
3942 ; GFX90A-NEXT:    ;;#ASMEND
3943 ; GFX90A-NEXT:    ;;#ASMSTART
3944 ; GFX90A-NEXT:    ; use s[8:11]
3945 ; GFX90A-NEXT:    ;;#ASMEND
3946 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3948 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_u:
3949 ; GFX940:       ; %bb.0:
3950 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3951 ; GFX940-NEXT:    ;;#ASMSTART
3952 ; GFX940-NEXT:    ; def s[4:11]
3953 ; GFX940-NEXT:    ;;#ASMEND
3954 ; GFX940-NEXT:    s_nop 0
3955 ; GFX940-NEXT:    ;;#ASMSTART
3956 ; GFX940-NEXT:    ; use s[8:11]
3957 ; GFX940-NEXT:    ;;#ASMEND
3958 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3959   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
3960   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
3961   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 poison>
3962   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
3963   ret void
3966 define void @s_shuffle_v2p0_v4p0__7_u() {
3967 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_u:
3968 ; GFX900:       ; %bb.0:
3969 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3970 ; GFX900-NEXT:    ;;#ASMSTART
3971 ; GFX900-NEXT:    ; def s[4:11]
3972 ; GFX900-NEXT:    ;;#ASMEND
3973 ; GFX900-NEXT:    s_mov_b32 s8, s10
3974 ; GFX900-NEXT:    s_mov_b32 s9, s11
3975 ; GFX900-NEXT:    ;;#ASMSTART
3976 ; GFX900-NEXT:    ; use s[8:11]
3977 ; GFX900-NEXT:    ;;#ASMEND
3978 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3980 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_u:
3981 ; GFX90A:       ; %bb.0:
3982 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3983 ; GFX90A-NEXT:    ;;#ASMSTART
3984 ; GFX90A-NEXT:    ; def s[4:11]
3985 ; GFX90A-NEXT:    ;;#ASMEND
3986 ; GFX90A-NEXT:    s_mov_b32 s8, s10
3987 ; GFX90A-NEXT:    s_mov_b32 s9, s11
3988 ; GFX90A-NEXT:    ;;#ASMSTART
3989 ; GFX90A-NEXT:    ; use s[8:11]
3990 ; GFX90A-NEXT:    ;;#ASMEND
3991 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3993 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_u:
3994 ; GFX940:       ; %bb.0:
3995 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3996 ; GFX940-NEXT:    ;;#ASMSTART
3997 ; GFX940-NEXT:    ; def s[0:7]
3998 ; GFX940-NEXT:    ;;#ASMEND
3999 ; GFX940-NEXT:    s_mov_b32 s8, s6
4000 ; GFX940-NEXT:    s_mov_b32 s9, s7
4001 ; GFX940-NEXT:    ;;#ASMSTART
4002 ; GFX940-NEXT:    ; use s[8:11]
4003 ; GFX940-NEXT:    ;;#ASMEND
4004 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4005   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4006   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4007   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 poison>
4008   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4009   ret void
4012 define void @s_shuffle_v2p0_v4p0__7_0() {
4013 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_0:
4014 ; GFX900:       ; %bb.0:
4015 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4016 ; GFX900-NEXT:    ;;#ASMSTART
4017 ; GFX900-NEXT:    ; def s[4:11]
4018 ; GFX900-NEXT:    ;;#ASMEND
4019 ; GFX900-NEXT:    ;;#ASMSTART
4020 ; GFX900-NEXT:    ; def s[8:15]
4021 ; GFX900-NEXT:    ;;#ASMEND
4022 ; GFX900-NEXT:    s_mov_b32 s8, s14
4023 ; GFX900-NEXT:    s_mov_b32 s9, s15
4024 ; GFX900-NEXT:    s_mov_b32 s10, s4
4025 ; GFX900-NEXT:    s_mov_b32 s11, s5
4026 ; GFX900-NEXT:    ;;#ASMSTART
4027 ; GFX900-NEXT:    ; use s[8:11]
4028 ; GFX900-NEXT:    ;;#ASMEND
4029 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4031 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_0:
4032 ; GFX90A:       ; %bb.0:
4033 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4034 ; GFX90A-NEXT:    ;;#ASMSTART
4035 ; GFX90A-NEXT:    ; def s[4:11]
4036 ; GFX90A-NEXT:    ;;#ASMEND
4037 ; GFX90A-NEXT:    ;;#ASMSTART
4038 ; GFX90A-NEXT:    ; def s[8:15]
4039 ; GFX90A-NEXT:    ;;#ASMEND
4040 ; GFX90A-NEXT:    s_mov_b32 s8, s14
4041 ; GFX90A-NEXT:    s_mov_b32 s9, s15
4042 ; GFX90A-NEXT:    s_mov_b32 s10, s4
4043 ; GFX90A-NEXT:    s_mov_b32 s11, s5
4044 ; GFX90A-NEXT:    ;;#ASMSTART
4045 ; GFX90A-NEXT:    ; use s[8:11]
4046 ; GFX90A-NEXT:    ;;#ASMEND
4047 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4049 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_0:
4050 ; GFX940:       ; %bb.0:
4051 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4052 ; GFX940-NEXT:    ;;#ASMSTART
4053 ; GFX940-NEXT:    ; def s[0:7]
4054 ; GFX940-NEXT:    ;;#ASMEND
4055 ; GFX940-NEXT:    s_nop 0
4056 ; GFX940-NEXT:    ;;#ASMSTART
4057 ; GFX940-NEXT:    ; def s[4:11]
4058 ; GFX940-NEXT:    ;;#ASMEND
4059 ; GFX940-NEXT:    s_mov_b32 s8, s10
4060 ; GFX940-NEXT:    s_mov_b32 s9, s11
4061 ; GFX940-NEXT:    s_mov_b32 s10, s0
4062 ; GFX940-NEXT:    s_mov_b32 s11, s1
4063 ; GFX940-NEXT:    ;;#ASMSTART
4064 ; GFX940-NEXT:    ; use s[8:11]
4065 ; GFX940-NEXT:    ;;#ASMEND
4066 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4067   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4068   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4069   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 0>
4070   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4071   ret void
4074 define void @s_shuffle_v2p0_v4p0__7_1() {
4075 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_1:
4076 ; GFX900:       ; %bb.0:
4077 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4078 ; GFX900-NEXT:    ;;#ASMSTART
4079 ; GFX900-NEXT:    ; def s[8:15]
4080 ; GFX900-NEXT:    ;;#ASMEND
4081 ; GFX900-NEXT:    ;;#ASMSTART
4082 ; GFX900-NEXT:    ; def s[12:19]
4083 ; GFX900-NEXT:    ;;#ASMEND
4084 ; GFX900-NEXT:    s_mov_b32 s8, s18
4085 ; GFX900-NEXT:    s_mov_b32 s9, s19
4086 ; GFX900-NEXT:    ;;#ASMSTART
4087 ; GFX900-NEXT:    ; use s[8:11]
4088 ; GFX900-NEXT:    ;;#ASMEND
4089 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4091 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_1:
4092 ; GFX90A:       ; %bb.0:
4093 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4094 ; GFX90A-NEXT:    ;;#ASMSTART
4095 ; GFX90A-NEXT:    ; def s[8:15]
4096 ; GFX90A-NEXT:    ;;#ASMEND
4097 ; GFX90A-NEXT:    ;;#ASMSTART
4098 ; GFX90A-NEXT:    ; def s[12:19]
4099 ; GFX90A-NEXT:    ;;#ASMEND
4100 ; GFX90A-NEXT:    s_mov_b32 s8, s18
4101 ; GFX90A-NEXT:    s_mov_b32 s9, s19
4102 ; GFX90A-NEXT:    ;;#ASMSTART
4103 ; GFX90A-NEXT:    ; use s[8:11]
4104 ; GFX90A-NEXT:    ;;#ASMEND
4105 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4107 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_1:
4108 ; GFX940:       ; %bb.0:
4109 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4110 ; GFX940-NEXT:    ;;#ASMSTART
4111 ; GFX940-NEXT:    ; def s[8:15]
4112 ; GFX940-NEXT:    ;;#ASMEND
4113 ; GFX940-NEXT:    ;;#ASMSTART
4114 ; GFX940-NEXT:    ; def s[0:7]
4115 ; GFX940-NEXT:    ;;#ASMEND
4116 ; GFX940-NEXT:    s_mov_b32 s8, s6
4117 ; GFX940-NEXT:    s_mov_b32 s9, s7
4118 ; GFX940-NEXT:    ;;#ASMSTART
4119 ; GFX940-NEXT:    ; use s[8:11]
4120 ; GFX940-NEXT:    ;;#ASMEND
4121 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4122   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4123   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4124   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 1>
4125   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4126   ret void
4129 define void @s_shuffle_v2p0_v4p0__7_2() {
4130 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_2:
4131 ; GFX900:       ; %bb.0:
4132 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4133 ; GFX900-NEXT:    ;;#ASMSTART
4134 ; GFX900-NEXT:    ; def s[8:15]
4135 ; GFX900-NEXT:    ;;#ASMEND
4136 ; GFX900-NEXT:    ;;#ASMSTART
4137 ; GFX900-NEXT:    ; def s[4:11]
4138 ; GFX900-NEXT:    ;;#ASMEND
4139 ; GFX900-NEXT:    s_mov_b32 s8, s10
4140 ; GFX900-NEXT:    s_mov_b32 s9, s11
4141 ; GFX900-NEXT:    s_mov_b32 s10, s12
4142 ; GFX900-NEXT:    s_mov_b32 s11, s13
4143 ; GFX900-NEXT:    ;;#ASMSTART
4144 ; GFX900-NEXT:    ; use s[8:11]
4145 ; GFX900-NEXT:    ;;#ASMEND
4146 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4148 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_2:
4149 ; GFX90A:       ; %bb.0:
4150 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4151 ; GFX90A-NEXT:    ;;#ASMSTART
4152 ; GFX90A-NEXT:    ; def s[8:15]
4153 ; GFX90A-NEXT:    ;;#ASMEND
4154 ; GFX90A-NEXT:    ;;#ASMSTART
4155 ; GFX90A-NEXT:    ; def s[4:11]
4156 ; GFX90A-NEXT:    ;;#ASMEND
4157 ; GFX90A-NEXT:    s_mov_b32 s8, s10
4158 ; GFX90A-NEXT:    s_mov_b32 s9, s11
4159 ; GFX90A-NEXT:    s_mov_b32 s10, s12
4160 ; GFX90A-NEXT:    s_mov_b32 s11, s13
4161 ; GFX90A-NEXT:    ;;#ASMSTART
4162 ; GFX90A-NEXT:    ; use s[8:11]
4163 ; GFX90A-NEXT:    ;;#ASMEND
4164 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4166 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_2:
4167 ; GFX940:       ; %bb.0:
4168 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4169 ; GFX940-NEXT:    ;;#ASMSTART
4170 ; GFX940-NEXT:    ; def s[8:15]
4171 ; GFX940-NEXT:    ;;#ASMEND
4172 ; GFX940-NEXT:    ;;#ASMSTART
4173 ; GFX940-NEXT:    ; def s[0:7]
4174 ; GFX940-NEXT:    ;;#ASMEND
4175 ; GFX940-NEXT:    s_mov_b32 s8, s14
4176 ; GFX940-NEXT:    s_mov_b32 s9, s15
4177 ; GFX940-NEXT:    s_mov_b32 s10, s4
4178 ; GFX940-NEXT:    s_mov_b32 s11, s5
4179 ; GFX940-NEXT:    ;;#ASMSTART
4180 ; GFX940-NEXT:    ; use s[8:11]
4181 ; GFX940-NEXT:    ;;#ASMEND
4182 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4183   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4184   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4185   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 2>
4186   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4187   ret void
4190 define void @s_shuffle_v2p0_v4p0__7_3() {
4191 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_3:
4192 ; GFX900:       ; %bb.0:
4193 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4194 ; GFX900-NEXT:    ;;#ASMSTART
4195 ; GFX900-NEXT:    ; def s[4:11]
4196 ; GFX900-NEXT:    ;;#ASMEND
4197 ; GFX900-NEXT:    ;;#ASMSTART
4198 ; GFX900-NEXT:    ; def s[12:19]
4199 ; GFX900-NEXT:    ;;#ASMEND
4200 ; GFX900-NEXT:    s_mov_b32 s8, s18
4201 ; GFX900-NEXT:    s_mov_b32 s9, s19
4202 ; GFX900-NEXT:    ;;#ASMSTART
4203 ; GFX900-NEXT:    ; use s[8:11]
4204 ; GFX900-NEXT:    ;;#ASMEND
4205 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4207 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_3:
4208 ; GFX90A:       ; %bb.0:
4209 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4210 ; GFX90A-NEXT:    ;;#ASMSTART
4211 ; GFX90A-NEXT:    ; def s[4:11]
4212 ; GFX90A-NEXT:    ;;#ASMEND
4213 ; GFX90A-NEXT:    ;;#ASMSTART
4214 ; GFX90A-NEXT:    ; def s[12:19]
4215 ; GFX90A-NEXT:    ;;#ASMEND
4216 ; GFX90A-NEXT:    s_mov_b32 s8, s18
4217 ; GFX90A-NEXT:    s_mov_b32 s9, s19
4218 ; GFX90A-NEXT:    ;;#ASMSTART
4219 ; GFX90A-NEXT:    ; use s[8:11]
4220 ; GFX90A-NEXT:    ;;#ASMEND
4221 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4223 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_3:
4224 ; GFX940:       ; %bb.0:
4225 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4226 ; GFX940-NEXT:    ;;#ASMSTART
4227 ; GFX940-NEXT:    ; def s[4:11]
4228 ; GFX940-NEXT:    ;;#ASMEND
4229 ; GFX940-NEXT:    s_nop 0
4230 ; GFX940-NEXT:    ;;#ASMSTART
4231 ; GFX940-NEXT:    ; def s[0:7]
4232 ; GFX940-NEXT:    ;;#ASMEND
4233 ; GFX940-NEXT:    s_mov_b32 s8, s6
4234 ; GFX940-NEXT:    s_mov_b32 s9, s7
4235 ; GFX940-NEXT:    ;;#ASMSTART
4236 ; GFX940-NEXT:    ; use s[8:11]
4237 ; GFX940-NEXT:    ;;#ASMEND
4238 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4239   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4240   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4241   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 3>
4242   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4243   ret void
4246 define void @s_shuffle_v2p0_v4p0__7_4() {
4247 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_4:
4248 ; GFX900:       ; %bb.0:
4249 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4250 ; GFX900-NEXT:    ;;#ASMSTART
4251 ; GFX900-NEXT:    ; def s[4:11]
4252 ; GFX900-NEXT:    ;;#ASMEND
4253 ; GFX900-NEXT:    s_mov_b32 s8, s10
4254 ; GFX900-NEXT:    s_mov_b32 s9, s11
4255 ; GFX900-NEXT:    s_mov_b32 s10, s4
4256 ; GFX900-NEXT:    s_mov_b32 s11, s5
4257 ; GFX900-NEXT:    ;;#ASMSTART
4258 ; GFX900-NEXT:    ; use s[8:11]
4259 ; GFX900-NEXT:    ;;#ASMEND
4260 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4262 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_4:
4263 ; GFX90A:       ; %bb.0:
4264 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4265 ; GFX90A-NEXT:    ;;#ASMSTART
4266 ; GFX90A-NEXT:    ; def s[4:11]
4267 ; GFX90A-NEXT:    ;;#ASMEND
4268 ; GFX90A-NEXT:    s_mov_b32 s8, s10
4269 ; GFX90A-NEXT:    s_mov_b32 s9, s11
4270 ; GFX90A-NEXT:    s_mov_b32 s10, s4
4271 ; GFX90A-NEXT:    s_mov_b32 s11, s5
4272 ; GFX90A-NEXT:    ;;#ASMSTART
4273 ; GFX90A-NEXT:    ; use s[8:11]
4274 ; GFX90A-NEXT:    ;;#ASMEND
4275 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4277 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_4:
4278 ; GFX940:       ; %bb.0:
4279 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4280 ; GFX940-NEXT:    ;;#ASMSTART
4281 ; GFX940-NEXT:    ; def s[0:7]
4282 ; GFX940-NEXT:    ;;#ASMEND
4283 ; GFX940-NEXT:    s_mov_b32 s8, s6
4284 ; GFX940-NEXT:    s_mov_b32 s9, s7
4285 ; GFX940-NEXT:    s_mov_b32 s10, s0
4286 ; GFX940-NEXT:    s_mov_b32 s11, s1
4287 ; GFX940-NEXT:    ;;#ASMSTART
4288 ; GFX940-NEXT:    ; use s[8:11]
4289 ; GFX940-NEXT:    ;;#ASMEND
4290 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4291   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4292   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4293   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 4>
4294   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4295   ret void
4298 define void @s_shuffle_v2p0_v4p0__7_5() {
4299 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__7_5:
4300 ; GFX9:       ; %bb.0:
4301 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4302 ; GFX9-NEXT:    ;;#ASMSTART
4303 ; GFX9-NEXT:    ; def s[8:15]
4304 ; GFX9-NEXT:    ;;#ASMEND
4305 ; GFX9-NEXT:    s_mov_b32 s8, s14
4306 ; GFX9-NEXT:    s_mov_b32 s9, s15
4307 ; GFX9-NEXT:    ;;#ASMSTART
4308 ; GFX9-NEXT:    ; use s[8:11]
4309 ; GFX9-NEXT:    ;;#ASMEND
4310 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4311   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4312   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4313   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 5>
4314   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4315   ret void
4318 define void @s_shuffle_v2p0_v4p0__7_6() {
4319 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_6:
4320 ; GFX900:       ; %bb.0:
4321 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4322 ; GFX900-NEXT:    ;;#ASMSTART
4323 ; GFX900-NEXT:    ; def s[8:15]
4324 ; GFX900-NEXT:    ;;#ASMEND
4325 ; GFX900-NEXT:    s_mov_b32 s8, s14
4326 ; GFX900-NEXT:    s_mov_b32 s9, s15
4327 ; GFX900-NEXT:    s_mov_b32 s10, s12
4328 ; GFX900-NEXT:    s_mov_b32 s11, s13
4329 ; GFX900-NEXT:    ;;#ASMSTART
4330 ; GFX900-NEXT:    ; use s[8:11]
4331 ; GFX900-NEXT:    ;;#ASMEND
4332 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4334 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_6:
4335 ; GFX90A:       ; %bb.0:
4336 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4337 ; GFX90A-NEXT:    ;;#ASMSTART
4338 ; GFX90A-NEXT:    ; def s[8:15]
4339 ; GFX90A-NEXT:    ;;#ASMEND
4340 ; GFX90A-NEXT:    s_mov_b32 s8, s14
4341 ; GFX90A-NEXT:    s_mov_b32 s9, s15
4342 ; GFX90A-NEXT:    s_mov_b32 s10, s12
4343 ; GFX90A-NEXT:    s_mov_b32 s11, s13
4344 ; GFX90A-NEXT:    ;;#ASMSTART
4345 ; GFX90A-NEXT:    ; use s[8:11]
4346 ; GFX90A-NEXT:    ;;#ASMEND
4347 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4349 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__7_6:
4350 ; GFX940:       ; %bb.0:
4351 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4352 ; GFX940-NEXT:    ;;#ASMSTART
4353 ; GFX940-NEXT:    ; def s[0:7]
4354 ; GFX940-NEXT:    ;;#ASMEND
4355 ; GFX940-NEXT:    s_mov_b32 s8, s6
4356 ; GFX940-NEXT:    s_mov_b32 s9, s7
4357 ; GFX940-NEXT:    s_mov_b32 s10, s4
4358 ; GFX940-NEXT:    s_mov_b32 s11, s5
4359 ; GFX940-NEXT:    ;;#ASMSTART
4360 ; GFX940-NEXT:    ; use s[8:11]
4361 ; GFX940-NEXT:    ;;#ASMEND
4362 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4363   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4364   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4365   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 6>
4366   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4367   ret void
4370 define void @s_shuffle_v2p0_v4p0__7_7() {
4371 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__7_7:
4372 ; GFX9:       ; %bb.0:
4373 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4374 ; GFX9-NEXT:    ;;#ASMSTART
4375 ; GFX9-NEXT:    ; def s[4:11]
4376 ; GFX9-NEXT:    ;;#ASMEND
4377 ; GFX9-NEXT:    s_mov_b32 s8, s10
4378 ; GFX9-NEXT:    s_mov_b32 s9, s11
4379 ; GFX9-NEXT:    ;;#ASMSTART
4380 ; GFX9-NEXT:    ; use s[8:11]
4381 ; GFX9-NEXT:    ;;#ASMEND
4382 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4383   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4384   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4385   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 7>
4386   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4387   ret void
4390 define void @s_shuffle_v2p0_v4p0__u_0() {
4391 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_0:
4392 ; GFX900:       ; %bb.0:
4393 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4394 ; GFX900-NEXT:    ;;#ASMSTART
4395 ; GFX900-NEXT:    ; def s[4:11]
4396 ; GFX900-NEXT:    ;;#ASMEND
4397 ; GFX900-NEXT:    s_mov_b32 s10, s4
4398 ; GFX900-NEXT:    s_mov_b32 s11, s5
4399 ; GFX900-NEXT:    ;;#ASMSTART
4400 ; GFX900-NEXT:    ; use s[8:11]
4401 ; GFX900-NEXT:    ;;#ASMEND
4402 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4404 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_0:
4405 ; GFX90A:       ; %bb.0:
4406 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4407 ; GFX90A-NEXT:    ;;#ASMSTART
4408 ; GFX90A-NEXT:    ; def s[4:11]
4409 ; GFX90A-NEXT:    ;;#ASMEND
4410 ; GFX90A-NEXT:    s_mov_b32 s10, s4
4411 ; GFX90A-NEXT:    s_mov_b32 s11, s5
4412 ; GFX90A-NEXT:    ;;#ASMSTART
4413 ; GFX90A-NEXT:    ; use s[8:11]
4414 ; GFX90A-NEXT:    ;;#ASMEND
4415 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4417 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_0:
4418 ; GFX940:       ; %bb.0:
4419 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4420 ; GFX940-NEXT:    ;;#ASMSTART
4421 ; GFX940-NEXT:    ; def s[0:7]
4422 ; GFX940-NEXT:    ;;#ASMEND
4423 ; GFX940-NEXT:    s_mov_b32 s10, s0
4424 ; GFX940-NEXT:    s_mov_b32 s11, s1
4425 ; GFX940-NEXT:    ;;#ASMSTART
4426 ; GFX940-NEXT:    ; use s[8:11]
4427 ; GFX940-NEXT:    ;;#ASMEND
4428 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4429   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4430   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 0>
4431   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4432   ret void
4435 define void @s_shuffle_v2p0_v4p0__0_0() {
4436 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_0:
4437 ; GFX9:       ; %bb.0:
4438 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4439 ; GFX9-NEXT:    ;;#ASMSTART
4440 ; GFX9-NEXT:    ; def s[8:15]
4441 ; GFX9-NEXT:    ;;#ASMEND
4442 ; GFX9-NEXT:    s_mov_b32 s10, s8
4443 ; GFX9-NEXT:    s_mov_b32 s11, s9
4444 ; GFX9-NEXT:    ;;#ASMSTART
4445 ; GFX9-NEXT:    ; use s[8:11]
4446 ; GFX9-NEXT:    ;;#ASMEND
4447 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4448   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4449   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> zeroinitializer
4450   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4451   ret void
4454 define void @s_shuffle_v2p0_v4p0__1_0() {
4455 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_0:
4456 ; GFX900:       ; %bb.0:
4457 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4458 ; GFX900-NEXT:    ;;#ASMSTART
4459 ; GFX900-NEXT:    ; def s[4:11]
4460 ; GFX900-NEXT:    ;;#ASMEND
4461 ; GFX900-NEXT:    s_mov_b32 s8, s6
4462 ; GFX900-NEXT:    s_mov_b32 s9, s7
4463 ; GFX900-NEXT:    s_mov_b32 s10, s4
4464 ; GFX900-NEXT:    s_mov_b32 s11, s5
4465 ; GFX900-NEXT:    ;;#ASMSTART
4466 ; GFX900-NEXT:    ; use s[8:11]
4467 ; GFX900-NEXT:    ;;#ASMEND
4468 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4470 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_0:
4471 ; GFX90A:       ; %bb.0:
4472 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4473 ; GFX90A-NEXT:    ;;#ASMSTART
4474 ; GFX90A-NEXT:    ; def s[4:11]
4475 ; GFX90A-NEXT:    ;;#ASMEND
4476 ; GFX90A-NEXT:    s_mov_b32 s8, s6
4477 ; GFX90A-NEXT:    s_mov_b32 s9, s7
4478 ; GFX90A-NEXT:    s_mov_b32 s10, s4
4479 ; GFX90A-NEXT:    s_mov_b32 s11, s5
4480 ; GFX90A-NEXT:    ;;#ASMSTART
4481 ; GFX90A-NEXT:    ; use s[8:11]
4482 ; GFX90A-NEXT:    ;;#ASMEND
4483 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4485 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_0:
4486 ; GFX940:       ; %bb.0:
4487 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4488 ; GFX940-NEXT:    ;;#ASMSTART
4489 ; GFX940-NEXT:    ; def s[0:7]
4490 ; GFX940-NEXT:    ;;#ASMEND
4491 ; GFX940-NEXT:    s_mov_b32 s8, s2
4492 ; GFX940-NEXT:    s_mov_b32 s9, s3
4493 ; GFX940-NEXT:    s_mov_b32 s10, s0
4494 ; GFX940-NEXT:    s_mov_b32 s11, s1
4495 ; GFX940-NEXT:    ;;#ASMSTART
4496 ; GFX940-NEXT:    ; use s[8:11]
4497 ; GFX940-NEXT:    ;;#ASMEND
4498 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4499   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4500   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 0>
4501   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4502   ret void
4505 define void @s_shuffle_v2p0_v4p0__2_0() {
4506 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_0:
4507 ; GFX9:       ; %bb.0:
4508 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4509 ; GFX9-NEXT:    ;;#ASMSTART
4510 ; GFX9-NEXT:    ; def s[4:11]
4511 ; GFX9-NEXT:    ;;#ASMEND
4512 ; GFX9-NEXT:    s_mov_b32 s10, s4
4513 ; GFX9-NEXT:    s_mov_b32 s11, s5
4514 ; GFX9-NEXT:    ;;#ASMSTART
4515 ; GFX9-NEXT:    ; use s[8:11]
4516 ; GFX9-NEXT:    ;;#ASMEND
4517 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4518   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4519   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 0>
4520   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4521   ret void
4524 define void @s_shuffle_v2p0_v4p0__3_0() {
4525 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_0:
4526 ; GFX900:       ; %bb.0:
4527 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4528 ; GFX900-NEXT:    ;;#ASMSTART
4529 ; GFX900-NEXT:    ; def s[4:11]
4530 ; GFX900-NEXT:    ;;#ASMEND
4531 ; GFX900-NEXT:    s_mov_b32 s8, s10
4532 ; GFX900-NEXT:    s_mov_b32 s9, s11
4533 ; GFX900-NEXT:    s_mov_b32 s10, s4
4534 ; GFX900-NEXT:    s_mov_b32 s11, s5
4535 ; GFX900-NEXT:    ;;#ASMSTART
4536 ; GFX900-NEXT:    ; use s[8:11]
4537 ; GFX900-NEXT:    ;;#ASMEND
4538 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4540 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_0:
4541 ; GFX90A:       ; %bb.0:
4542 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4543 ; GFX90A-NEXT:    ;;#ASMSTART
4544 ; GFX90A-NEXT:    ; def s[4:11]
4545 ; GFX90A-NEXT:    ;;#ASMEND
4546 ; GFX90A-NEXT:    s_mov_b32 s8, s10
4547 ; GFX90A-NEXT:    s_mov_b32 s9, s11
4548 ; GFX90A-NEXT:    s_mov_b32 s10, s4
4549 ; GFX90A-NEXT:    s_mov_b32 s11, s5
4550 ; GFX90A-NEXT:    ;;#ASMSTART
4551 ; GFX90A-NEXT:    ; use s[8:11]
4552 ; GFX90A-NEXT:    ;;#ASMEND
4553 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4555 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_0:
4556 ; GFX940:       ; %bb.0:
4557 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4558 ; GFX940-NEXT:    ;;#ASMSTART
4559 ; GFX940-NEXT:    ; def s[0:7]
4560 ; GFX940-NEXT:    ;;#ASMEND
4561 ; GFX940-NEXT:    s_mov_b32 s8, s6
4562 ; GFX940-NEXT:    s_mov_b32 s9, s7
4563 ; GFX940-NEXT:    s_mov_b32 s10, s0
4564 ; GFX940-NEXT:    s_mov_b32 s11, s1
4565 ; GFX940-NEXT:    ;;#ASMSTART
4566 ; GFX940-NEXT:    ; use s[8:11]
4567 ; GFX940-NEXT:    ;;#ASMEND
4568 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4569   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4570   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 0>
4571   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4572   ret void
4575 define void @s_shuffle_v2p0_v4p0__4_0() {
4576 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_0:
4577 ; GFX900:       ; %bb.0:
4578 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4579 ; GFX900-NEXT:    ;;#ASMSTART
4580 ; GFX900-NEXT:    ; def s[4:11]
4581 ; GFX900-NEXT:    ;;#ASMEND
4582 ; GFX900-NEXT:    s_mov_b32 s10, s4
4583 ; GFX900-NEXT:    s_mov_b32 s11, s5
4584 ; GFX900-NEXT:    ;;#ASMSTART
4585 ; GFX900-NEXT:    ; use s[8:11]
4586 ; GFX900-NEXT:    ;;#ASMEND
4587 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4589 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_0:
4590 ; GFX90A:       ; %bb.0:
4591 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4592 ; GFX90A-NEXT:    ;;#ASMSTART
4593 ; GFX90A-NEXT:    ; def s[4:11]
4594 ; GFX90A-NEXT:    ;;#ASMEND
4595 ; GFX90A-NEXT:    s_mov_b32 s10, s4
4596 ; GFX90A-NEXT:    s_mov_b32 s11, s5
4597 ; GFX90A-NEXT:    ;;#ASMSTART
4598 ; GFX90A-NEXT:    ; use s[8:11]
4599 ; GFX90A-NEXT:    ;;#ASMEND
4600 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4602 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_0:
4603 ; GFX940:       ; %bb.0:
4604 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4605 ; GFX940-NEXT:    ;;#ASMSTART
4606 ; GFX940-NEXT:    ; def s[0:7]
4607 ; GFX940-NEXT:    ;;#ASMEND
4608 ; GFX940-NEXT:    s_mov_b32 s10, s0
4609 ; GFX940-NEXT:    s_mov_b32 s11, s1
4610 ; GFX940-NEXT:    ;;#ASMSTART
4611 ; GFX940-NEXT:    ; use s[8:11]
4612 ; GFX940-NEXT:    ;;#ASMEND
4613 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4614   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4615   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 0>
4616   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4617   ret void
4620 define void @s_shuffle_v2p0_v4p0__5_0() {
4621 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_0:
4622 ; GFX900:       ; %bb.0:
4623 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4624 ; GFX900-NEXT:    ;;#ASMSTART
4625 ; GFX900-NEXT:    ; def s[4:11]
4626 ; GFX900-NEXT:    ;;#ASMEND
4627 ; GFX900-NEXT:    ;;#ASMSTART
4628 ; GFX900-NEXT:    ; def s[8:15]
4629 ; GFX900-NEXT:    ;;#ASMEND
4630 ; GFX900-NEXT:    s_mov_b32 s8, s10
4631 ; GFX900-NEXT:    s_mov_b32 s9, s11
4632 ; GFX900-NEXT:    s_mov_b32 s10, s4
4633 ; GFX900-NEXT:    s_mov_b32 s11, s5
4634 ; GFX900-NEXT:    ;;#ASMSTART
4635 ; GFX900-NEXT:    ; use s[8:11]
4636 ; GFX900-NEXT:    ;;#ASMEND
4637 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4639 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_0:
4640 ; GFX90A:       ; %bb.0:
4641 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4642 ; GFX90A-NEXT:    ;;#ASMSTART
4643 ; GFX90A-NEXT:    ; def s[4:11]
4644 ; GFX90A-NEXT:    ;;#ASMEND
4645 ; GFX90A-NEXT:    ;;#ASMSTART
4646 ; GFX90A-NEXT:    ; def s[8:15]
4647 ; GFX90A-NEXT:    ;;#ASMEND
4648 ; GFX90A-NEXT:    s_mov_b32 s8, s10
4649 ; GFX90A-NEXT:    s_mov_b32 s9, s11
4650 ; GFX90A-NEXT:    s_mov_b32 s10, s4
4651 ; GFX90A-NEXT:    s_mov_b32 s11, s5
4652 ; GFX90A-NEXT:    ;;#ASMSTART
4653 ; GFX90A-NEXT:    ; use s[8:11]
4654 ; GFX90A-NEXT:    ;;#ASMEND
4655 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4657 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_0:
4658 ; GFX940:       ; %bb.0:
4659 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4660 ; GFX940-NEXT:    ;;#ASMSTART
4661 ; GFX940-NEXT:    ; def s[0:7]
4662 ; GFX940-NEXT:    ;;#ASMEND
4663 ; GFX940-NEXT:    s_nop 0
4664 ; GFX940-NEXT:    ;;#ASMSTART
4665 ; GFX940-NEXT:    ; def s[4:11]
4666 ; GFX940-NEXT:    ;;#ASMEND
4667 ; GFX940-NEXT:    s_mov_b32 s8, s6
4668 ; GFX940-NEXT:    s_mov_b32 s9, s7
4669 ; GFX940-NEXT:    s_mov_b32 s10, s0
4670 ; GFX940-NEXT:    s_mov_b32 s11, s1
4671 ; GFX940-NEXT:    ;;#ASMSTART
4672 ; GFX940-NEXT:    ; use s[8:11]
4673 ; GFX940-NEXT:    ;;#ASMEND
4674 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4675   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4676   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4677   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 0>
4678   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4679   ret void
4682 define void @s_shuffle_v2p0_v4p0__6_0() {
4683 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_0:
4684 ; GFX900:       ; %bb.0:
4685 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4686 ; GFX900-NEXT:    ;;#ASMSTART
4687 ; GFX900-NEXT:    ; def s[4:11]
4688 ; GFX900-NEXT:    ;;#ASMEND
4689 ; GFX900-NEXT:    ;;#ASMSTART
4690 ; GFX900-NEXT:    ; def s[12:19]
4691 ; GFX900-NEXT:    ;;#ASMEND
4692 ; GFX900-NEXT:    s_mov_b32 s10, s12
4693 ; GFX900-NEXT:    s_mov_b32 s11, s13
4694 ; GFX900-NEXT:    ;;#ASMSTART
4695 ; GFX900-NEXT:    ; use s[8:11]
4696 ; GFX900-NEXT:    ;;#ASMEND
4697 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4699 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_0:
4700 ; GFX90A:       ; %bb.0:
4701 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4702 ; GFX90A-NEXT:    ;;#ASMSTART
4703 ; GFX90A-NEXT:    ; def s[4:11]
4704 ; GFX90A-NEXT:    ;;#ASMEND
4705 ; GFX90A-NEXT:    ;;#ASMSTART
4706 ; GFX90A-NEXT:    ; def s[12:19]
4707 ; GFX90A-NEXT:    ;;#ASMEND
4708 ; GFX90A-NEXT:    s_mov_b32 s10, s12
4709 ; GFX90A-NEXT:    s_mov_b32 s11, s13
4710 ; GFX90A-NEXT:    ;;#ASMSTART
4711 ; GFX90A-NEXT:    ; use s[8:11]
4712 ; GFX90A-NEXT:    ;;#ASMEND
4713 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4715 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_0:
4716 ; GFX940:       ; %bb.0:
4717 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4718 ; GFX940-NEXT:    ;;#ASMSTART
4719 ; GFX940-NEXT:    ; def s[0:7]
4720 ; GFX940-NEXT:    ;;#ASMEND
4721 ; GFX940-NEXT:    s_nop 0
4722 ; GFX940-NEXT:    ;;#ASMSTART
4723 ; GFX940-NEXT:    ; def s[4:11]
4724 ; GFX940-NEXT:    ;;#ASMEND
4725 ; GFX940-NEXT:    s_mov_b32 s10, s0
4726 ; GFX940-NEXT:    s_mov_b32 s11, s1
4727 ; GFX940-NEXT:    ;;#ASMSTART
4728 ; GFX940-NEXT:    ; use s[8:11]
4729 ; GFX940-NEXT:    ;;#ASMEND
4730 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4731   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4732   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4733   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 0>
4734   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4735   ret void
4738 define void @s_shuffle_v2p0_v4p0__u_1() {
4739 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_1:
4740 ; GFX900:       ; %bb.0:
4741 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4742 ; GFX900-NEXT:    ;;#ASMSTART
4743 ; GFX900-NEXT:    ; def s[8:15]
4744 ; GFX900-NEXT:    ;;#ASMEND
4745 ; GFX900-NEXT:    ;;#ASMSTART
4746 ; GFX900-NEXT:    ; use s[8:11]
4747 ; GFX900-NEXT:    ;;#ASMEND
4748 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4750 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_1:
4751 ; GFX90A:       ; %bb.0:
4752 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4753 ; GFX90A-NEXT:    ;;#ASMSTART
4754 ; GFX90A-NEXT:    ; def s[8:15]
4755 ; GFX90A-NEXT:    ;;#ASMEND
4756 ; GFX90A-NEXT:    ;;#ASMSTART
4757 ; GFX90A-NEXT:    ; use s[8:11]
4758 ; GFX90A-NEXT:    ;;#ASMEND
4759 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4761 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_1:
4762 ; GFX940:       ; %bb.0:
4763 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4764 ; GFX940-NEXT:    ;;#ASMSTART
4765 ; GFX940-NEXT:    ; def s[8:15]
4766 ; GFX940-NEXT:    ;;#ASMEND
4767 ; GFX940-NEXT:    s_nop 0
4768 ; GFX940-NEXT:    ;;#ASMSTART
4769 ; GFX940-NEXT:    ; use s[8:11]
4770 ; GFX940-NEXT:    ;;#ASMEND
4771 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4772   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4773   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 1>
4774   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4775   ret void
4778 define void @s_shuffle_v2p0_v4p0__0_1() {
4779 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_1:
4780 ; GFX900:       ; %bb.0:
4781 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4782 ; GFX900-NEXT:    ;;#ASMSTART
4783 ; GFX900-NEXT:    ; def s[8:15]
4784 ; GFX900-NEXT:    ;;#ASMEND
4785 ; GFX900-NEXT:    ;;#ASMSTART
4786 ; GFX900-NEXT:    ; use s[8:11]
4787 ; GFX900-NEXT:    ;;#ASMEND
4788 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4790 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_1:
4791 ; GFX90A:       ; %bb.0:
4792 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4793 ; GFX90A-NEXT:    ;;#ASMSTART
4794 ; GFX90A-NEXT:    ; def s[8:15]
4795 ; GFX90A-NEXT:    ;;#ASMEND
4796 ; GFX90A-NEXT:    ;;#ASMSTART
4797 ; GFX90A-NEXT:    ; use s[8:11]
4798 ; GFX90A-NEXT:    ;;#ASMEND
4799 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4801 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_1:
4802 ; GFX940:       ; %bb.0:
4803 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4804 ; GFX940-NEXT:    ;;#ASMSTART
4805 ; GFX940-NEXT:    ; def s[8:15]
4806 ; GFX940-NEXT:    ;;#ASMEND
4807 ; GFX940-NEXT:    s_nop 0
4808 ; GFX940-NEXT:    ;;#ASMSTART
4809 ; GFX940-NEXT:    ; use s[8:11]
4810 ; GFX940-NEXT:    ;;#ASMEND
4811 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4812   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4813   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 1>
4814   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4815   ret void
4818 define void @s_shuffle_v2p0_v4p0__1_1() {
4819 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__1_1:
4820 ; GFX9:       ; %bb.0:
4821 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4822 ; GFX9-NEXT:    ;;#ASMSTART
4823 ; GFX9-NEXT:    ; def s[8:15]
4824 ; GFX9-NEXT:    ;;#ASMEND
4825 ; GFX9-NEXT:    s_mov_b32 s8, s10
4826 ; GFX9-NEXT:    s_mov_b32 s9, s11
4827 ; GFX9-NEXT:    ;;#ASMSTART
4828 ; GFX9-NEXT:    ; use s[8:11]
4829 ; GFX9-NEXT:    ;;#ASMEND
4830 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4831   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4832   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 1>
4833   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4834   ret void
4837 define void @s_shuffle_v2p0_v4p0__2_1() {
4838 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_1:
4839 ; GFX9:       ; %bb.0:
4840 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4841 ; GFX9-NEXT:    ;;#ASMSTART
4842 ; GFX9-NEXT:    ; def s[4:11]
4843 ; GFX9-NEXT:    ;;#ASMEND
4844 ; GFX9-NEXT:    s_mov_b32 s10, s6
4845 ; GFX9-NEXT:    s_mov_b32 s11, s7
4846 ; GFX9-NEXT:    ;;#ASMSTART
4847 ; GFX9-NEXT:    ; use s[8:11]
4848 ; GFX9-NEXT:    ;;#ASMEND
4849 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4850   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4851   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 1>
4852   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4853   ret void
4856 define void @s_shuffle_v2p0_v4p0__3_1() {
4857 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__3_1:
4858 ; GFX9:       ; %bb.0:
4859 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4860 ; GFX9-NEXT:    ;;#ASMSTART
4861 ; GFX9-NEXT:    ; def s[8:15]
4862 ; GFX9-NEXT:    ;;#ASMEND
4863 ; GFX9-NEXT:    s_mov_b32 s8, s14
4864 ; GFX9-NEXT:    s_mov_b32 s9, s15
4865 ; GFX9-NEXT:    ;;#ASMSTART
4866 ; GFX9-NEXT:    ; use s[8:11]
4867 ; GFX9-NEXT:    ;;#ASMEND
4868 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4869   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4870   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 1>
4871   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4872   ret void
4875 define void @s_shuffle_v2p0_v4p0__4_1() {
4876 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_1:
4877 ; GFX900:       ; %bb.0:
4878 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4879 ; GFX900-NEXT:    ;;#ASMSTART
4880 ; GFX900-NEXT:    ; def s[8:15]
4881 ; GFX900-NEXT:    ;;#ASMEND
4882 ; GFX900-NEXT:    ;;#ASMSTART
4883 ; GFX900-NEXT:    ; use s[8:11]
4884 ; GFX900-NEXT:    ;;#ASMEND
4885 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4887 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_1:
4888 ; GFX90A:       ; %bb.0:
4889 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4890 ; GFX90A-NEXT:    ;;#ASMSTART
4891 ; GFX90A-NEXT:    ; def s[8:15]
4892 ; GFX90A-NEXT:    ;;#ASMEND
4893 ; GFX90A-NEXT:    ;;#ASMSTART
4894 ; GFX90A-NEXT:    ; use s[8:11]
4895 ; GFX90A-NEXT:    ;;#ASMEND
4896 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4898 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_1:
4899 ; GFX940:       ; %bb.0:
4900 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4901 ; GFX940-NEXT:    ;;#ASMSTART
4902 ; GFX940-NEXT:    ; def s[8:15]
4903 ; GFX940-NEXT:    ;;#ASMEND
4904 ; GFX940-NEXT:    s_nop 0
4905 ; GFX940-NEXT:    ;;#ASMSTART
4906 ; GFX940-NEXT:    ; use s[8:11]
4907 ; GFX940-NEXT:    ;;#ASMEND
4908 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4909   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4910   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 1>
4911   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4912   ret void
4915 define void @s_shuffle_v2p0_v4p0__5_1() {
4916 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_1:
4917 ; GFX900:       ; %bb.0:
4918 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4919 ; GFX900-NEXT:    ;;#ASMSTART
4920 ; GFX900-NEXT:    ; def s[8:15]
4921 ; GFX900-NEXT:    ;;#ASMEND
4922 ; GFX900-NEXT:    ;;#ASMSTART
4923 ; GFX900-NEXT:    ; def s[12:19]
4924 ; GFX900-NEXT:    ;;#ASMEND
4925 ; GFX900-NEXT:    s_mov_b32 s8, s14
4926 ; GFX900-NEXT:    s_mov_b32 s9, s15
4927 ; GFX900-NEXT:    ;;#ASMSTART
4928 ; GFX900-NEXT:    ; use s[8:11]
4929 ; GFX900-NEXT:    ;;#ASMEND
4930 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4932 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_1:
4933 ; GFX90A:       ; %bb.0:
4934 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4935 ; GFX90A-NEXT:    ;;#ASMSTART
4936 ; GFX90A-NEXT:    ; def s[8:15]
4937 ; GFX90A-NEXT:    ;;#ASMEND
4938 ; GFX90A-NEXT:    ;;#ASMSTART
4939 ; GFX90A-NEXT:    ; def s[12:19]
4940 ; GFX90A-NEXT:    ;;#ASMEND
4941 ; GFX90A-NEXT:    s_mov_b32 s8, s14
4942 ; GFX90A-NEXT:    s_mov_b32 s9, s15
4943 ; GFX90A-NEXT:    ;;#ASMSTART
4944 ; GFX90A-NEXT:    ; use s[8:11]
4945 ; GFX90A-NEXT:    ;;#ASMEND
4946 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4948 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_1:
4949 ; GFX940:       ; %bb.0:
4950 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4951 ; GFX940-NEXT:    ;;#ASMSTART
4952 ; GFX940-NEXT:    ; def s[8:15]
4953 ; GFX940-NEXT:    ;;#ASMEND
4954 ; GFX940-NEXT:    ;;#ASMSTART
4955 ; GFX940-NEXT:    ; def s[0:7]
4956 ; GFX940-NEXT:    ;;#ASMEND
4957 ; GFX940-NEXT:    s_mov_b32 s8, s2
4958 ; GFX940-NEXT:    s_mov_b32 s9, s3
4959 ; GFX940-NEXT:    ;;#ASMSTART
4960 ; GFX940-NEXT:    ; use s[8:11]
4961 ; GFX940-NEXT:    ;;#ASMEND
4962 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4963   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
4964   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
4965   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 1>
4966   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
4967   ret void
4970 define void @s_shuffle_v2p0_v4p0__6_1() {
4971 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_1:
4972 ; GFX900:       ; %bb.0:
4973 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4974 ; GFX900-NEXT:    ;;#ASMSTART
4975 ; GFX900-NEXT:    ; def s[4:11]
4976 ; GFX900-NEXT:    ;;#ASMEND
4977 ; GFX900-NEXT:    ;;#ASMSTART
4978 ; GFX900-NEXT:    ; def s[12:19]
4979 ; GFX900-NEXT:    ;;#ASMEND
4980 ; GFX900-NEXT:    s_mov_b32 s10, s14
4981 ; GFX900-NEXT:    s_mov_b32 s11, s15
4982 ; GFX900-NEXT:    ;;#ASMSTART
4983 ; GFX900-NEXT:    ; use s[8:11]
4984 ; GFX900-NEXT:    ;;#ASMEND
4985 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4987 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_1:
4988 ; GFX90A:       ; %bb.0:
4989 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4990 ; GFX90A-NEXT:    ;;#ASMSTART
4991 ; GFX90A-NEXT:    ; def s[4:11]
4992 ; GFX90A-NEXT:    ;;#ASMEND
4993 ; GFX90A-NEXT:    ;;#ASMSTART
4994 ; GFX90A-NEXT:    ; def s[12:19]
4995 ; GFX90A-NEXT:    ;;#ASMEND
4996 ; GFX90A-NEXT:    s_mov_b32 s10, s14
4997 ; GFX90A-NEXT:    s_mov_b32 s11, s15
4998 ; GFX90A-NEXT:    ;;#ASMSTART
4999 ; GFX90A-NEXT:    ; use s[8:11]
5000 ; GFX90A-NEXT:    ;;#ASMEND
5001 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5003 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_1:
5004 ; GFX940:       ; %bb.0:
5005 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5006 ; GFX940-NEXT:    ;;#ASMSTART
5007 ; GFX940-NEXT:    ; def s[0:7]
5008 ; GFX940-NEXT:    ;;#ASMEND
5009 ; GFX940-NEXT:    s_nop 0
5010 ; GFX940-NEXT:    ;;#ASMSTART
5011 ; GFX940-NEXT:    ; def s[4:11]
5012 ; GFX940-NEXT:    ;;#ASMEND
5013 ; GFX940-NEXT:    s_mov_b32 s10, s2
5014 ; GFX940-NEXT:    s_mov_b32 s11, s3
5015 ; GFX940-NEXT:    ;;#ASMSTART
5016 ; GFX940-NEXT:    ; use s[8:11]
5017 ; GFX940-NEXT:    ;;#ASMEND
5018 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5019   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5020   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
5021   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 1>
5022   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5023   ret void
5026 define void @s_shuffle_v2p0_v4p0__u_2() {
5027 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_2:
5028 ; GFX900:       ; %bb.0:
5029 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5030 ; GFX900-NEXT:    ;;#ASMSTART
5031 ; GFX900-NEXT:    ; def s[4:11]
5032 ; GFX900-NEXT:    ;;#ASMEND
5033 ; GFX900-NEXT:    s_mov_b32 s10, s8
5034 ; GFX900-NEXT:    s_mov_b32 s11, s9
5035 ; GFX900-NEXT:    ;;#ASMSTART
5036 ; GFX900-NEXT:    ; use s[8:11]
5037 ; GFX900-NEXT:    ;;#ASMEND
5038 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5040 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_2:
5041 ; GFX90A:       ; %bb.0:
5042 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5043 ; GFX90A-NEXT:    ;;#ASMSTART
5044 ; GFX90A-NEXT:    ; def s[4:11]
5045 ; GFX90A-NEXT:    ;;#ASMEND
5046 ; GFX90A-NEXT:    s_mov_b32 s10, s8
5047 ; GFX90A-NEXT:    s_mov_b32 s11, s9
5048 ; GFX90A-NEXT:    ;;#ASMSTART
5049 ; GFX90A-NEXT:    ; use s[8:11]
5050 ; GFX90A-NEXT:    ;;#ASMEND
5051 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5053 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_2:
5054 ; GFX940:       ; %bb.0:
5055 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5056 ; GFX940-NEXT:    ;;#ASMSTART
5057 ; GFX940-NEXT:    ; def s[0:7]
5058 ; GFX940-NEXT:    ;;#ASMEND
5059 ; GFX940-NEXT:    s_mov_b32 s10, s4
5060 ; GFX940-NEXT:    s_mov_b32 s11, s5
5061 ; GFX940-NEXT:    ;;#ASMSTART
5062 ; GFX940-NEXT:    ; use s[8:11]
5063 ; GFX940-NEXT:    ;;#ASMEND
5064 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5065   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5066   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 2>
5067   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5068   ret void
5071 define void @s_shuffle_v2p0_v4p0__0_2() {
5072 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_2:
5073 ; GFX9:       ; %bb.0:
5074 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5075 ; GFX9-NEXT:    ;;#ASMSTART
5076 ; GFX9-NEXT:    ; def s[8:15]
5077 ; GFX9-NEXT:    ;;#ASMEND
5078 ; GFX9-NEXT:    s_mov_b32 s10, s12
5079 ; GFX9-NEXT:    s_mov_b32 s11, s13
5080 ; GFX9-NEXT:    ;;#ASMSTART
5081 ; GFX9-NEXT:    ; use s[8:11]
5082 ; GFX9-NEXT:    ;;#ASMEND
5083 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
5084   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5085   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 2>
5086   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5087   ret void
5090 define void @s_shuffle_v2p0_v4p0__1_2() {
5091 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_2:
5092 ; GFX900:       ; %bb.0:
5093 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5094 ; GFX900-NEXT:    ;;#ASMSTART
5095 ; GFX900-NEXT:    ; def s[8:15]
5096 ; GFX900-NEXT:    ;;#ASMEND
5097 ; GFX900-NEXT:    s_mov_b32 s8, s10
5098 ; GFX900-NEXT:    s_mov_b32 s9, s11
5099 ; GFX900-NEXT:    s_mov_b32 s10, s12
5100 ; GFX900-NEXT:    s_mov_b32 s11, s13
5101 ; GFX900-NEXT:    ;;#ASMSTART
5102 ; GFX900-NEXT:    ; use s[8:11]
5103 ; GFX900-NEXT:    ;;#ASMEND
5104 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5106 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_2:
5107 ; GFX90A:       ; %bb.0:
5108 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5109 ; GFX90A-NEXT:    ;;#ASMSTART
5110 ; GFX90A-NEXT:    ; def s[8:15]
5111 ; GFX90A-NEXT:    ;;#ASMEND
5112 ; GFX90A-NEXT:    s_mov_b32 s8, s10
5113 ; GFX90A-NEXT:    s_mov_b32 s9, s11
5114 ; GFX90A-NEXT:    s_mov_b32 s10, s12
5115 ; GFX90A-NEXT:    s_mov_b32 s11, s13
5116 ; GFX90A-NEXT:    ;;#ASMSTART
5117 ; GFX90A-NEXT:    ; use s[8:11]
5118 ; GFX90A-NEXT:    ;;#ASMEND
5119 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5121 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_2:
5122 ; GFX940:       ; %bb.0:
5123 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5124 ; GFX940-NEXT:    ;;#ASMSTART
5125 ; GFX940-NEXT:    ; def s[0:7]
5126 ; GFX940-NEXT:    ;;#ASMEND
5127 ; GFX940-NEXT:    s_mov_b32 s8, s2
5128 ; GFX940-NEXT:    s_mov_b32 s9, s3
5129 ; GFX940-NEXT:    s_mov_b32 s10, s4
5130 ; GFX940-NEXT:    s_mov_b32 s11, s5
5131 ; GFX940-NEXT:    ;;#ASMSTART
5132 ; GFX940-NEXT:    ; use s[8:11]
5133 ; GFX940-NEXT:    ;;#ASMEND
5134 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5135   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5136   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 2>
5137   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5138   ret void
5141 define void @s_shuffle_v2p0_v4p0__2_2() {
5142 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_2:
5143 ; GFX9:       ; %bb.0:
5144 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5145 ; GFX9-NEXT:    ;;#ASMSTART
5146 ; GFX9-NEXT:    ; def s[4:11]
5147 ; GFX9-NEXT:    ;;#ASMEND
5148 ; GFX9-NEXT:    s_mov_b32 s10, s8
5149 ; GFX9-NEXT:    s_mov_b32 s11, s9
5150 ; GFX9-NEXT:    ;;#ASMSTART
5151 ; GFX9-NEXT:    ; use s[8:11]
5152 ; GFX9-NEXT:    ;;#ASMEND
5153 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
5154   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5155   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 2>
5156   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5157   ret void
5160 define void @s_shuffle_v2p0_v4p0__3_2() {
5161 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_2:
5162 ; GFX900:       ; %bb.0:
5163 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5164 ; GFX900-NEXT:    ;;#ASMSTART
5165 ; GFX900-NEXT:    ; def s[8:15]
5166 ; GFX900-NEXT:    ;;#ASMEND
5167 ; GFX900-NEXT:    s_mov_b32 s8, s14
5168 ; GFX900-NEXT:    s_mov_b32 s9, s15
5169 ; GFX900-NEXT:    s_mov_b32 s10, s12
5170 ; GFX900-NEXT:    s_mov_b32 s11, s13
5171 ; GFX900-NEXT:    ;;#ASMSTART
5172 ; GFX900-NEXT:    ; use s[8:11]
5173 ; GFX900-NEXT:    ;;#ASMEND
5174 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5176 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_2:
5177 ; GFX90A:       ; %bb.0:
5178 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5179 ; GFX90A-NEXT:    ;;#ASMSTART
5180 ; GFX90A-NEXT:    ; def s[8:15]
5181 ; GFX90A-NEXT:    ;;#ASMEND
5182 ; GFX90A-NEXT:    s_mov_b32 s8, s14
5183 ; GFX90A-NEXT:    s_mov_b32 s9, s15
5184 ; GFX90A-NEXT:    s_mov_b32 s10, s12
5185 ; GFX90A-NEXT:    s_mov_b32 s11, s13
5186 ; GFX90A-NEXT:    ;;#ASMSTART
5187 ; GFX90A-NEXT:    ; use s[8:11]
5188 ; GFX90A-NEXT:    ;;#ASMEND
5189 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5191 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_2:
5192 ; GFX940:       ; %bb.0:
5193 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5194 ; GFX940-NEXT:    ;;#ASMSTART
5195 ; GFX940-NEXT:    ; def s[0:7]
5196 ; GFX940-NEXT:    ;;#ASMEND
5197 ; GFX940-NEXT:    s_mov_b32 s8, s6
5198 ; GFX940-NEXT:    s_mov_b32 s9, s7
5199 ; GFX940-NEXT:    s_mov_b32 s10, s4
5200 ; GFX940-NEXT:    s_mov_b32 s11, s5
5201 ; GFX940-NEXT:    ;;#ASMSTART
5202 ; GFX940-NEXT:    ; use s[8:11]
5203 ; GFX940-NEXT:    ;;#ASMEND
5204 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5205   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5206   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 2>
5207   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5208   ret void
5211 define void @s_shuffle_v2p0_v4p0__4_2() {
5212 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_2:
5213 ; GFX900:       ; %bb.0:
5214 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5215 ; GFX900-NEXT:    ;;#ASMSTART
5216 ; GFX900-NEXT:    ; def s[4:11]
5217 ; GFX900-NEXT:    ;;#ASMEND
5218 ; GFX900-NEXT:    s_mov_b32 s10, s8
5219 ; GFX900-NEXT:    s_mov_b32 s11, s9
5220 ; GFX900-NEXT:    ;;#ASMSTART
5221 ; GFX900-NEXT:    ; use s[8:11]
5222 ; GFX900-NEXT:    ;;#ASMEND
5223 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5225 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_2:
5226 ; GFX90A:       ; %bb.0:
5227 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5228 ; GFX90A-NEXT:    ;;#ASMSTART
5229 ; GFX90A-NEXT:    ; def s[4:11]
5230 ; GFX90A-NEXT:    ;;#ASMEND
5231 ; GFX90A-NEXT:    s_mov_b32 s10, s8
5232 ; GFX90A-NEXT:    s_mov_b32 s11, s9
5233 ; GFX90A-NEXT:    ;;#ASMSTART
5234 ; GFX90A-NEXT:    ; use s[8:11]
5235 ; GFX90A-NEXT:    ;;#ASMEND
5236 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5238 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_2:
5239 ; GFX940:       ; %bb.0:
5240 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5241 ; GFX940-NEXT:    ;;#ASMSTART
5242 ; GFX940-NEXT:    ; def s[0:7]
5243 ; GFX940-NEXT:    ;;#ASMEND
5244 ; GFX940-NEXT:    s_mov_b32 s10, s4
5245 ; GFX940-NEXT:    s_mov_b32 s11, s5
5246 ; GFX940-NEXT:    ;;#ASMSTART
5247 ; GFX940-NEXT:    ; use s[8:11]
5248 ; GFX940-NEXT:    ;;#ASMEND
5249 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5250   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5251   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 2>
5252   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5253   ret void
5256 define void @s_shuffle_v2p0_v4p0__5_2() {
5257 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_2:
5258 ; GFX900:       ; %bb.0:
5259 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5260 ; GFX900-NEXT:    ;;#ASMSTART
5261 ; GFX900-NEXT:    ; def s[8:15]
5262 ; GFX900-NEXT:    ;;#ASMEND
5263 ; GFX900-NEXT:    ;;#ASMSTART
5264 ; GFX900-NEXT:    ; def s[4:11]
5265 ; GFX900-NEXT:    ;;#ASMEND
5266 ; GFX900-NEXT:    s_mov_b32 s8, s6
5267 ; GFX900-NEXT:    s_mov_b32 s9, s7
5268 ; GFX900-NEXT:    s_mov_b32 s10, s12
5269 ; GFX900-NEXT:    s_mov_b32 s11, s13
5270 ; GFX900-NEXT:    ;;#ASMSTART
5271 ; GFX900-NEXT:    ; use s[8:11]
5272 ; GFX900-NEXT:    ;;#ASMEND
5273 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5275 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_2:
5276 ; GFX90A:       ; %bb.0:
5277 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5278 ; GFX90A-NEXT:    ;;#ASMSTART
5279 ; GFX90A-NEXT:    ; def s[8:15]
5280 ; GFX90A-NEXT:    ;;#ASMEND
5281 ; GFX90A-NEXT:    ;;#ASMSTART
5282 ; GFX90A-NEXT:    ; def s[4:11]
5283 ; GFX90A-NEXT:    ;;#ASMEND
5284 ; GFX90A-NEXT:    s_mov_b32 s8, s6
5285 ; GFX90A-NEXT:    s_mov_b32 s9, s7
5286 ; GFX90A-NEXT:    s_mov_b32 s10, s12
5287 ; GFX90A-NEXT:    s_mov_b32 s11, s13
5288 ; GFX90A-NEXT:    ;;#ASMSTART
5289 ; GFX90A-NEXT:    ; use s[8:11]
5290 ; GFX90A-NEXT:    ;;#ASMEND
5291 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5293 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_2:
5294 ; GFX940:       ; %bb.0:
5295 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5296 ; GFX940-NEXT:    ;;#ASMSTART
5297 ; GFX940-NEXT:    ; def s[8:15]
5298 ; GFX940-NEXT:    ;;#ASMEND
5299 ; GFX940-NEXT:    ;;#ASMSTART
5300 ; GFX940-NEXT:    ; def s[0:7]
5301 ; GFX940-NEXT:    ;;#ASMEND
5302 ; GFX940-NEXT:    s_mov_b32 s8, s10
5303 ; GFX940-NEXT:    s_mov_b32 s9, s11
5304 ; GFX940-NEXT:    s_mov_b32 s10, s4
5305 ; GFX940-NEXT:    s_mov_b32 s11, s5
5306 ; GFX940-NEXT:    ;;#ASMSTART
5307 ; GFX940-NEXT:    ; use s[8:11]
5308 ; GFX940-NEXT:    ;;#ASMEND
5309 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5310   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5311   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
5312   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 2>
5313   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5314   ret void
5317 define void @s_shuffle_v2p0_v4p0__6_2() {
5318 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_2:
5319 ; GFX900:       ; %bb.0:
5320 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5321 ; GFX900-NEXT:    ;;#ASMSTART
5322 ; GFX900-NEXT:    ; def s[8:15]
5323 ; GFX900-NEXT:    ;;#ASMEND
5324 ; GFX900-NEXT:    ;;#ASMSTART
5325 ; GFX900-NEXT:    ; def s[4:11]
5326 ; GFX900-NEXT:    ;;#ASMEND
5327 ; GFX900-NEXT:    s_mov_b32 s10, s12
5328 ; GFX900-NEXT:    s_mov_b32 s11, s13
5329 ; GFX900-NEXT:    ;;#ASMSTART
5330 ; GFX900-NEXT:    ; use s[8:11]
5331 ; GFX900-NEXT:    ;;#ASMEND
5332 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5334 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_2:
5335 ; GFX90A:       ; %bb.0:
5336 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5337 ; GFX90A-NEXT:    ;;#ASMSTART
5338 ; GFX90A-NEXT:    ; def s[8:15]
5339 ; GFX90A-NEXT:    ;;#ASMEND
5340 ; GFX90A-NEXT:    ;;#ASMSTART
5341 ; GFX90A-NEXT:    ; def s[4:11]
5342 ; GFX90A-NEXT:    ;;#ASMEND
5343 ; GFX90A-NEXT:    s_mov_b32 s10, s12
5344 ; GFX90A-NEXT:    s_mov_b32 s11, s13
5345 ; GFX90A-NEXT:    ;;#ASMSTART
5346 ; GFX90A-NEXT:    ; use s[8:11]
5347 ; GFX90A-NEXT:    ;;#ASMEND
5348 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5350 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_2:
5351 ; GFX940:       ; %bb.0:
5352 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5353 ; GFX940-NEXT:    ;;#ASMSTART
5354 ; GFX940-NEXT:    ; def s[8:15]
5355 ; GFX940-NEXT:    ;;#ASMEND
5356 ; GFX940-NEXT:    s_nop 0
5357 ; GFX940-NEXT:    ;;#ASMSTART
5358 ; GFX940-NEXT:    ; def s[4:11]
5359 ; GFX940-NEXT:    ;;#ASMEND
5360 ; GFX940-NEXT:    s_mov_b32 s10, s12
5361 ; GFX940-NEXT:    s_mov_b32 s11, s13
5362 ; GFX940-NEXT:    ;;#ASMSTART
5363 ; GFX940-NEXT:    ; use s[8:11]
5364 ; GFX940-NEXT:    ;;#ASMEND
5365 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5366   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5367   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
5368   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 2>
5369   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5370   ret void
5373 define void @s_shuffle_v2p0_v4p0__u_3() {
5374 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_3:
5375 ; GFX900:       ; %bb.0:
5376 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5377 ; GFX900-NEXT:    ;;#ASMSTART
5378 ; GFX900-NEXT:    ; def s[4:11]
5379 ; GFX900-NEXT:    ;;#ASMEND
5380 ; GFX900-NEXT:    ;;#ASMSTART
5381 ; GFX900-NEXT:    ; use s[8:11]
5382 ; GFX900-NEXT:    ;;#ASMEND
5383 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5385 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_3:
5386 ; GFX90A:       ; %bb.0:
5387 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5388 ; GFX90A-NEXT:    ;;#ASMSTART
5389 ; GFX90A-NEXT:    ; def s[4:11]
5390 ; GFX90A-NEXT:    ;;#ASMEND
5391 ; GFX90A-NEXT:    ;;#ASMSTART
5392 ; GFX90A-NEXT:    ; use s[8:11]
5393 ; GFX90A-NEXT:    ;;#ASMEND
5394 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5396 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_3:
5397 ; GFX940:       ; %bb.0:
5398 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5399 ; GFX940-NEXT:    ;;#ASMSTART
5400 ; GFX940-NEXT:    ; def s[4:11]
5401 ; GFX940-NEXT:    ;;#ASMEND
5402 ; GFX940-NEXT:    s_nop 0
5403 ; GFX940-NEXT:    ;;#ASMSTART
5404 ; GFX940-NEXT:    ; use s[8:11]
5405 ; GFX940-NEXT:    ;;#ASMEND
5406 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5407   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5408   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 3>
5409   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5410   ret void
5413 define void @s_shuffle_v2p0_v4p0__0_3() {
5414 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_3:
5415 ; GFX9:       ; %bb.0:
5416 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5417 ; GFX9-NEXT:    ;;#ASMSTART
5418 ; GFX9-NEXT:    ; def s[8:15]
5419 ; GFX9-NEXT:    ;;#ASMEND
5420 ; GFX9-NEXT:    s_mov_b32 s10, s14
5421 ; GFX9-NEXT:    s_mov_b32 s11, s15
5422 ; GFX9-NEXT:    ;;#ASMSTART
5423 ; GFX9-NEXT:    ; use s[8:11]
5424 ; GFX9-NEXT:    ;;#ASMEND
5425 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
5426   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5427   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 3>
5428   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5429   ret void
5432 define void @s_shuffle_v2p0_v4p0__1_3() {
5433 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__1_3:
5434 ; GFX9:       ; %bb.0:
5435 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5436 ; GFX9-NEXT:    ;;#ASMSTART
5437 ; GFX9-NEXT:    ; def s[4:11]
5438 ; GFX9-NEXT:    ;;#ASMEND
5439 ; GFX9-NEXT:    s_mov_b32 s8, s6
5440 ; GFX9-NEXT:    s_mov_b32 s9, s7
5441 ; GFX9-NEXT:    ;;#ASMSTART
5442 ; GFX9-NEXT:    ; use s[8:11]
5443 ; GFX9-NEXT:    ;;#ASMEND
5444 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
5445   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5446   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 3>
5447   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5448   ret void
5451 define void @s_shuffle_v2p0_v4p0__2_3() {
5452 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_3:
5453 ; GFX900:       ; %bb.0:
5454 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5455 ; GFX900-NEXT:    ;;#ASMSTART
5456 ; GFX900-NEXT:    ; def s[4:11]
5457 ; GFX900-NEXT:    ;;#ASMEND
5458 ; GFX900-NEXT:    ;;#ASMSTART
5459 ; GFX900-NEXT:    ; use s[8:11]
5460 ; GFX900-NEXT:    ;;#ASMEND
5461 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5463 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_3:
5464 ; GFX90A:       ; %bb.0:
5465 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5466 ; GFX90A-NEXT:    ;;#ASMSTART
5467 ; GFX90A-NEXT:    ; def s[4:11]
5468 ; GFX90A-NEXT:    ;;#ASMEND
5469 ; GFX90A-NEXT:    ;;#ASMSTART
5470 ; GFX90A-NEXT:    ; use s[8:11]
5471 ; GFX90A-NEXT:    ;;#ASMEND
5472 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5474 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_3:
5475 ; GFX940:       ; %bb.0:
5476 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5477 ; GFX940-NEXT:    ;;#ASMSTART
5478 ; GFX940-NEXT:    ; def s[4:11]
5479 ; GFX940-NEXT:    ;;#ASMEND
5480 ; GFX940-NEXT:    s_nop 0
5481 ; GFX940-NEXT:    ;;#ASMSTART
5482 ; GFX940-NEXT:    ; use s[8:11]
5483 ; GFX940-NEXT:    ;;#ASMEND
5484 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5485   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5486   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 3>
5487   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5488   ret void
5491 define void @s_shuffle_v2p0_v4p0__3_3() {
5492 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__3_3:
5493 ; GFX9:       ; %bb.0:
5494 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5495 ; GFX9-NEXT:    ;;#ASMSTART
5496 ; GFX9-NEXT:    ; def s[4:11]
5497 ; GFX9-NEXT:    ;;#ASMEND
5498 ; GFX9-NEXT:    s_mov_b32 s8, s10
5499 ; GFX9-NEXT:    s_mov_b32 s9, s11
5500 ; GFX9-NEXT:    ;;#ASMSTART
5501 ; GFX9-NEXT:    ; use s[8:11]
5502 ; GFX9-NEXT:    ;;#ASMEND
5503 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
5504   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5505   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 3>
5506   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5507   ret void
5510 define void @s_shuffle_v2p0_v4p0__4_3() {
5511 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_3:
5512 ; GFX900:       ; %bb.0:
5513 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5514 ; GFX900-NEXT:    ;;#ASMSTART
5515 ; GFX900-NEXT:    ; def s[4:11]
5516 ; GFX900-NEXT:    ;;#ASMEND
5517 ; GFX900-NEXT:    ;;#ASMSTART
5518 ; GFX900-NEXT:    ; use s[8:11]
5519 ; GFX900-NEXT:    ;;#ASMEND
5520 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5522 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_3:
5523 ; GFX90A:       ; %bb.0:
5524 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5525 ; GFX90A-NEXT:    ;;#ASMSTART
5526 ; GFX90A-NEXT:    ; def s[4:11]
5527 ; GFX90A-NEXT:    ;;#ASMEND
5528 ; GFX90A-NEXT:    ;;#ASMSTART
5529 ; GFX90A-NEXT:    ; use s[8:11]
5530 ; GFX90A-NEXT:    ;;#ASMEND
5531 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5533 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_3:
5534 ; GFX940:       ; %bb.0:
5535 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5536 ; GFX940-NEXT:    ;;#ASMSTART
5537 ; GFX940-NEXT:    ; def s[4:11]
5538 ; GFX940-NEXT:    ;;#ASMEND
5539 ; GFX940-NEXT:    s_nop 0
5540 ; GFX940-NEXT:    ;;#ASMSTART
5541 ; GFX940-NEXT:    ; use s[8:11]
5542 ; GFX940-NEXT:    ;;#ASMEND
5543 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5544   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5545   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 3>
5546   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5547   ret void
5550 define void @s_shuffle_v2p0_v4p0__5_3() {
5551 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_3:
5552 ; GFX900:       ; %bb.0:
5553 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5554 ; GFX900-NEXT:    ;;#ASMSTART
5555 ; GFX900-NEXT:    ; def s[4:11]
5556 ; GFX900-NEXT:    ;;#ASMEND
5557 ; GFX900-NEXT:    ;;#ASMSTART
5558 ; GFX900-NEXT:    ; def s[12:19]
5559 ; GFX900-NEXT:    ;;#ASMEND
5560 ; GFX900-NEXT:    s_mov_b32 s8, s14
5561 ; GFX900-NEXT:    s_mov_b32 s9, s15
5562 ; GFX900-NEXT:    ;;#ASMSTART
5563 ; GFX900-NEXT:    ; use s[8:11]
5564 ; GFX900-NEXT:    ;;#ASMEND
5565 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5567 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_3:
5568 ; GFX90A:       ; %bb.0:
5569 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5570 ; GFX90A-NEXT:    ;;#ASMSTART
5571 ; GFX90A-NEXT:    ; def s[4:11]
5572 ; GFX90A-NEXT:    ;;#ASMEND
5573 ; GFX90A-NEXT:    ;;#ASMSTART
5574 ; GFX90A-NEXT:    ; def s[12:19]
5575 ; GFX90A-NEXT:    ;;#ASMEND
5576 ; GFX90A-NEXT:    s_mov_b32 s8, s14
5577 ; GFX90A-NEXT:    s_mov_b32 s9, s15
5578 ; GFX90A-NEXT:    ;;#ASMSTART
5579 ; GFX90A-NEXT:    ; use s[8:11]
5580 ; GFX90A-NEXT:    ;;#ASMEND
5581 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5583 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_3:
5584 ; GFX940:       ; %bb.0:
5585 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5586 ; GFX940-NEXT:    ;;#ASMSTART
5587 ; GFX940-NEXT:    ; def s[4:11]
5588 ; GFX940-NEXT:    ;;#ASMEND
5589 ; GFX940-NEXT:    s_nop 0
5590 ; GFX940-NEXT:    ;;#ASMSTART
5591 ; GFX940-NEXT:    ; def s[0:7]
5592 ; GFX940-NEXT:    ;;#ASMEND
5593 ; GFX940-NEXT:    s_mov_b32 s8, s2
5594 ; GFX940-NEXT:    s_mov_b32 s9, s3
5595 ; GFX940-NEXT:    ;;#ASMSTART
5596 ; GFX940-NEXT:    ; use s[8:11]
5597 ; GFX940-NEXT:    ;;#ASMEND
5598 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5599   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5600   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
5601   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 3>
5602   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5603   ret void
5606 define void @s_shuffle_v2p0_v4p0__6_3() {
5607 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_3:
5608 ; GFX900:       ; %bb.0:
5609 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5610 ; GFX900-NEXT:    ;;#ASMSTART
5611 ; GFX900-NEXT:    ; def s[8:15]
5612 ; GFX900-NEXT:    ;;#ASMEND
5613 ; GFX900-NEXT:    ;;#ASMSTART
5614 ; GFX900-NEXT:    ; def s[4:11]
5615 ; GFX900-NEXT:    ;;#ASMEND
5616 ; GFX900-NEXT:    s_mov_b32 s10, s14
5617 ; GFX900-NEXT:    s_mov_b32 s11, s15
5618 ; GFX900-NEXT:    ;;#ASMSTART
5619 ; GFX900-NEXT:    ; use s[8:11]
5620 ; GFX900-NEXT:    ;;#ASMEND
5621 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5623 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_3:
5624 ; GFX90A:       ; %bb.0:
5625 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5626 ; GFX90A-NEXT:    ;;#ASMSTART
5627 ; GFX90A-NEXT:    ; def s[8:15]
5628 ; GFX90A-NEXT:    ;;#ASMEND
5629 ; GFX90A-NEXT:    ;;#ASMSTART
5630 ; GFX90A-NEXT:    ; def s[4:11]
5631 ; GFX90A-NEXT:    ;;#ASMEND
5632 ; GFX90A-NEXT:    s_mov_b32 s10, s14
5633 ; GFX90A-NEXT:    s_mov_b32 s11, s15
5634 ; GFX90A-NEXT:    ;;#ASMSTART
5635 ; GFX90A-NEXT:    ; use s[8:11]
5636 ; GFX90A-NEXT:    ;;#ASMEND
5637 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5639 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_3:
5640 ; GFX940:       ; %bb.0:
5641 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5642 ; GFX940-NEXT:    ;;#ASMSTART
5643 ; GFX940-NEXT:    ; def s[8:15]
5644 ; GFX940-NEXT:    ;;#ASMEND
5645 ; GFX940-NEXT:    s_nop 0
5646 ; GFX940-NEXT:    ;;#ASMSTART
5647 ; GFX940-NEXT:    ; def s[4:11]
5648 ; GFX940-NEXT:    ;;#ASMEND
5649 ; GFX940-NEXT:    s_mov_b32 s10, s14
5650 ; GFX940-NEXT:    s_mov_b32 s11, s15
5651 ; GFX940-NEXT:    ;;#ASMSTART
5652 ; GFX940-NEXT:    ; use s[8:11]
5653 ; GFX940-NEXT:    ;;#ASMEND
5654 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5655   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5656   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
5657   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 3>
5658   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5659   ret void
5662 define void @s_shuffle_v2p0_v4p0__u_4() {
5663 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__u_4:
5664 ; GFX9:       ; %bb.0:
5665 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5666 ; GFX9-NEXT:    ;;#ASMSTART
5667 ; GFX9-NEXT:    ; use s[8:11]
5668 ; GFX9-NEXT:    ;;#ASMEND
5669 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
5670   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5671   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 4>
5672   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5673   ret void
5676 define void @s_shuffle_v2p0_v4p0__0_4() {
5677 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_4:
5678 ; GFX900:       ; %bb.0:
5679 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5680 ; GFX900-NEXT:    ;;#ASMSTART
5681 ; GFX900-NEXT:    ; def s[8:15]
5682 ; GFX900-NEXT:    ;;#ASMEND
5683 ; GFX900-NEXT:    ;;#ASMSTART
5684 ; GFX900-NEXT:    ; use s[8:11]
5685 ; GFX900-NEXT:    ;;#ASMEND
5686 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5688 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_4:
5689 ; GFX90A:       ; %bb.0:
5690 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5691 ; GFX90A-NEXT:    ;;#ASMSTART
5692 ; GFX90A-NEXT:    ; def s[8:15]
5693 ; GFX90A-NEXT:    ;;#ASMEND
5694 ; GFX90A-NEXT:    ;;#ASMSTART
5695 ; GFX90A-NEXT:    ; use s[8:11]
5696 ; GFX90A-NEXT:    ;;#ASMEND
5697 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5699 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_4:
5700 ; GFX940:       ; %bb.0:
5701 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5702 ; GFX940-NEXT:    ;;#ASMSTART
5703 ; GFX940-NEXT:    ; def s[8:15]
5704 ; GFX940-NEXT:    ;;#ASMEND
5705 ; GFX940-NEXT:    s_nop 0
5706 ; GFX940-NEXT:    ;;#ASMSTART
5707 ; GFX940-NEXT:    ; use s[8:11]
5708 ; GFX940-NEXT:    ;;#ASMEND
5709 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5710   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5711   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 4>
5712   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5713   ret void
5716 define void @s_shuffle_v2p0_v4p0__1_4() {
5717 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_4:
5718 ; GFX900:       ; %bb.0:
5719 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5720 ; GFX900-NEXT:    ;;#ASMSTART
5721 ; GFX900-NEXT:    ; def s[4:11]
5722 ; GFX900-NEXT:    ;;#ASMEND
5723 ; GFX900-NEXT:    s_mov_b32 s8, s6
5724 ; GFX900-NEXT:    s_mov_b32 s9, s7
5725 ; GFX900-NEXT:    ;;#ASMSTART
5726 ; GFX900-NEXT:    ; use s[8:11]
5727 ; GFX900-NEXT:    ;;#ASMEND
5728 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5730 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_4:
5731 ; GFX90A:       ; %bb.0:
5732 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5733 ; GFX90A-NEXT:    ;;#ASMSTART
5734 ; GFX90A-NEXT:    ; def s[4:11]
5735 ; GFX90A-NEXT:    ;;#ASMEND
5736 ; GFX90A-NEXT:    s_mov_b32 s8, s6
5737 ; GFX90A-NEXT:    s_mov_b32 s9, s7
5738 ; GFX90A-NEXT:    ;;#ASMSTART
5739 ; GFX90A-NEXT:    ; use s[8:11]
5740 ; GFX90A-NEXT:    ;;#ASMEND
5741 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5743 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_4:
5744 ; GFX940:       ; %bb.0:
5745 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5746 ; GFX940-NEXT:    ;;#ASMSTART
5747 ; GFX940-NEXT:    ; def s[0:7]
5748 ; GFX940-NEXT:    ;;#ASMEND
5749 ; GFX940-NEXT:    s_mov_b32 s8, s2
5750 ; GFX940-NEXT:    s_mov_b32 s9, s3
5751 ; GFX940-NEXT:    ;;#ASMSTART
5752 ; GFX940-NEXT:    ; use s[8:11]
5753 ; GFX940-NEXT:    ;;#ASMEND
5754 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5755   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5756   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 4>
5757   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5758   ret void
5761 define void @s_shuffle_v2p0_v4p0__2_4() {
5762 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_4:
5763 ; GFX900:       ; %bb.0:
5764 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5765 ; GFX900-NEXT:    ;;#ASMSTART
5766 ; GFX900-NEXT:    ; def s[4:11]
5767 ; GFX900-NEXT:    ;;#ASMEND
5768 ; GFX900-NEXT:    ;;#ASMSTART
5769 ; GFX900-NEXT:    ; use s[8:11]
5770 ; GFX900-NEXT:    ;;#ASMEND
5771 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5773 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_4:
5774 ; GFX90A:       ; %bb.0:
5775 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5776 ; GFX90A-NEXT:    ;;#ASMSTART
5777 ; GFX90A-NEXT:    ; def s[4:11]
5778 ; GFX90A-NEXT:    ;;#ASMEND
5779 ; GFX90A-NEXT:    ;;#ASMSTART
5780 ; GFX90A-NEXT:    ; use s[8:11]
5781 ; GFX90A-NEXT:    ;;#ASMEND
5782 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5784 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_4:
5785 ; GFX940:       ; %bb.0:
5786 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5787 ; GFX940-NEXT:    ;;#ASMSTART
5788 ; GFX940-NEXT:    ; def s[4:11]
5789 ; GFX940-NEXT:    ;;#ASMEND
5790 ; GFX940-NEXT:    s_nop 0
5791 ; GFX940-NEXT:    ;;#ASMSTART
5792 ; GFX940-NEXT:    ; use s[8:11]
5793 ; GFX940-NEXT:    ;;#ASMEND
5794 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5795   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5796   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 4>
5797   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5798   ret void
5801 define void @s_shuffle_v2p0_v4p0__3_4() {
5802 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_4:
5803 ; GFX900:       ; %bb.0:
5804 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5805 ; GFX900-NEXT:    ;;#ASMSTART
5806 ; GFX900-NEXT:    ; def s[4:11]
5807 ; GFX900-NEXT:    ;;#ASMEND
5808 ; GFX900-NEXT:    s_mov_b32 s8, s10
5809 ; GFX900-NEXT:    s_mov_b32 s9, s11
5810 ; GFX900-NEXT:    ;;#ASMSTART
5811 ; GFX900-NEXT:    ; use s[8:11]
5812 ; GFX900-NEXT:    ;;#ASMEND
5813 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5815 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_4:
5816 ; GFX90A:       ; %bb.0:
5817 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5818 ; GFX90A-NEXT:    ;;#ASMSTART
5819 ; GFX90A-NEXT:    ; def s[4:11]
5820 ; GFX90A-NEXT:    ;;#ASMEND
5821 ; GFX90A-NEXT:    s_mov_b32 s8, s10
5822 ; GFX90A-NEXT:    s_mov_b32 s9, s11
5823 ; GFX90A-NEXT:    ;;#ASMSTART
5824 ; GFX90A-NEXT:    ; use s[8:11]
5825 ; GFX90A-NEXT:    ;;#ASMEND
5826 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5828 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_4:
5829 ; GFX940:       ; %bb.0:
5830 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5831 ; GFX940-NEXT:    ;;#ASMSTART
5832 ; GFX940-NEXT:    ; def s[0:7]
5833 ; GFX940-NEXT:    ;;#ASMEND
5834 ; GFX940-NEXT:    s_mov_b32 s8, s6
5835 ; GFX940-NEXT:    s_mov_b32 s9, s7
5836 ; GFX940-NEXT:    ;;#ASMSTART
5837 ; GFX940-NEXT:    ; use s[8:11]
5838 ; GFX940-NEXT:    ;;#ASMEND
5839 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5840   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5841   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 4>
5842   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5843   ret void
5846 define void @s_shuffle_v2p0_v4p0__4_4() {
5847 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_4:
5848 ; GFX9:       ; %bb.0:
5849 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5850 ; GFX9-NEXT:    ;;#ASMSTART
5851 ; GFX9-NEXT:    ; use s[8:11]
5852 ; GFX9-NEXT:    ;;#ASMEND
5853 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
5854   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5855   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 4>
5856   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5857   ret void
5860 define void @s_shuffle_v2p0_v4p0__5_4() {
5861 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_4:
5862 ; GFX900:       ; %bb.0:
5863 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5864 ; GFX900-NEXT:    ;;#ASMSTART
5865 ; GFX900-NEXT:    ; def s[4:11]
5866 ; GFX900-NEXT:    ;;#ASMEND
5867 ; GFX900-NEXT:    s_mov_b32 s8, s6
5868 ; GFX900-NEXT:    s_mov_b32 s9, s7
5869 ; GFX900-NEXT:    s_mov_b32 s10, s4
5870 ; GFX900-NEXT:    s_mov_b32 s11, s5
5871 ; GFX900-NEXT:    ;;#ASMSTART
5872 ; GFX900-NEXT:    ; use s[8:11]
5873 ; GFX900-NEXT:    ;;#ASMEND
5874 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5876 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_4:
5877 ; GFX90A:       ; %bb.0:
5878 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5879 ; GFX90A-NEXT:    ;;#ASMSTART
5880 ; GFX90A-NEXT:    ; def s[4:11]
5881 ; GFX90A-NEXT:    ;;#ASMEND
5882 ; GFX90A-NEXT:    s_mov_b32 s8, s6
5883 ; GFX90A-NEXT:    s_mov_b32 s9, s7
5884 ; GFX90A-NEXT:    s_mov_b32 s10, s4
5885 ; GFX90A-NEXT:    s_mov_b32 s11, s5
5886 ; GFX90A-NEXT:    ;;#ASMSTART
5887 ; GFX90A-NEXT:    ; use s[8:11]
5888 ; GFX90A-NEXT:    ;;#ASMEND
5889 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5891 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_4:
5892 ; GFX940:       ; %bb.0:
5893 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5894 ; GFX940-NEXT:    ;;#ASMSTART
5895 ; GFX940-NEXT:    ; def s[0:7]
5896 ; GFX940-NEXT:    ;;#ASMEND
5897 ; GFX940-NEXT:    s_mov_b32 s8, s2
5898 ; GFX940-NEXT:    s_mov_b32 s9, s3
5899 ; GFX940-NEXT:    s_mov_b32 s10, s0
5900 ; GFX940-NEXT:    s_mov_b32 s11, s1
5901 ; GFX940-NEXT:    ;;#ASMSTART
5902 ; GFX940-NEXT:    ; use s[8:11]
5903 ; GFX940-NEXT:    ;;#ASMEND
5904 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5905   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5906   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
5907   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 4>
5908   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5909   ret void
5912 define void @s_shuffle_v2p0_v4p0__6_4() {
5913 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_4:
5914 ; GFX9:       ; %bb.0:
5915 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5916 ; GFX9-NEXT:    ;;#ASMSTART
5917 ; GFX9-NEXT:    ; def s[4:11]
5918 ; GFX9-NEXT:    ;;#ASMEND
5919 ; GFX9-NEXT:    s_mov_b32 s10, s4
5920 ; GFX9-NEXT:    s_mov_b32 s11, s5
5921 ; GFX9-NEXT:    ;;#ASMSTART
5922 ; GFX9-NEXT:    ; use s[8:11]
5923 ; GFX9-NEXT:    ;;#ASMEND
5924 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
5925   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5926   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
5927   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 4>
5928   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5929   ret void
5932 define void @s_shuffle_v2p0_v4p0__u_5() {
5933 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_5:
5934 ; GFX900:       ; %bb.0:
5935 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5936 ; GFX900-NEXT:    ;;#ASMSTART
5937 ; GFX900-NEXT:    ; def s[8:15]
5938 ; GFX900-NEXT:    ;;#ASMEND
5939 ; GFX900-NEXT:    ;;#ASMSTART
5940 ; GFX900-NEXT:    ; use s[8:11]
5941 ; GFX900-NEXT:    ;;#ASMEND
5942 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5944 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_5:
5945 ; GFX90A:       ; %bb.0:
5946 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5947 ; GFX90A-NEXT:    ;;#ASMSTART
5948 ; GFX90A-NEXT:    ; def s[8:15]
5949 ; GFX90A-NEXT:    ;;#ASMEND
5950 ; GFX90A-NEXT:    ;;#ASMSTART
5951 ; GFX90A-NEXT:    ; use s[8:11]
5952 ; GFX90A-NEXT:    ;;#ASMEND
5953 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5955 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_5:
5956 ; GFX940:       ; %bb.0:
5957 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5958 ; GFX940-NEXT:    ;;#ASMSTART
5959 ; GFX940-NEXT:    ; def s[8:15]
5960 ; GFX940-NEXT:    ;;#ASMEND
5961 ; GFX940-NEXT:    s_nop 0
5962 ; GFX940-NEXT:    ;;#ASMSTART
5963 ; GFX940-NEXT:    ; use s[8:11]
5964 ; GFX940-NEXT:    ;;#ASMEND
5965 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5966   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
5967   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
5968   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>
5969   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
5970   ret void
5973 define void @s_shuffle_v2p0_v4p0__0_5() {
5974 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_5:
5975 ; GFX900:       ; %bb.0:
5976 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5977 ; GFX900-NEXT:    ;;#ASMSTART
5978 ; GFX900-NEXT:    ; def s[8:15]
5979 ; GFX900-NEXT:    ;;#ASMEND
5980 ; GFX900-NEXT:    ;;#ASMSTART
5981 ; GFX900-NEXT:    ; def s[12:19]
5982 ; GFX900-NEXT:    ;;#ASMEND
5983 ; GFX900-NEXT:    s_mov_b32 s10, s14
5984 ; GFX900-NEXT:    s_mov_b32 s11, s15
5985 ; GFX900-NEXT:    ;;#ASMSTART
5986 ; GFX900-NEXT:    ; use s[8:11]
5987 ; GFX900-NEXT:    ;;#ASMEND
5988 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5990 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_5:
5991 ; GFX90A:       ; %bb.0:
5992 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5993 ; GFX90A-NEXT:    ;;#ASMSTART
5994 ; GFX90A-NEXT:    ; def s[8:15]
5995 ; GFX90A-NEXT:    ;;#ASMEND
5996 ; GFX90A-NEXT:    ;;#ASMSTART
5997 ; GFX90A-NEXT:    ; def s[12:19]
5998 ; GFX90A-NEXT:    ;;#ASMEND
5999 ; GFX90A-NEXT:    s_mov_b32 s10, s14
6000 ; GFX90A-NEXT:    s_mov_b32 s11, s15
6001 ; GFX90A-NEXT:    ;;#ASMSTART
6002 ; GFX90A-NEXT:    ; use s[8:11]
6003 ; GFX90A-NEXT:    ;;#ASMEND
6004 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6006 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_5:
6007 ; GFX940:       ; %bb.0:
6008 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6009 ; GFX940-NEXT:    ;;#ASMSTART
6010 ; GFX940-NEXT:    ; def s[8:15]
6011 ; GFX940-NEXT:    ;;#ASMEND
6012 ; GFX940-NEXT:    ;;#ASMSTART
6013 ; GFX940-NEXT:    ; def s[0:7]
6014 ; GFX940-NEXT:    ;;#ASMEND
6015 ; GFX940-NEXT:    s_mov_b32 s10, s2
6016 ; GFX940-NEXT:    s_mov_b32 s11, s3
6017 ; GFX940-NEXT:    ;;#ASMSTART
6018 ; GFX940-NEXT:    ; use s[8:11]
6019 ; GFX940-NEXT:    ;;#ASMEND
6020 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6021   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6022   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6023   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 5>
6024   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6025   ret void
6028 define void @s_shuffle_v2p0_v4p0__1_5() {
6029 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_5:
6030 ; GFX900:       ; %bb.0:
6031 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6032 ; GFX900-NEXT:    ;;#ASMSTART
6033 ; GFX900-NEXT:    ; def s[4:11]
6034 ; GFX900-NEXT:    ;;#ASMEND
6035 ; GFX900-NEXT:    ;;#ASMSTART
6036 ; GFX900-NEXT:    ; def s[8:15]
6037 ; GFX900-NEXT:    ;;#ASMEND
6038 ; GFX900-NEXT:    s_mov_b32 s8, s6
6039 ; GFX900-NEXT:    s_mov_b32 s9, s7
6040 ; GFX900-NEXT:    ;;#ASMSTART
6041 ; GFX900-NEXT:    ; use s[8:11]
6042 ; GFX900-NEXT:    ;;#ASMEND
6043 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6045 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_5:
6046 ; GFX90A:       ; %bb.0:
6047 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6048 ; GFX90A-NEXT:    ;;#ASMSTART
6049 ; GFX90A-NEXT:    ; def s[4:11]
6050 ; GFX90A-NEXT:    ;;#ASMEND
6051 ; GFX90A-NEXT:    ;;#ASMSTART
6052 ; GFX90A-NEXT:    ; def s[8:15]
6053 ; GFX90A-NEXT:    ;;#ASMEND
6054 ; GFX90A-NEXT:    s_mov_b32 s8, s6
6055 ; GFX90A-NEXT:    s_mov_b32 s9, s7
6056 ; GFX90A-NEXT:    ;;#ASMSTART
6057 ; GFX90A-NEXT:    ; use s[8:11]
6058 ; GFX90A-NEXT:    ;;#ASMEND
6059 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6061 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_5:
6062 ; GFX940:       ; %bb.0:
6063 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6064 ; GFX940-NEXT:    ;;#ASMSTART
6065 ; GFX940-NEXT:    ; def s[8:15]
6066 ; GFX940-NEXT:    ;;#ASMEND
6067 ; GFX940-NEXT:    ;;#ASMSTART
6068 ; GFX940-NEXT:    ; def s[0:7]
6069 ; GFX940-NEXT:    ;;#ASMEND
6070 ; GFX940-NEXT:    s_mov_b32 s8, s2
6071 ; GFX940-NEXT:    s_mov_b32 s9, s3
6072 ; GFX940-NEXT:    ;;#ASMSTART
6073 ; GFX940-NEXT:    ; use s[8:11]
6074 ; GFX940-NEXT:    ;;#ASMEND
6075 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6076   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6077   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6078   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 5>
6079   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6080   ret void
6083 define void @s_shuffle_v2p0_v4p0__2_5() {
6084 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_5:
6085 ; GFX900:       ; %bb.0:
6086 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6087 ; GFX900-NEXT:    ;;#ASMSTART
6088 ; GFX900-NEXT:    ; def s[4:11]
6089 ; GFX900-NEXT:    ;;#ASMEND
6090 ; GFX900-NEXT:    ;;#ASMSTART
6091 ; GFX900-NEXT:    ; def s[12:19]
6092 ; GFX900-NEXT:    ;;#ASMEND
6093 ; GFX900-NEXT:    s_mov_b32 s10, s14
6094 ; GFX900-NEXT:    s_mov_b32 s11, s15
6095 ; GFX900-NEXT:    ;;#ASMSTART
6096 ; GFX900-NEXT:    ; use s[8:11]
6097 ; GFX900-NEXT:    ;;#ASMEND
6098 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6100 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_5:
6101 ; GFX90A:       ; %bb.0:
6102 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6103 ; GFX90A-NEXT:    ;;#ASMSTART
6104 ; GFX90A-NEXT:    ; def s[4:11]
6105 ; GFX90A-NEXT:    ;;#ASMEND
6106 ; GFX90A-NEXT:    ;;#ASMSTART
6107 ; GFX90A-NEXT:    ; def s[12:19]
6108 ; GFX90A-NEXT:    ;;#ASMEND
6109 ; GFX90A-NEXT:    s_mov_b32 s10, s14
6110 ; GFX90A-NEXT:    s_mov_b32 s11, s15
6111 ; GFX90A-NEXT:    ;;#ASMSTART
6112 ; GFX90A-NEXT:    ; use s[8:11]
6113 ; GFX90A-NEXT:    ;;#ASMEND
6114 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6116 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_5:
6117 ; GFX940:       ; %bb.0:
6118 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6119 ; GFX940-NEXT:    ;;#ASMSTART
6120 ; GFX940-NEXT:    ; def s[4:11]
6121 ; GFX940-NEXT:    ;;#ASMEND
6122 ; GFX940-NEXT:    s_nop 0
6123 ; GFX940-NEXT:    ;;#ASMSTART
6124 ; GFX940-NEXT:    ; def s[0:7]
6125 ; GFX940-NEXT:    ;;#ASMEND
6126 ; GFX940-NEXT:    s_mov_b32 s10, s2
6127 ; GFX940-NEXT:    s_mov_b32 s11, s3
6128 ; GFX940-NEXT:    ;;#ASMSTART
6129 ; GFX940-NEXT:    ; use s[8:11]
6130 ; GFX940-NEXT:    ;;#ASMEND
6131 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6132   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6133   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6134   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 5>
6135   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6136   ret void
6139 define void @s_shuffle_v2p0_v4p0__3_5() {
6140 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_5:
6141 ; GFX900:       ; %bb.0:
6142 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6143 ; GFX900-NEXT:    ;;#ASMSTART
6144 ; GFX900-NEXT:    ; def s[12:19]
6145 ; GFX900-NEXT:    ;;#ASMEND
6146 ; GFX900-NEXT:    ;;#ASMSTART
6147 ; GFX900-NEXT:    ; def s[8:15]
6148 ; GFX900-NEXT:    ;;#ASMEND
6149 ; GFX900-NEXT:    s_mov_b32 s8, s18
6150 ; GFX900-NEXT:    s_mov_b32 s9, s19
6151 ; GFX900-NEXT:    ;;#ASMSTART
6152 ; GFX900-NEXT:    ; use s[8:11]
6153 ; GFX900-NEXT:    ;;#ASMEND
6154 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6156 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_5:
6157 ; GFX90A:       ; %bb.0:
6158 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6159 ; GFX90A-NEXT:    ;;#ASMSTART
6160 ; GFX90A-NEXT:    ; def s[12:19]
6161 ; GFX90A-NEXT:    ;;#ASMEND
6162 ; GFX90A-NEXT:    ;;#ASMSTART
6163 ; GFX90A-NEXT:    ; def s[8:15]
6164 ; GFX90A-NEXT:    ;;#ASMEND
6165 ; GFX90A-NEXT:    s_mov_b32 s8, s18
6166 ; GFX90A-NEXT:    s_mov_b32 s9, s19
6167 ; GFX90A-NEXT:    ;;#ASMSTART
6168 ; GFX90A-NEXT:    ; use s[8:11]
6169 ; GFX90A-NEXT:    ;;#ASMEND
6170 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6172 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_5:
6173 ; GFX940:       ; %bb.0:
6174 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6175 ; GFX940-NEXT:    ;;#ASMSTART
6176 ; GFX940-NEXT:    ; def s[8:15]
6177 ; GFX940-NEXT:    ;;#ASMEND
6178 ; GFX940-NEXT:    ;;#ASMSTART
6179 ; GFX940-NEXT:    ; def s[0:7]
6180 ; GFX940-NEXT:    ;;#ASMEND
6181 ; GFX940-NEXT:    s_mov_b32 s8, s6
6182 ; GFX940-NEXT:    s_mov_b32 s9, s7
6183 ; GFX940-NEXT:    ;;#ASMSTART
6184 ; GFX940-NEXT:    ; use s[8:11]
6185 ; GFX940-NEXT:    ;;#ASMEND
6186 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6187   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6188   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6189   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 5>
6190   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6191   ret void
6194 define void @s_shuffle_v2p0_v4p0__4_5() {
6195 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_5:
6196 ; GFX900:       ; %bb.0:
6197 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6198 ; GFX900-NEXT:    ;;#ASMSTART
6199 ; GFX900-NEXT:    ; def s[8:15]
6200 ; GFX900-NEXT:    ;;#ASMEND
6201 ; GFX900-NEXT:    ;;#ASMSTART
6202 ; GFX900-NEXT:    ; use s[8:11]
6203 ; GFX900-NEXT:    ;;#ASMEND
6204 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6206 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_5:
6207 ; GFX90A:       ; %bb.0:
6208 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6209 ; GFX90A-NEXT:    ;;#ASMSTART
6210 ; GFX90A-NEXT:    ; def s[8:15]
6211 ; GFX90A-NEXT:    ;;#ASMEND
6212 ; GFX90A-NEXT:    ;;#ASMSTART
6213 ; GFX90A-NEXT:    ; use s[8:11]
6214 ; GFX90A-NEXT:    ;;#ASMEND
6215 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6217 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__4_5:
6218 ; GFX940:       ; %bb.0:
6219 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6220 ; GFX940-NEXT:    ;;#ASMSTART
6221 ; GFX940-NEXT:    ; def s[8:15]
6222 ; GFX940-NEXT:    ;;#ASMEND
6223 ; GFX940-NEXT:    s_nop 0
6224 ; GFX940-NEXT:    ;;#ASMSTART
6225 ; GFX940-NEXT:    ; use s[8:11]
6226 ; GFX940-NEXT:    ;;#ASMEND
6227 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6228   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6229   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6230   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 5>
6231   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6232   ret void
6235 define void @s_shuffle_v2p0_v4p0__5_5() {
6236 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__5_5:
6237 ; GFX9:       ; %bb.0:
6238 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6239 ; GFX9-NEXT:    ;;#ASMSTART
6240 ; GFX9-NEXT:    ; def s[8:15]
6241 ; GFX9-NEXT:    ;;#ASMEND
6242 ; GFX9-NEXT:    s_mov_b32 s8, s10
6243 ; GFX9-NEXT:    s_mov_b32 s9, s11
6244 ; GFX9-NEXT:    ;;#ASMSTART
6245 ; GFX9-NEXT:    ; use s[8:11]
6246 ; GFX9-NEXT:    ;;#ASMEND
6247 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
6248   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6249   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6250   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 5>
6251   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6252   ret void
6255 define void @s_shuffle_v2p0_v4p0__6_5() {
6256 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_5:
6257 ; GFX9:       ; %bb.0:
6258 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6259 ; GFX9-NEXT:    ;;#ASMSTART
6260 ; GFX9-NEXT:    ; def s[4:11]
6261 ; GFX9-NEXT:    ;;#ASMEND
6262 ; GFX9-NEXT:    s_mov_b32 s10, s6
6263 ; GFX9-NEXT:    s_mov_b32 s11, s7
6264 ; GFX9-NEXT:    ;;#ASMSTART
6265 ; GFX9-NEXT:    ; use s[8:11]
6266 ; GFX9-NEXT:    ;;#ASMEND
6267 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
6268   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6269   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6270   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 5>
6271   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6272   ret void
6275 define void @s_shuffle_v2p0_v4p0__u_6() {
6276 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_6:
6277 ; GFX900:       ; %bb.0:
6278 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6279 ; GFX900-NEXT:    ;;#ASMSTART
6280 ; GFX900-NEXT:    ; def s[4:11]
6281 ; GFX900-NEXT:    ;;#ASMEND
6282 ; GFX900-NEXT:    s_mov_b32 s10, s8
6283 ; GFX900-NEXT:    s_mov_b32 s11, s9
6284 ; GFX900-NEXT:    ;;#ASMSTART
6285 ; GFX900-NEXT:    ; use s[8:11]
6286 ; GFX900-NEXT:    ;;#ASMEND
6287 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6289 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_6:
6290 ; GFX90A:       ; %bb.0:
6291 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6292 ; GFX90A-NEXT:    ;;#ASMSTART
6293 ; GFX90A-NEXT:    ; def s[4:11]
6294 ; GFX90A-NEXT:    ;;#ASMEND
6295 ; GFX90A-NEXT:    s_mov_b32 s10, s8
6296 ; GFX90A-NEXT:    s_mov_b32 s11, s9
6297 ; GFX90A-NEXT:    ;;#ASMSTART
6298 ; GFX90A-NEXT:    ; use s[8:11]
6299 ; GFX90A-NEXT:    ;;#ASMEND
6300 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6302 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_6:
6303 ; GFX940:       ; %bb.0:
6304 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6305 ; GFX940-NEXT:    ;;#ASMSTART
6306 ; GFX940-NEXT:    ; def s[0:7]
6307 ; GFX940-NEXT:    ;;#ASMEND
6308 ; GFX940-NEXT:    s_mov_b32 s10, s4
6309 ; GFX940-NEXT:    s_mov_b32 s11, s5
6310 ; GFX940-NEXT:    ;;#ASMSTART
6311 ; GFX940-NEXT:    ; use s[8:11]
6312 ; GFX940-NEXT:    ;;#ASMEND
6313 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6314   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6315   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6316   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 6>
6317   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6318   ret void
6321 define void @s_shuffle_v2p0_v4p0__0_6() {
6322 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_6:
6323 ; GFX900:       ; %bb.0:
6324 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6325 ; GFX900-NEXT:    ;;#ASMSTART
6326 ; GFX900-NEXT:    ; def s[8:15]
6327 ; GFX900-NEXT:    ;;#ASMEND
6328 ; GFX900-NEXT:    ;;#ASMSTART
6329 ; GFX900-NEXT:    ; def s[12:19]
6330 ; GFX900-NEXT:    ;;#ASMEND
6331 ; GFX900-NEXT:    s_mov_b32 s10, s16
6332 ; GFX900-NEXT:    s_mov_b32 s11, s17
6333 ; GFX900-NEXT:    ;;#ASMSTART
6334 ; GFX900-NEXT:    ; use s[8:11]
6335 ; GFX900-NEXT:    ;;#ASMEND
6336 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6338 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_6:
6339 ; GFX90A:       ; %bb.0:
6340 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6341 ; GFX90A-NEXT:    ;;#ASMSTART
6342 ; GFX90A-NEXT:    ; def s[8:15]
6343 ; GFX90A-NEXT:    ;;#ASMEND
6344 ; GFX90A-NEXT:    ;;#ASMSTART
6345 ; GFX90A-NEXT:    ; def s[12:19]
6346 ; GFX90A-NEXT:    ;;#ASMEND
6347 ; GFX90A-NEXT:    s_mov_b32 s10, s16
6348 ; GFX90A-NEXT:    s_mov_b32 s11, s17
6349 ; GFX90A-NEXT:    ;;#ASMSTART
6350 ; GFX90A-NEXT:    ; use s[8:11]
6351 ; GFX90A-NEXT:    ;;#ASMEND
6352 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6354 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_6:
6355 ; GFX940:       ; %bb.0:
6356 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6357 ; GFX940-NEXT:    ;;#ASMSTART
6358 ; GFX940-NEXT:    ; def s[8:15]
6359 ; GFX940-NEXT:    ;;#ASMEND
6360 ; GFX940-NEXT:    ;;#ASMSTART
6361 ; GFX940-NEXT:    ; def s[0:7]
6362 ; GFX940-NEXT:    ;;#ASMEND
6363 ; GFX940-NEXT:    s_mov_b32 s10, s4
6364 ; GFX940-NEXT:    s_mov_b32 s11, s5
6365 ; GFX940-NEXT:    ;;#ASMSTART
6366 ; GFX940-NEXT:    ; use s[8:11]
6367 ; GFX940-NEXT:    ;;#ASMEND
6368 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6369   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6370   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6371   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 6>
6372   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6373   ret void
6376 define void @s_shuffle_v2p0_v4p0__1_6() {
6377 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_6:
6378 ; GFX900:       ; %bb.0:
6379 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6380 ; GFX900-NEXT:    ;;#ASMSTART
6381 ; GFX900-NEXT:    ; def s[4:11]
6382 ; GFX900-NEXT:    ;;#ASMEND
6383 ; GFX900-NEXT:    ;;#ASMSTART
6384 ; GFX900-NEXT:    ; def s[8:15]
6385 ; GFX900-NEXT:    ;;#ASMEND
6386 ; GFX900-NEXT:    s_mov_b32 s8, s6
6387 ; GFX900-NEXT:    s_mov_b32 s9, s7
6388 ; GFX900-NEXT:    s_mov_b32 s10, s12
6389 ; GFX900-NEXT:    s_mov_b32 s11, s13
6390 ; GFX900-NEXT:    ;;#ASMSTART
6391 ; GFX900-NEXT:    ; use s[8:11]
6392 ; GFX900-NEXT:    ;;#ASMEND
6393 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6395 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_6:
6396 ; GFX90A:       ; %bb.0:
6397 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6398 ; GFX90A-NEXT:    ;;#ASMSTART
6399 ; GFX90A-NEXT:    ; def s[4:11]
6400 ; GFX90A-NEXT:    ;;#ASMEND
6401 ; GFX90A-NEXT:    ;;#ASMSTART
6402 ; GFX90A-NEXT:    ; def s[8:15]
6403 ; GFX90A-NEXT:    ;;#ASMEND
6404 ; GFX90A-NEXT:    s_mov_b32 s8, s6
6405 ; GFX90A-NEXT:    s_mov_b32 s9, s7
6406 ; GFX90A-NEXT:    s_mov_b32 s10, s12
6407 ; GFX90A-NEXT:    s_mov_b32 s11, s13
6408 ; GFX90A-NEXT:    ;;#ASMSTART
6409 ; GFX90A-NEXT:    ; use s[8:11]
6410 ; GFX90A-NEXT:    ;;#ASMEND
6411 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6413 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_6:
6414 ; GFX940:       ; %bb.0:
6415 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6416 ; GFX940-NEXT:    ;;#ASMSTART
6417 ; GFX940-NEXT:    ; def s[8:15]
6418 ; GFX940-NEXT:    ;;#ASMEND
6419 ; GFX940-NEXT:    ;;#ASMSTART
6420 ; GFX940-NEXT:    ; def s[0:7]
6421 ; GFX940-NEXT:    ;;#ASMEND
6422 ; GFX940-NEXT:    s_mov_b32 s8, s2
6423 ; GFX940-NEXT:    s_mov_b32 s9, s3
6424 ; GFX940-NEXT:    s_mov_b32 s10, s12
6425 ; GFX940-NEXT:    s_mov_b32 s11, s13
6426 ; GFX940-NEXT:    ;;#ASMSTART
6427 ; GFX940-NEXT:    ; use s[8:11]
6428 ; GFX940-NEXT:    ;;#ASMEND
6429 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6430   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6431   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6432   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 6>
6433   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6434   ret void
6437 define void @s_shuffle_v2p0_v4p0__2_6() {
6438 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_6:
6439 ; GFX900:       ; %bb.0:
6440 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6441 ; GFX900-NEXT:    ;;#ASMSTART
6442 ; GFX900-NEXT:    ; def s[4:11]
6443 ; GFX900-NEXT:    ;;#ASMEND
6444 ; GFX900-NEXT:    ;;#ASMSTART
6445 ; GFX900-NEXT:    ; def s[12:19]
6446 ; GFX900-NEXT:    ;;#ASMEND
6447 ; GFX900-NEXT:    s_mov_b32 s10, s16
6448 ; GFX900-NEXT:    s_mov_b32 s11, s17
6449 ; GFX900-NEXT:    ;;#ASMSTART
6450 ; GFX900-NEXT:    ; use s[8:11]
6451 ; GFX900-NEXT:    ;;#ASMEND
6452 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6454 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_6:
6455 ; GFX90A:       ; %bb.0:
6456 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6457 ; GFX90A-NEXT:    ;;#ASMSTART
6458 ; GFX90A-NEXT:    ; def s[4:11]
6459 ; GFX90A-NEXT:    ;;#ASMEND
6460 ; GFX90A-NEXT:    ;;#ASMSTART
6461 ; GFX90A-NEXT:    ; def s[12:19]
6462 ; GFX90A-NEXT:    ;;#ASMEND
6463 ; GFX90A-NEXT:    s_mov_b32 s10, s16
6464 ; GFX90A-NEXT:    s_mov_b32 s11, s17
6465 ; GFX90A-NEXT:    ;;#ASMSTART
6466 ; GFX90A-NEXT:    ; use s[8:11]
6467 ; GFX90A-NEXT:    ;;#ASMEND
6468 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6470 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_6:
6471 ; GFX940:       ; %bb.0:
6472 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6473 ; GFX940-NEXT:    ;;#ASMSTART
6474 ; GFX940-NEXT:    ; def s[4:11]
6475 ; GFX940-NEXT:    ;;#ASMEND
6476 ; GFX940-NEXT:    s_nop 0
6477 ; GFX940-NEXT:    ;;#ASMSTART
6478 ; GFX940-NEXT:    ; def s[0:7]
6479 ; GFX940-NEXT:    ;;#ASMEND
6480 ; GFX940-NEXT:    s_mov_b32 s10, s4
6481 ; GFX940-NEXT:    s_mov_b32 s11, s5
6482 ; GFX940-NEXT:    ;;#ASMSTART
6483 ; GFX940-NEXT:    ; use s[8:11]
6484 ; GFX940-NEXT:    ;;#ASMEND
6485 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6486   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6487   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6488   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 6>
6489   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6490   ret void
6493 define void @s_shuffle_v2p0_v4p0__3_6() {
6494 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_6:
6495 ; GFX900:       ; %bb.0:
6496 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6497 ; GFX900-NEXT:    ;;#ASMSTART
6498 ; GFX900-NEXT:    ; def s[4:11]
6499 ; GFX900-NEXT:    ;;#ASMEND
6500 ; GFX900-NEXT:    ;;#ASMSTART
6501 ; GFX900-NEXT:    ; def s[12:19]
6502 ; GFX900-NEXT:    ;;#ASMEND
6503 ; GFX900-NEXT:    s_mov_b32 s8, s10
6504 ; GFX900-NEXT:    s_mov_b32 s9, s11
6505 ; GFX900-NEXT:    s_mov_b32 s10, s16
6506 ; GFX900-NEXT:    s_mov_b32 s11, s17
6507 ; GFX900-NEXT:    ;;#ASMSTART
6508 ; GFX900-NEXT:    ; use s[8:11]
6509 ; GFX900-NEXT:    ;;#ASMEND
6510 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6512 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_6:
6513 ; GFX90A:       ; %bb.0:
6514 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6515 ; GFX90A-NEXT:    ;;#ASMSTART
6516 ; GFX90A-NEXT:    ; def s[4:11]
6517 ; GFX90A-NEXT:    ;;#ASMEND
6518 ; GFX90A-NEXT:    ;;#ASMSTART
6519 ; GFX90A-NEXT:    ; def s[12:19]
6520 ; GFX90A-NEXT:    ;;#ASMEND
6521 ; GFX90A-NEXT:    s_mov_b32 s8, s10
6522 ; GFX90A-NEXT:    s_mov_b32 s9, s11
6523 ; GFX90A-NEXT:    s_mov_b32 s10, s16
6524 ; GFX90A-NEXT:    s_mov_b32 s11, s17
6525 ; GFX90A-NEXT:    ;;#ASMSTART
6526 ; GFX90A-NEXT:    ; use s[8:11]
6527 ; GFX90A-NEXT:    ;;#ASMEND
6528 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6530 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_6:
6531 ; GFX940:       ; %bb.0:
6532 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6533 ; GFX940-NEXT:    ;;#ASMSTART
6534 ; GFX940-NEXT:    ; def s[8:15]
6535 ; GFX940-NEXT:    ;;#ASMEND
6536 ; GFX940-NEXT:    ;;#ASMSTART
6537 ; GFX940-NEXT:    ; def s[0:7]
6538 ; GFX940-NEXT:    ;;#ASMEND
6539 ; GFX940-NEXT:    s_mov_b32 s8, s6
6540 ; GFX940-NEXT:    s_mov_b32 s9, s7
6541 ; GFX940-NEXT:    s_mov_b32 s10, s12
6542 ; GFX940-NEXT:    s_mov_b32 s11, s13
6543 ; GFX940-NEXT:    ;;#ASMSTART
6544 ; GFX940-NEXT:    ; use s[8:11]
6545 ; GFX940-NEXT:    ;;#ASMEND
6546 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6547   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6548   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6549   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 6>
6550   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6551   ret void
6554 define void @s_shuffle_v2p0_v4p0__4_6() {
6555 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_6:
6556 ; GFX9:       ; %bb.0:
6557 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6558 ; GFX9-NEXT:    ;;#ASMSTART
6559 ; GFX9-NEXT:    ; def s[8:15]
6560 ; GFX9-NEXT:    ;;#ASMEND
6561 ; GFX9-NEXT:    s_mov_b32 s10, s12
6562 ; GFX9-NEXT:    s_mov_b32 s11, s13
6563 ; GFX9-NEXT:    ;;#ASMSTART
6564 ; GFX9-NEXT:    ; use s[8:11]
6565 ; GFX9-NEXT:    ;;#ASMEND
6566 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
6567   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6568   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6569   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 6>
6570   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6571   ret void
6574 define void @s_shuffle_v2p0_v4p0__5_6() {
6575 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_6:
6576 ; GFX900:       ; %bb.0:
6577 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6578 ; GFX900-NEXT:    ;;#ASMSTART
6579 ; GFX900-NEXT:    ; def s[8:15]
6580 ; GFX900-NEXT:    ;;#ASMEND
6581 ; GFX900-NEXT:    s_mov_b32 s8, s10
6582 ; GFX900-NEXT:    s_mov_b32 s9, s11
6583 ; GFX900-NEXT:    s_mov_b32 s10, s12
6584 ; GFX900-NEXT:    s_mov_b32 s11, s13
6585 ; GFX900-NEXT:    ;;#ASMSTART
6586 ; GFX900-NEXT:    ; use s[8:11]
6587 ; GFX900-NEXT:    ;;#ASMEND
6588 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6590 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_6:
6591 ; GFX90A:       ; %bb.0:
6592 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6593 ; GFX90A-NEXT:    ;;#ASMSTART
6594 ; GFX90A-NEXT:    ; def s[8:15]
6595 ; GFX90A-NEXT:    ;;#ASMEND
6596 ; GFX90A-NEXT:    s_mov_b32 s8, s10
6597 ; GFX90A-NEXT:    s_mov_b32 s9, s11
6598 ; GFX90A-NEXT:    s_mov_b32 s10, s12
6599 ; GFX90A-NEXT:    s_mov_b32 s11, s13
6600 ; GFX90A-NEXT:    ;;#ASMSTART
6601 ; GFX90A-NEXT:    ; use s[8:11]
6602 ; GFX90A-NEXT:    ;;#ASMEND
6603 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6605 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__5_6:
6606 ; GFX940:       ; %bb.0:
6607 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6608 ; GFX940-NEXT:    ;;#ASMSTART
6609 ; GFX940-NEXT:    ; def s[0:7]
6610 ; GFX940-NEXT:    ;;#ASMEND
6611 ; GFX940-NEXT:    s_mov_b32 s8, s2
6612 ; GFX940-NEXT:    s_mov_b32 s9, s3
6613 ; GFX940-NEXT:    s_mov_b32 s10, s4
6614 ; GFX940-NEXT:    s_mov_b32 s11, s5
6615 ; GFX940-NEXT:    ;;#ASMSTART
6616 ; GFX940-NEXT:    ; use s[8:11]
6617 ; GFX940-NEXT:    ;;#ASMEND
6618 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6619   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6620   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6621   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 6>
6622   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6623   ret void
6626 define void @s_shuffle_v2p0_v4p0__6_6() {
6627 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_6:
6628 ; GFX9:       ; %bb.0:
6629 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6630 ; GFX9-NEXT:    ;;#ASMSTART
6631 ; GFX9-NEXT:    ; def s[4:11]
6632 ; GFX9-NEXT:    ;;#ASMEND
6633 ; GFX9-NEXT:    s_mov_b32 s10, s8
6634 ; GFX9-NEXT:    s_mov_b32 s11, s9
6635 ; GFX9-NEXT:    ;;#ASMSTART
6636 ; GFX9-NEXT:    ; use s[8:11]
6637 ; GFX9-NEXT:    ;;#ASMEND
6638 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
6639   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6640   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6641   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 6>
6642   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6643   ret void
6646 define void @s_shuffle_v2p0_v4p0__u_7() {
6647 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_7:
6648 ; GFX900:       ; %bb.0:
6649 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6650 ; GFX900-NEXT:    ;;#ASMSTART
6651 ; GFX900-NEXT:    ; def s[4:11]
6652 ; GFX900-NEXT:    ;;#ASMEND
6653 ; GFX900-NEXT:    ;;#ASMSTART
6654 ; GFX900-NEXT:    ; use s[8:11]
6655 ; GFX900-NEXT:    ;;#ASMEND
6656 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6658 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_7:
6659 ; GFX90A:       ; %bb.0:
6660 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6661 ; GFX90A-NEXT:    ;;#ASMSTART
6662 ; GFX90A-NEXT:    ; def s[4:11]
6663 ; GFX90A-NEXT:    ;;#ASMEND
6664 ; GFX90A-NEXT:    ;;#ASMSTART
6665 ; GFX90A-NEXT:    ; use s[8:11]
6666 ; GFX90A-NEXT:    ;;#ASMEND
6667 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6669 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__u_7:
6670 ; GFX940:       ; %bb.0:
6671 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6672 ; GFX940-NEXT:    ;;#ASMSTART
6673 ; GFX940-NEXT:    ; def s[4:11]
6674 ; GFX940-NEXT:    ;;#ASMEND
6675 ; GFX940-NEXT:    s_nop 0
6676 ; GFX940-NEXT:    ;;#ASMSTART
6677 ; GFX940-NEXT:    ; use s[8:11]
6678 ; GFX940-NEXT:    ;;#ASMEND
6679 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6680   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6681   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6682   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 7>
6683   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6684   ret void
6687 define void @s_shuffle_v2p0_v4p0__0_7() {
6688 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_7:
6689 ; GFX900:       ; %bb.0:
6690 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6691 ; GFX900-NEXT:    ;;#ASMSTART
6692 ; GFX900-NEXT:    ; def s[8:15]
6693 ; GFX900-NEXT:    ;;#ASMEND
6694 ; GFX900-NEXT:    ;;#ASMSTART
6695 ; GFX900-NEXT:    ; def s[12:19]
6696 ; GFX900-NEXT:    ;;#ASMEND
6697 ; GFX900-NEXT:    s_mov_b32 s10, s18
6698 ; GFX900-NEXT:    s_mov_b32 s11, s19
6699 ; GFX900-NEXT:    ;;#ASMSTART
6700 ; GFX900-NEXT:    ; use s[8:11]
6701 ; GFX900-NEXT:    ;;#ASMEND
6702 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6704 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_7:
6705 ; GFX90A:       ; %bb.0:
6706 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6707 ; GFX90A-NEXT:    ;;#ASMSTART
6708 ; GFX90A-NEXT:    ; def s[8:15]
6709 ; GFX90A-NEXT:    ;;#ASMEND
6710 ; GFX90A-NEXT:    ;;#ASMSTART
6711 ; GFX90A-NEXT:    ; def s[12:19]
6712 ; GFX90A-NEXT:    ;;#ASMEND
6713 ; GFX90A-NEXT:    s_mov_b32 s10, s18
6714 ; GFX90A-NEXT:    s_mov_b32 s11, s19
6715 ; GFX90A-NEXT:    ;;#ASMSTART
6716 ; GFX90A-NEXT:    ; use s[8:11]
6717 ; GFX90A-NEXT:    ;;#ASMEND
6718 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6720 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__0_7:
6721 ; GFX940:       ; %bb.0:
6722 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6723 ; GFX940-NEXT:    ;;#ASMSTART
6724 ; GFX940-NEXT:    ; def s[8:15]
6725 ; GFX940-NEXT:    ;;#ASMEND
6726 ; GFX940-NEXT:    ;;#ASMSTART
6727 ; GFX940-NEXT:    ; def s[0:7]
6728 ; GFX940-NEXT:    ;;#ASMEND
6729 ; GFX940-NEXT:    s_mov_b32 s10, s6
6730 ; GFX940-NEXT:    s_mov_b32 s11, s7
6731 ; GFX940-NEXT:    ;;#ASMSTART
6732 ; GFX940-NEXT:    ; use s[8:11]
6733 ; GFX940-NEXT:    ;;#ASMEND
6734 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6735   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6736   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6737   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 7>
6738   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6739   ret void
6742 define void @s_shuffle_v2p0_v4p0__1_7() {
6743 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_7:
6744 ; GFX900:       ; %bb.0:
6745 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6746 ; GFX900-NEXT:    ;;#ASMSTART
6747 ; GFX900-NEXT:    ; def s[4:11]
6748 ; GFX900-NEXT:    ;;#ASMEND
6749 ; GFX900-NEXT:    ;;#ASMSTART
6750 ; GFX900-NEXT:    ; def s[12:19]
6751 ; GFX900-NEXT:    ;;#ASMEND
6752 ; GFX900-NEXT:    s_mov_b32 s8, s14
6753 ; GFX900-NEXT:    s_mov_b32 s9, s15
6754 ; GFX900-NEXT:    ;;#ASMSTART
6755 ; GFX900-NEXT:    ; use s[8:11]
6756 ; GFX900-NEXT:    ;;#ASMEND
6757 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6759 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_7:
6760 ; GFX90A:       ; %bb.0:
6761 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6762 ; GFX90A-NEXT:    ;;#ASMSTART
6763 ; GFX90A-NEXT:    ; def s[4:11]
6764 ; GFX90A-NEXT:    ;;#ASMEND
6765 ; GFX90A-NEXT:    ;;#ASMSTART
6766 ; GFX90A-NEXT:    ; def s[12:19]
6767 ; GFX90A-NEXT:    ;;#ASMEND
6768 ; GFX90A-NEXT:    s_mov_b32 s8, s14
6769 ; GFX90A-NEXT:    s_mov_b32 s9, s15
6770 ; GFX90A-NEXT:    ;;#ASMSTART
6771 ; GFX90A-NEXT:    ; use s[8:11]
6772 ; GFX90A-NEXT:    ;;#ASMEND
6773 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6775 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__1_7:
6776 ; GFX940:       ; %bb.0:
6777 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6778 ; GFX940-NEXT:    ;;#ASMSTART
6779 ; GFX940-NEXT:    ; def s[0:7]
6780 ; GFX940-NEXT:    ;;#ASMEND
6781 ; GFX940-NEXT:    s_nop 0
6782 ; GFX940-NEXT:    ;;#ASMSTART
6783 ; GFX940-NEXT:    ; def s[4:11]
6784 ; GFX940-NEXT:    ;;#ASMEND
6785 ; GFX940-NEXT:    s_mov_b32 s8, s2
6786 ; GFX940-NEXT:    s_mov_b32 s9, s3
6787 ; GFX940-NEXT:    ;;#ASMSTART
6788 ; GFX940-NEXT:    ; use s[8:11]
6789 ; GFX940-NEXT:    ;;#ASMEND
6790 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6791   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6792   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6793   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 7>
6794   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6795   ret void
6798 define void @s_shuffle_v2p0_v4p0__2_7() {
6799 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_7:
6800 ; GFX900:       ; %bb.0:
6801 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6802 ; GFX900-NEXT:    ;;#ASMSTART
6803 ; GFX900-NEXT:    ; def s[4:11]
6804 ; GFX900-NEXT:    ;;#ASMEND
6805 ; GFX900-NEXT:    ;;#ASMSTART
6806 ; GFX900-NEXT:    ; def s[12:19]
6807 ; GFX900-NEXT:    ;;#ASMEND
6808 ; GFX900-NEXT:    s_mov_b32 s10, s18
6809 ; GFX900-NEXT:    s_mov_b32 s11, s19
6810 ; GFX900-NEXT:    ;;#ASMSTART
6811 ; GFX900-NEXT:    ; use s[8:11]
6812 ; GFX900-NEXT:    ;;#ASMEND
6813 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6815 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_7:
6816 ; GFX90A:       ; %bb.0:
6817 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6818 ; GFX90A-NEXT:    ;;#ASMSTART
6819 ; GFX90A-NEXT:    ; def s[4:11]
6820 ; GFX90A-NEXT:    ;;#ASMEND
6821 ; GFX90A-NEXT:    ;;#ASMSTART
6822 ; GFX90A-NEXT:    ; def s[12:19]
6823 ; GFX90A-NEXT:    ;;#ASMEND
6824 ; GFX90A-NEXT:    s_mov_b32 s10, s18
6825 ; GFX90A-NEXT:    s_mov_b32 s11, s19
6826 ; GFX90A-NEXT:    ;;#ASMSTART
6827 ; GFX90A-NEXT:    ; use s[8:11]
6828 ; GFX90A-NEXT:    ;;#ASMEND
6829 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6831 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__2_7:
6832 ; GFX940:       ; %bb.0:
6833 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6834 ; GFX940-NEXT:    ;;#ASMSTART
6835 ; GFX940-NEXT:    ; def s[4:11]
6836 ; GFX940-NEXT:    ;;#ASMEND
6837 ; GFX940-NEXT:    s_nop 0
6838 ; GFX940-NEXT:    ;;#ASMSTART
6839 ; GFX940-NEXT:    ; def s[0:7]
6840 ; GFX940-NEXT:    ;;#ASMEND
6841 ; GFX940-NEXT:    s_mov_b32 s10, s6
6842 ; GFX940-NEXT:    s_mov_b32 s11, s7
6843 ; GFX940-NEXT:    ;;#ASMSTART
6844 ; GFX940-NEXT:    ; use s[8:11]
6845 ; GFX940-NEXT:    ;;#ASMEND
6846 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6847   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6848   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6849   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 7>
6850   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6851   ret void
6854 define void @s_shuffle_v2p0_v4p0__3_7() {
6855 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_7:
6856 ; GFX900:       ; %bb.0:
6857 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6858 ; GFX900-NEXT:    ;;#ASMSTART
6859 ; GFX900-NEXT:    ; def s[8:15]
6860 ; GFX900-NEXT:    ;;#ASMEND
6861 ; GFX900-NEXT:    ;;#ASMSTART
6862 ; GFX900-NEXT:    ; def s[4:11]
6863 ; GFX900-NEXT:    ;;#ASMEND
6864 ; GFX900-NEXT:    s_mov_b32 s8, s14
6865 ; GFX900-NEXT:    s_mov_b32 s9, s15
6866 ; GFX900-NEXT:    ;;#ASMSTART
6867 ; GFX900-NEXT:    ; use s[8:11]
6868 ; GFX900-NEXT:    ;;#ASMEND
6869 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6871 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_7:
6872 ; GFX90A:       ; %bb.0:
6873 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6874 ; GFX90A-NEXT:    ;;#ASMSTART
6875 ; GFX90A-NEXT:    ; def s[8:15]
6876 ; GFX90A-NEXT:    ;;#ASMEND
6877 ; GFX90A-NEXT:    ;;#ASMSTART
6878 ; GFX90A-NEXT:    ; def s[4:11]
6879 ; GFX90A-NEXT:    ;;#ASMEND
6880 ; GFX90A-NEXT:    s_mov_b32 s8, s14
6881 ; GFX90A-NEXT:    s_mov_b32 s9, s15
6882 ; GFX90A-NEXT:    ;;#ASMSTART
6883 ; GFX90A-NEXT:    ; use s[8:11]
6884 ; GFX90A-NEXT:    ;;#ASMEND
6885 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6887 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__3_7:
6888 ; GFX940:       ; %bb.0:
6889 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6890 ; GFX940-NEXT:    ;;#ASMSTART
6891 ; GFX940-NEXT:    ; def s[8:15]
6892 ; GFX940-NEXT:    ;;#ASMEND
6893 ; GFX940-NEXT:    s_nop 0
6894 ; GFX940-NEXT:    ;;#ASMSTART
6895 ; GFX940-NEXT:    ; def s[4:11]
6896 ; GFX940-NEXT:    ;;#ASMEND
6897 ; GFX940-NEXT:    s_mov_b32 s8, s14
6898 ; GFX940-NEXT:    s_mov_b32 s9, s15
6899 ; GFX940-NEXT:    ;;#ASMSTART
6900 ; GFX940-NEXT:    ; use s[8:11]
6901 ; GFX940-NEXT:    ;;#ASMEND
6902 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6903   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6904   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6905   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 7>
6906   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6907   ret void
6910 define void @s_shuffle_v2p0_v4p0__4_7() {
6911 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_7:
6912 ; GFX9:       ; %bb.0:
6913 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6914 ; GFX9-NEXT:    ;;#ASMSTART
6915 ; GFX9-NEXT:    ; def s[8:15]
6916 ; GFX9-NEXT:    ;;#ASMEND
6917 ; GFX9-NEXT:    s_mov_b32 s10, s14
6918 ; GFX9-NEXT:    s_mov_b32 s11, s15
6919 ; GFX9-NEXT:    ;;#ASMSTART
6920 ; GFX9-NEXT:    ; use s[8:11]
6921 ; GFX9-NEXT:    ;;#ASMEND
6922 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
6923   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6924   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6925   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 7>
6926   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6927   ret void
6930 define void @s_shuffle_v2p0_v4p0__5_7() {
6931 ; GFX9-LABEL: s_shuffle_v2p0_v4p0__5_7:
6932 ; GFX9:       ; %bb.0:
6933 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6934 ; GFX9-NEXT:    ;;#ASMSTART
6935 ; GFX9-NEXT:    ; def s[4:11]
6936 ; GFX9-NEXT:    ;;#ASMEND
6937 ; GFX9-NEXT:    s_mov_b32 s8, s6
6938 ; GFX9-NEXT:    s_mov_b32 s9, s7
6939 ; GFX9-NEXT:    ;;#ASMSTART
6940 ; GFX9-NEXT:    ; use s[8:11]
6941 ; GFX9-NEXT:    ;;#ASMEND
6942 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
6943   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6944   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6945   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 7>
6946   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6947   ret void
6950 define void @s_shuffle_v2p0_v4p0__6_7() {
6951 ; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_7:
6952 ; GFX900:       ; %bb.0:
6953 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6954 ; GFX900-NEXT:    ;;#ASMSTART
6955 ; GFX900-NEXT:    ; def s[4:11]
6956 ; GFX900-NEXT:    ;;#ASMEND
6957 ; GFX900-NEXT:    ;;#ASMSTART
6958 ; GFX900-NEXT:    ; use s[8:11]
6959 ; GFX900-NEXT:    ;;#ASMEND
6960 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6962 ; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_7:
6963 ; GFX90A:       ; %bb.0:
6964 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6965 ; GFX90A-NEXT:    ;;#ASMSTART
6966 ; GFX90A-NEXT:    ; def s[4:11]
6967 ; GFX90A-NEXT:    ;;#ASMEND
6968 ; GFX90A-NEXT:    ;;#ASMSTART
6969 ; GFX90A-NEXT:    ; use s[8:11]
6970 ; GFX90A-NEXT:    ;;#ASMEND
6971 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6973 ; GFX940-LABEL: s_shuffle_v2p0_v4p0__6_7:
6974 ; GFX940:       ; %bb.0:
6975 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6976 ; GFX940-NEXT:    ;;#ASMSTART
6977 ; GFX940-NEXT:    ; def s[4:11]
6978 ; GFX940-NEXT:    ;;#ASMEND
6979 ; GFX940-NEXT:    s_nop 0
6980 ; GFX940-NEXT:    ;;#ASMSTART
6981 ; GFX940-NEXT:    ; use s[8:11]
6982 ; GFX940-NEXT:    ;;#ASMEND
6983 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6984   %vec0 = call <4 x ptr> asm "; def $0", "=s"()
6985   %vec1 = call <4 x ptr> asm "; def $0", "=s"()
6986   %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 7>
6987   call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)
6988   ret void
6990 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
6991 ; GFX90APLUS: {{.*}}