[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / shufflevector.v2p3.v2p3.ll
blob6d5005a8998325df7123ddb83ba1479a723623de
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_v2p3_v2p3__u_u(ptr addrspace(1) inreg %ptr) {
8 ; GFX9-LABEL: v_shuffle_v2p3_v2p3__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 <2 x ptr addrspace(3)> asm "; def $0", "=v"()
13   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> poison
14   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
15   ret void
18 define void @v_shuffle_v2p3_v2p3__0_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_u:
20 ; GFX900:       ; %bb.0:
21 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
23 ; GFX900-NEXT:    ;;#ASMSTART
24 ; GFX900-NEXT:    ; def v[0:1]
25 ; GFX900-NEXT:    ;;#ASMEND
26 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
27 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
28 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
30 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_u:
31 ; GFX90A:       ; %bb.0:
32 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
34 ; GFX90A-NEXT:    ;;#ASMSTART
35 ; GFX90A-NEXT:    ; def v[0:1]
36 ; GFX90A-NEXT:    ;;#ASMEND
37 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
38 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
39 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__0_u:
42 ; GFX940:       ; %bb.0:
43 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
45 ; GFX940-NEXT:    ;;#ASMSTART
46 ; GFX940-NEXT:    ; def v[0:1]
47 ; GFX940-NEXT:    ;;#ASMEND
48 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
49 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
50 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
51   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
52   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 poison>
53   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
54   ret void
57 define void @v_shuffle_v2p3_v2p3__1_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_u:
59 ; GFX900:       ; %bb.0:
60 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61 ; GFX900-NEXT:    ;;#ASMSTART
62 ; GFX900-NEXT:    ; def v[0:1]
63 ; GFX900-NEXT:    ;;#ASMEND
64 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
65 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
66 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
67 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
68 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
70 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_u:
71 ; GFX90A:       ; %bb.0:
72 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73 ; GFX90A-NEXT:    ;;#ASMSTART
74 ; GFX90A-NEXT:    ; def v[0:1]
75 ; GFX90A-NEXT:    ;;#ASMEND
76 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
77 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
78 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
79 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
80 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
82 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_u:
83 ; GFX940:       ; %bb.0:
84 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
85 ; GFX940-NEXT:    ;;#ASMSTART
86 ; GFX940-NEXT:    ; def v[0:1]
87 ; GFX940-NEXT:    ;;#ASMEND
88 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
89 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
90 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
91 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
92 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
93   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
94   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 poison>
95   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
96   ret void
99 define void @v_shuffle_v2p3_v2p3__2_u(ptr addrspace(1) inreg %ptr) {
100 ; GFX9-LABEL: v_shuffle_v2p3_v2p3__2_u:
101 ; GFX9:       ; %bb.0:
102 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
103 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
104   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
105   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 poison>
106   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
107   ret void
110 define void @v_shuffle_v2p3_v2p3__3_u(ptr addrspace(1) inreg %ptr) {
111 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_u:
112 ; GFX900:       ; %bb.0:
113 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
114 ; GFX900-NEXT:    ;;#ASMSTART
115 ; GFX900-NEXT:    ; def v[0:1]
116 ; GFX900-NEXT:    ;;#ASMEND
117 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
118 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
119 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
120 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
121 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
123 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_u:
124 ; GFX90A:       ; %bb.0:
125 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
126 ; GFX90A-NEXT:    ;;#ASMSTART
127 ; GFX90A-NEXT:    ; def v[0:1]
128 ; GFX90A-NEXT:    ;;#ASMEND
129 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
130 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
131 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
132 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
133 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
135 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_u:
136 ; GFX940:       ; %bb.0:
137 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
138 ; GFX940-NEXT:    ;;#ASMSTART
139 ; GFX940-NEXT:    ; def v[0:1]
140 ; GFX940-NEXT:    ;;#ASMEND
141 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
142 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
143 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
144 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
145 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
146   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
147   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
148   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 poison>
149   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
150   ret void
153 define void @v_shuffle_v2p3_v2p3__3_0(ptr addrspace(1) inreg %ptr) {
154 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_0:
155 ; GFX900:       ; %bb.0:
156 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
157 ; GFX900-NEXT:    ;;#ASMSTART
158 ; GFX900-NEXT:    ; def v[0:1]
159 ; GFX900-NEXT:    ;;#ASMEND
160 ; GFX900-NEXT:    ;;#ASMSTART
161 ; GFX900-NEXT:    ; def v[1:2]
162 ; GFX900-NEXT:    ;;#ASMEND
163 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
164 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
165 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
166 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
167 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
168 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
170 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_0:
171 ; GFX90A:       ; %bb.0:
172 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
173 ; GFX90A-NEXT:    ;;#ASMSTART
174 ; GFX90A-NEXT:    ; def v[0:1]
175 ; GFX90A-NEXT:    ;;#ASMEND
176 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
177 ; GFX90A-NEXT:    ;;#ASMSTART
178 ; GFX90A-NEXT:    ; def v[2:3]
179 ; GFX90A-NEXT:    ;;#ASMEND
180 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
181 ; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
182 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
183 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
185 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_0:
186 ; GFX940:       ; %bb.0:
187 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
188 ; GFX940-NEXT:    ;;#ASMSTART
189 ; GFX940-NEXT:    ; def v[0:1]
190 ; GFX940-NEXT:    ;;#ASMEND
191 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
192 ; GFX940-NEXT:    ;;#ASMSTART
193 ; GFX940-NEXT:    ; def v[2:3]
194 ; GFX940-NEXT:    ;;#ASMEND
195 ; GFX940-NEXT:    s_nop 0
196 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
197 ; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
198 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
199 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
200   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
201   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
202   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 0>
203   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
204   ret void
207 define void @v_shuffle_v2p3_v2p3__3_1(ptr addrspace(1) inreg %ptr) {
208 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_1:
209 ; GFX900:       ; %bb.0:
210 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
211 ; GFX900-NEXT:    ;;#ASMSTART
212 ; GFX900-NEXT:    ; def v[0:1]
213 ; GFX900-NEXT:    ;;#ASMEND
214 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
215 ; GFX900-NEXT:    ;;#ASMSTART
216 ; GFX900-NEXT:    ; def v[2:3]
217 ; GFX900-NEXT:    ;;#ASMEND
218 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
219 ; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
220 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
221 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
223 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_1:
224 ; GFX90A:       ; %bb.0:
225 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
226 ; GFX90A-NEXT:    ;;#ASMSTART
227 ; GFX90A-NEXT:    ; def v[0:1]
228 ; GFX90A-NEXT:    ;;#ASMEND
229 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
230 ; GFX90A-NEXT:    ;;#ASMSTART
231 ; GFX90A-NEXT:    ; def v[2:3]
232 ; GFX90A-NEXT:    ;;#ASMEND
233 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
234 ; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
235 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
236 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
238 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_1:
239 ; GFX940:       ; %bb.0:
240 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
241 ; GFX940-NEXT:    ;;#ASMSTART
242 ; GFX940-NEXT:    ; def v[0:1]
243 ; GFX940-NEXT:    ;;#ASMEND
244 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
245 ; GFX940-NEXT:    ;;#ASMSTART
246 ; GFX940-NEXT:    ; def v[2:3]
247 ; GFX940-NEXT:    ;;#ASMEND
248 ; GFX940-NEXT:    s_nop 0
249 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
250 ; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
251 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
252 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
253   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
254   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
255   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 1>
256   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
257   ret void
260 define void @v_shuffle_v2p3_v2p3__3_2(ptr addrspace(1) inreg %ptr) {
261 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_2:
262 ; GFX900:       ; %bb.0:
263 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
264 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
265 ; GFX900-NEXT:    ;;#ASMSTART
266 ; GFX900-NEXT:    ; def v[0:1]
267 ; GFX900-NEXT:    ;;#ASMEND
268 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
269 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
270 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
271 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
273 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_2:
274 ; GFX90A:       ; %bb.0:
275 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
276 ; GFX90A-NEXT:    ;;#ASMSTART
277 ; GFX90A-NEXT:    ; def v[0:1]
278 ; GFX90A-NEXT:    ;;#ASMEND
279 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
280 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
281 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
282 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
283 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
285 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_2:
286 ; GFX940:       ; %bb.0:
287 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
288 ; GFX940-NEXT:    ;;#ASMSTART
289 ; GFX940-NEXT:    ; def v[0:1]
290 ; GFX940-NEXT:    ;;#ASMEND
291 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
292 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
293 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
294 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
295 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
296   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
297   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
298   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 2>
299   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
300   ret void
303 define void @v_shuffle_v2p3_v2p3__3_3(ptr addrspace(1) inreg %ptr) {
304 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__3_3:
305 ; GFX900:       ; %bb.0:
306 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
307 ; GFX900-NEXT:    ;;#ASMSTART
308 ; GFX900-NEXT:    ; def v[0:1]
309 ; GFX900-NEXT:    ;;#ASMEND
310 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
311 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
312 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
313 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
314 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
316 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__3_3:
317 ; GFX90A:       ; %bb.0:
318 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
319 ; GFX90A-NEXT:    ;;#ASMSTART
320 ; GFX90A-NEXT:    ; def v[0:1]
321 ; GFX90A-NEXT:    ;;#ASMEND
322 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
323 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
324 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
325 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
326 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
328 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__3_3:
329 ; GFX940:       ; %bb.0:
330 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
331 ; GFX940-NEXT:    ;;#ASMSTART
332 ; GFX940-NEXT:    ; def v[0:1]
333 ; GFX940-NEXT:    ;;#ASMEND
334 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
335 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
336 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
337 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
338 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
339   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
340   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
341   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 3>
342   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
343   ret void
346 define void @v_shuffle_v2p3_v2p3__u_0(ptr addrspace(1) inreg %ptr) {
347 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__u_0:
348 ; GFX900:       ; %bb.0:
349 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
350 ; GFX900-NEXT:    ;;#ASMSTART
351 ; GFX900-NEXT:    ; def v[0:1]
352 ; GFX900-NEXT:    ;;#ASMEND
353 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
354 ; GFX900-NEXT:    v_mov_b32_e32 v1, v0
355 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
356 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
357 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
359 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__u_0:
360 ; GFX90A:       ; %bb.0:
361 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
362 ; GFX90A-NEXT:    ;;#ASMSTART
363 ; GFX90A-NEXT:    ; def v[0:1]
364 ; GFX90A-NEXT:    ;;#ASMEND
365 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
366 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
367 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
368 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
369 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
371 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__u_0:
372 ; GFX940:       ; %bb.0:
373 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
374 ; GFX940-NEXT:    ;;#ASMSTART
375 ; GFX940-NEXT:    ; def v[0:1]
376 ; GFX940-NEXT:    ;;#ASMEND
377 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
378 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
379 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
380 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
381 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
382   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
383   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 0>
384   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
385   ret void
388 define void @v_shuffle_v2p3_v2p3__0_0(ptr addrspace(1) inreg %ptr) {
389 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_0:
390 ; GFX900:       ; %bb.0:
391 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
392 ; GFX900-NEXT:    ;;#ASMSTART
393 ; GFX900-NEXT:    ; def v[0:1]
394 ; GFX900-NEXT:    ;;#ASMEND
395 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
396 ; GFX900-NEXT:    v_mov_b32_e32 v1, v0
397 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
398 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
399 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
401 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_0:
402 ; GFX90A:       ; %bb.0:
403 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
404 ; GFX90A-NEXT:    ;;#ASMSTART
405 ; GFX90A-NEXT:    ; def v[0:1]
406 ; GFX90A-NEXT:    ;;#ASMEND
407 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
408 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
409 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
410 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
411 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
413 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__0_0:
414 ; GFX940:       ; %bb.0:
415 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
416 ; GFX940-NEXT:    ;;#ASMSTART
417 ; GFX940-NEXT:    ; def v[0:1]
418 ; GFX940-NEXT:    ;;#ASMEND
419 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
420 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
421 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
422 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
423 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
424   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
425   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> zeroinitializer
426   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
427   ret void
430 define void @v_shuffle_v2p3_v2p3__1_0(ptr addrspace(1) inreg %ptr) {
431 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_0:
432 ; GFX900:       ; %bb.0:
433 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
434 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
435 ; GFX900-NEXT:    ;;#ASMSTART
436 ; GFX900-NEXT:    ; def v[0:1]
437 ; GFX900-NEXT:    ;;#ASMEND
438 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
439 ; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
440 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
441 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
443 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_0:
444 ; GFX90A:       ; %bb.0:
445 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
446 ; GFX90A-NEXT:    ;;#ASMSTART
447 ; GFX90A-NEXT:    ; def v[0:1]
448 ; GFX90A-NEXT:    ;;#ASMEND
449 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
450 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
451 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
452 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
453 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
455 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_0:
456 ; GFX940:       ; %bb.0:
457 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
458 ; GFX940-NEXT:    ;;#ASMSTART
459 ; GFX940-NEXT:    ; def v[0:1]
460 ; GFX940-NEXT:    ;;#ASMEND
461 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
462 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
463 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
464 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
465 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
466   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
467   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 0>
468   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
469   ret void
472 define void @v_shuffle_v2p3_v2p3__2_0(ptr addrspace(1) inreg %ptr) {
473 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__2_0:
474 ; GFX900:       ; %bb.0:
475 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
476 ; GFX900-NEXT:    ;;#ASMSTART
477 ; GFX900-NEXT:    ; def v[0:1]
478 ; GFX900-NEXT:    ;;#ASMEND
479 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
480 ; GFX900-NEXT:    v_mov_b32_e32 v1, v0
481 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
482 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
483 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
485 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__2_0:
486 ; GFX90A:       ; %bb.0:
487 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
488 ; GFX90A-NEXT:    ;;#ASMSTART
489 ; GFX90A-NEXT:    ; def v[0:1]
490 ; GFX90A-NEXT:    ;;#ASMEND
491 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
492 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
493 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
494 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
495 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
497 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__2_0:
498 ; GFX940:       ; %bb.0:
499 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
500 ; GFX940-NEXT:    ;;#ASMSTART
501 ; GFX940-NEXT:    ; def v[0:1]
502 ; GFX940-NEXT:    ;;#ASMEND
503 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
504 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
505 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
506 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
507 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
508   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
509   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 0>
510   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
511   ret void
514 define void @v_shuffle_v2p3_v2p3__u_1(ptr addrspace(1) inreg %ptr) {
515 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__u_1:
516 ; GFX900:       ; %bb.0:
517 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
518 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
519 ; GFX900-NEXT:    ;;#ASMSTART
520 ; GFX900-NEXT:    ; def v[0:1]
521 ; GFX900-NEXT:    ;;#ASMEND
522 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
523 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
524 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
526 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__u_1:
527 ; GFX90A:       ; %bb.0:
528 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
529 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
530 ; GFX90A-NEXT:    ;;#ASMSTART
531 ; GFX90A-NEXT:    ; def v[0:1]
532 ; GFX90A-NEXT:    ;;#ASMEND
533 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
534 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
535 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
537 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__u_1:
538 ; GFX940:       ; %bb.0:
539 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
540 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
541 ; GFX940-NEXT:    ;;#ASMSTART
542 ; GFX940-NEXT:    ; def v[0:1]
543 ; GFX940-NEXT:    ;;#ASMEND
544 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
545 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
546 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
547   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
548   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 1>
549   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
550   ret void
553 define void @v_shuffle_v2p3_v2p3__0_1(ptr addrspace(1) inreg %ptr) {
554 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_1:
555 ; GFX900:       ; %bb.0:
556 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
557 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
558 ; GFX900-NEXT:    ;;#ASMSTART
559 ; GFX900-NEXT:    ; def v[0:1]
560 ; GFX900-NEXT:    ;;#ASMEND
561 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
562 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
563 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
565 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_1:
566 ; GFX90A:       ; %bb.0:
567 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
568 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
569 ; GFX90A-NEXT:    ;;#ASMSTART
570 ; GFX90A-NEXT:    ; def v[0:1]
571 ; GFX90A-NEXT:    ;;#ASMEND
572 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
573 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
574 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
576 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__0_1:
577 ; GFX940:       ; %bb.0:
578 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
579 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
580 ; GFX940-NEXT:    ;;#ASMSTART
581 ; GFX940-NEXT:    ; def v[0:1]
582 ; GFX940-NEXT:    ;;#ASMEND
583 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
584 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
585 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
586   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
587   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 1>
588   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
589   ret void
592 define void @v_shuffle_v2p3_v2p3__1_1(ptr addrspace(1) inreg %ptr) {
593 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_1:
594 ; GFX900:       ; %bb.0:
595 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
596 ; GFX900-NEXT:    ;;#ASMSTART
597 ; GFX900-NEXT:    ; def v[0:1]
598 ; GFX900-NEXT:    ;;#ASMEND
599 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
600 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
601 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
602 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
603 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
605 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_1:
606 ; GFX90A:       ; %bb.0:
607 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
608 ; GFX90A-NEXT:    ;;#ASMSTART
609 ; GFX90A-NEXT:    ; def v[0:1]
610 ; GFX90A-NEXT:    ;;#ASMEND
611 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
612 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
613 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
614 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
615 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
617 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_1:
618 ; GFX940:       ; %bb.0:
619 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
620 ; GFX940-NEXT:    ;;#ASMSTART
621 ; GFX940-NEXT:    ; def v[0:1]
622 ; GFX940-NEXT:    ;;#ASMEND
623 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
624 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
625 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
626 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
627 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
628   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
629   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 1>
630   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
631   ret void
634 define void @v_shuffle_v2p3_v2p3__2_1(ptr addrspace(1) inreg %ptr) {
635 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__2_1:
636 ; GFX900:       ; %bb.0:
637 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
638 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
639 ; GFX900-NEXT:    ;;#ASMSTART
640 ; GFX900-NEXT:    ; def v[0:1]
641 ; GFX900-NEXT:    ;;#ASMEND
642 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
643 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
644 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
646 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__2_1:
647 ; GFX90A:       ; %bb.0:
648 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
649 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
650 ; GFX90A-NEXT:    ;;#ASMSTART
651 ; GFX90A-NEXT:    ; def v[0:1]
652 ; GFX90A-NEXT:    ;;#ASMEND
653 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
654 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
655 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
657 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__2_1:
658 ; GFX940:       ; %bb.0:
659 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
660 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
661 ; GFX940-NEXT:    ;;#ASMSTART
662 ; GFX940-NEXT:    ; def v[0:1]
663 ; GFX940-NEXT:    ;;#ASMEND
664 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
665 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
666 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
667   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
668   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 1>
669   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
670   ret void
673 define void @v_shuffle_v2p3_v2p3__u_2(ptr addrspace(1) inreg %ptr) {
674 ; GFX9-LABEL: v_shuffle_v2p3_v2p3__u_2:
675 ; GFX9:       ; %bb.0:
676 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
677 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
678   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
679   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 2>
680   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
681   ret void
684 define void @v_shuffle_v2p3_v2p3__0_2(ptr addrspace(1) inreg %ptr) {
685 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_2:
686 ; GFX900:       ; %bb.0:
687 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
688 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
689 ; GFX900-NEXT:    ;;#ASMSTART
690 ; GFX900-NEXT:    ; def v[0:1]
691 ; GFX900-NEXT:    ;;#ASMEND
692 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
693 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
694 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
696 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_2:
697 ; GFX90A:       ; %bb.0:
698 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
699 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
700 ; GFX90A-NEXT:    ;;#ASMSTART
701 ; GFX90A-NEXT:    ; def v[0:1]
702 ; GFX90A-NEXT:    ;;#ASMEND
703 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
704 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
705 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
707 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__0_2:
708 ; GFX940:       ; %bb.0:
709 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
710 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
711 ; GFX940-NEXT:    ;;#ASMSTART
712 ; GFX940-NEXT:    ; def v[0:1]
713 ; GFX940-NEXT:    ;;#ASMEND
714 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
715 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
716 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
717   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
718   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 2>
719   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
720   ret void
723 define void @v_shuffle_v2p3_v2p3__1_2(ptr addrspace(1) inreg %ptr) {
724 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_2:
725 ; GFX900:       ; %bb.0:
726 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
727 ; GFX900-NEXT:    ;;#ASMSTART
728 ; GFX900-NEXT:    ; def v[0:1]
729 ; GFX900-NEXT:    ;;#ASMEND
730 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
731 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
732 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
733 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
734 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
736 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_2:
737 ; GFX90A:       ; %bb.0:
738 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
739 ; GFX90A-NEXT:    ;;#ASMSTART
740 ; GFX90A-NEXT:    ; def v[0:1]
741 ; GFX90A-NEXT:    ;;#ASMEND
742 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
743 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
744 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
745 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
746 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
748 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_2:
749 ; GFX940:       ; %bb.0:
750 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
751 ; GFX940-NEXT:    ;;#ASMSTART
752 ; GFX940-NEXT:    ; def v[0:1]
753 ; GFX940-NEXT:    ;;#ASMEND
754 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
755 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
756 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
757 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
758 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
759   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
760   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 2>
761   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
762   ret void
765 define void @v_shuffle_v2p3_v2p3__2_2(ptr addrspace(1) inreg %ptr) {
766 ; GFX9-LABEL: v_shuffle_v2p3_v2p3__2_2:
767 ; GFX9:       ; %bb.0:
768 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
769 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
770   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
771   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 2>
772   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
773   ret void
776 define void @v_shuffle_v2p3_v2p3__u_3(ptr addrspace(1) inreg %ptr) {
777 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__u_3:
778 ; GFX900:       ; %bb.0:
779 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
780 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
781 ; GFX900-NEXT:    ;;#ASMSTART
782 ; GFX900-NEXT:    ; def v[0:1]
783 ; GFX900-NEXT:    ;;#ASMEND
784 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
785 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
786 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
788 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__u_3:
789 ; GFX90A:       ; %bb.0:
790 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
791 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
792 ; GFX90A-NEXT:    ;;#ASMSTART
793 ; GFX90A-NEXT:    ; def v[0:1]
794 ; GFX90A-NEXT:    ;;#ASMEND
795 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
796 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
797 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
799 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__u_3:
800 ; GFX940:       ; %bb.0:
801 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
802 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
803 ; GFX940-NEXT:    ;;#ASMSTART
804 ; GFX940-NEXT:    ; def v[0:1]
805 ; GFX940-NEXT:    ;;#ASMEND
806 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
807 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
808 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
809   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
810   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
811   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 3>
812   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
813   ret void
816 define void @v_shuffle_v2p3_v2p3__0_3(ptr addrspace(1) inreg %ptr) {
817 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__0_3:
818 ; GFX900:       ; %bb.0:
819 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
820 ; GFX900-NEXT:    ;;#ASMSTART
821 ; GFX900-NEXT:    ; def v[0:1]
822 ; GFX900-NEXT:    ;;#ASMEND
823 ; GFX900-NEXT:    ;;#ASMSTART
824 ; GFX900-NEXT:    ; def v[1:2]
825 ; GFX900-NEXT:    ;;#ASMEND
826 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
827 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
828 ; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
829 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
830 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
832 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__0_3:
833 ; GFX90A:       ; %bb.0:
834 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
835 ; GFX90A-NEXT:    ;;#ASMSTART
836 ; GFX90A-NEXT:    ; def v[0:1]
837 ; GFX90A-NEXT:    ;;#ASMEND
838 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
839 ; GFX90A-NEXT:    ;;#ASMSTART
840 ; GFX90A-NEXT:    ; def v[2:3]
841 ; GFX90A-NEXT:    ;;#ASMEND
842 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
843 ; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
844 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
845 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
847 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__0_3:
848 ; GFX940:       ; %bb.0:
849 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
850 ; GFX940-NEXT:    ;;#ASMSTART
851 ; GFX940-NEXT:    ; def v[0:1]
852 ; GFX940-NEXT:    ;;#ASMEND
853 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
854 ; GFX940-NEXT:    ;;#ASMSTART
855 ; GFX940-NEXT:    ; def v[2:3]
856 ; GFX940-NEXT:    ;;#ASMEND
857 ; GFX940-NEXT:    s_nop 0
858 ; GFX940-NEXT:    v_mov_b32_e32 v1, v3
859 ; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
860 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
861 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
862   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
863   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
864   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 3>
865   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
866   ret void
869 define void @v_shuffle_v2p3_v2p3__1_3(ptr addrspace(1) inreg %ptr) {
870 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__1_3:
871 ; GFX900:       ; %bb.0:
872 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
873 ; GFX900-NEXT:    ;;#ASMSTART
874 ; GFX900-NEXT:    ; def v[2:3]
875 ; GFX900-NEXT:    ;;#ASMEND
876 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
877 ; GFX900-NEXT:    ;;#ASMSTART
878 ; GFX900-NEXT:    ; def v[0:1]
879 ; GFX900-NEXT:    ;;#ASMEND
880 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
881 ; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
882 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
883 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
885 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__1_3:
886 ; GFX90A:       ; %bb.0:
887 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
888 ; GFX90A-NEXT:    ;;#ASMSTART
889 ; GFX90A-NEXT:    ; def v[2:3]
890 ; GFX90A-NEXT:    ;;#ASMEND
891 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
892 ; GFX90A-NEXT:    ;;#ASMSTART
893 ; GFX90A-NEXT:    ; def v[0:1]
894 ; GFX90A-NEXT:    ;;#ASMEND
895 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
896 ; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
897 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
898 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
900 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__1_3:
901 ; GFX940:       ; %bb.0:
902 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
903 ; GFX940-NEXT:    ;;#ASMSTART
904 ; GFX940-NEXT:    ; def v[2:3]
905 ; GFX940-NEXT:    ;;#ASMEND
906 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
907 ; GFX940-NEXT:    ;;#ASMSTART
908 ; GFX940-NEXT:    ; def v[0:1]
909 ; GFX940-NEXT:    ;;#ASMEND
910 ; GFX940-NEXT:    s_nop 0
911 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
912 ; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
913 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
914 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
915   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
916   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
917   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 3>
918   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
919   ret void
922 define void @v_shuffle_v2p3_v2p3__2_3(ptr addrspace(1) inreg %ptr) {
923 ; GFX900-LABEL: v_shuffle_v2p3_v2p3__2_3:
924 ; GFX900:       ; %bb.0:
925 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
926 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
927 ; GFX900-NEXT:    ;;#ASMSTART
928 ; GFX900-NEXT:    ; def v[0:1]
929 ; GFX900-NEXT:    ;;#ASMEND
930 ; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
931 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
932 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
934 ; GFX90A-LABEL: v_shuffle_v2p3_v2p3__2_3:
935 ; GFX90A:       ; %bb.0:
936 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
937 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
938 ; GFX90A-NEXT:    ;;#ASMSTART
939 ; GFX90A-NEXT:    ; def v[0:1]
940 ; GFX90A-NEXT:    ;;#ASMEND
941 ; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]
942 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
943 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
945 ; GFX940-LABEL: v_shuffle_v2p3_v2p3__2_3:
946 ; GFX940:       ; %bb.0:
947 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
948 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
949 ; GFX940-NEXT:    ;;#ASMSTART
950 ; GFX940-NEXT:    ; def v[0:1]
951 ; GFX940-NEXT:    ;;#ASMEND
952 ; GFX940-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1] sc0 sc1
953 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
954 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
955   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
956   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
957   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 3>
958   store <2 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 8
959   ret void
962 define void @s_shuffle_v2p3_v2p3__u_u() {
963 ; GFX9-LABEL: s_shuffle_v2p3_v2p3__u_u:
964 ; GFX9:       ; %bb.0:
965 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
966 ; GFX9-NEXT:    ;;#ASMSTART
967 ; GFX9-NEXT:    ; use s[8:9]
968 ; GFX9-NEXT:    ;;#ASMEND
969 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
970   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
971   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> poison
972   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
973   ret void
976 define void @s_shuffle_v2p3_v2p3__0_u() {
977 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__0_u:
978 ; GFX900:       ; %bb.0:
979 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
980 ; GFX900-NEXT:    ;;#ASMSTART
981 ; GFX900-NEXT:    ; def s[8:9]
982 ; GFX900-NEXT:    ;;#ASMEND
983 ; GFX900-NEXT:    ;;#ASMSTART
984 ; GFX900-NEXT:    ; use s[8:9]
985 ; GFX900-NEXT:    ;;#ASMEND
986 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
988 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__0_u:
989 ; GFX90A:       ; %bb.0:
990 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
991 ; GFX90A-NEXT:    ;;#ASMSTART
992 ; GFX90A-NEXT:    ; def s[8:9]
993 ; GFX90A-NEXT:    ;;#ASMEND
994 ; GFX90A-NEXT:    ;;#ASMSTART
995 ; GFX90A-NEXT:    ; use s[8:9]
996 ; GFX90A-NEXT:    ;;#ASMEND
997 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
999 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__0_u:
1000 ; GFX940:       ; %bb.0:
1001 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1002 ; GFX940-NEXT:    ;;#ASMSTART
1003 ; GFX940-NEXT:    ; def s[8:9]
1004 ; GFX940-NEXT:    ;;#ASMEND
1005 ; GFX940-NEXT:    s_nop 0
1006 ; GFX940-NEXT:    ;;#ASMSTART
1007 ; GFX940-NEXT:    ; use s[8:9]
1008 ; GFX940-NEXT:    ;;#ASMEND
1009 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1010   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1011   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 poison>
1012   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1013   ret void
1016 define void @s_shuffle_v2p3_v2p3__1_u() {
1017 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__1_u:
1018 ; GFX900:       ; %bb.0:
1019 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1020 ; GFX900-NEXT:    ;;#ASMSTART
1021 ; GFX900-NEXT:    ; def s[4:5]
1022 ; GFX900-NEXT:    ;;#ASMEND
1023 ; GFX900-NEXT:    s_mov_b32 s8, s5
1024 ; GFX900-NEXT:    ;;#ASMSTART
1025 ; GFX900-NEXT:    ; use s[8:9]
1026 ; GFX900-NEXT:    ;;#ASMEND
1027 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1029 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__1_u:
1030 ; GFX90A:       ; %bb.0:
1031 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1032 ; GFX90A-NEXT:    ;;#ASMSTART
1033 ; GFX90A-NEXT:    ; def s[4:5]
1034 ; GFX90A-NEXT:    ;;#ASMEND
1035 ; GFX90A-NEXT:    s_mov_b32 s8, s5
1036 ; GFX90A-NEXT:    ;;#ASMSTART
1037 ; GFX90A-NEXT:    ; use s[8:9]
1038 ; GFX90A-NEXT:    ;;#ASMEND
1039 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1041 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__1_u:
1042 ; GFX940:       ; %bb.0:
1043 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1044 ; GFX940-NEXT:    ;;#ASMSTART
1045 ; GFX940-NEXT:    ; def s[0:1]
1046 ; GFX940-NEXT:    ;;#ASMEND
1047 ; GFX940-NEXT:    s_mov_b32 s8, s1
1048 ; GFX940-NEXT:    ;;#ASMSTART
1049 ; GFX940-NEXT:    ; use s[8:9]
1050 ; GFX940-NEXT:    ;;#ASMEND
1051 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1052   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1053   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 poison>
1054   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1055   ret void
1058 define void @s_shuffle_v2p3_v2p3__2_u() {
1059 ; GFX9-LABEL: s_shuffle_v2p3_v2p3__2_u:
1060 ; GFX9:       ; %bb.0:
1061 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1062 ; GFX9-NEXT:    ;;#ASMSTART
1063 ; GFX9-NEXT:    ; use s[8:9]
1064 ; GFX9-NEXT:    ;;#ASMEND
1065 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1066   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1067   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 poison>
1068   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1069   ret void
1072 define void @s_shuffle_v2p3_v2p3__3_u() {
1073 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__3_u:
1074 ; GFX900:       ; %bb.0:
1075 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1076 ; GFX900-NEXT:    ;;#ASMSTART
1077 ; GFX900-NEXT:    ; def s[4:5]
1078 ; GFX900-NEXT:    ;;#ASMEND
1079 ; GFX900-NEXT:    s_mov_b32 s8, s5
1080 ; GFX900-NEXT:    ;;#ASMSTART
1081 ; GFX900-NEXT:    ; use s[8:9]
1082 ; GFX900-NEXT:    ;;#ASMEND
1083 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1085 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__3_u:
1086 ; GFX90A:       ; %bb.0:
1087 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1088 ; GFX90A-NEXT:    ;;#ASMSTART
1089 ; GFX90A-NEXT:    ; def s[4:5]
1090 ; GFX90A-NEXT:    ;;#ASMEND
1091 ; GFX90A-NEXT:    s_mov_b32 s8, s5
1092 ; GFX90A-NEXT:    ;;#ASMSTART
1093 ; GFX90A-NEXT:    ; use s[8:9]
1094 ; GFX90A-NEXT:    ;;#ASMEND
1095 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1097 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__3_u:
1098 ; GFX940:       ; %bb.0:
1099 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1100 ; GFX940-NEXT:    ;;#ASMSTART
1101 ; GFX940-NEXT:    ; def s[0:1]
1102 ; GFX940-NEXT:    ;;#ASMEND
1103 ; GFX940-NEXT:    s_mov_b32 s8, s1
1104 ; GFX940-NEXT:    ;;#ASMSTART
1105 ; GFX940-NEXT:    ; use s[8:9]
1106 ; GFX940-NEXT:    ;;#ASMEND
1107 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1108   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1109   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1110   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 poison>
1111   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1112   ret void
1115 define void @s_shuffle_v2p3_v2p3__3_0() {
1116 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__3_0:
1117 ; GFX900:       ; %bb.0:
1118 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1119 ; GFX900-NEXT:    ;;#ASMSTART
1120 ; GFX900-NEXT:    ; def s[4:5]
1121 ; GFX900-NEXT:    ;;#ASMEND
1122 ; GFX900-NEXT:    ;;#ASMSTART
1123 ; GFX900-NEXT:    ; def s[6:7]
1124 ; GFX900-NEXT:    ;;#ASMEND
1125 ; GFX900-NEXT:    s_mov_b32 s8, s7
1126 ; GFX900-NEXT:    s_mov_b32 s9, s4
1127 ; GFX900-NEXT:    ;;#ASMSTART
1128 ; GFX900-NEXT:    ; use s[8:9]
1129 ; GFX900-NEXT:    ;;#ASMEND
1130 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1132 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__3_0:
1133 ; GFX90A:       ; %bb.0:
1134 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1135 ; GFX90A-NEXT:    ;;#ASMSTART
1136 ; GFX90A-NEXT:    ; def s[4:5]
1137 ; GFX90A-NEXT:    ;;#ASMEND
1138 ; GFX90A-NEXT:    ;;#ASMSTART
1139 ; GFX90A-NEXT:    ; def s[6:7]
1140 ; GFX90A-NEXT:    ;;#ASMEND
1141 ; GFX90A-NEXT:    s_mov_b32 s8, s7
1142 ; GFX90A-NEXT:    s_mov_b32 s9, s4
1143 ; GFX90A-NEXT:    ;;#ASMSTART
1144 ; GFX90A-NEXT:    ; use s[8:9]
1145 ; GFX90A-NEXT:    ;;#ASMEND
1146 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1148 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__3_0:
1149 ; GFX940:       ; %bb.0:
1150 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1151 ; GFX940-NEXT:    ;;#ASMSTART
1152 ; GFX940-NEXT:    ; def s[0:1]
1153 ; GFX940-NEXT:    ;;#ASMEND
1154 ; GFX940-NEXT:    ;;#ASMSTART
1155 ; GFX940-NEXT:    ; def s[2:3]
1156 ; GFX940-NEXT:    ;;#ASMEND
1157 ; GFX940-NEXT:    s_mov_b32 s8, s3
1158 ; GFX940-NEXT:    s_mov_b32 s9, s0
1159 ; GFX940-NEXT:    ;;#ASMSTART
1160 ; GFX940-NEXT:    ; use s[8:9]
1161 ; GFX940-NEXT:    ;;#ASMEND
1162 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1163   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1164   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1165   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 0>
1166   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1167   ret void
1170 define void @s_shuffle_v2p3_v2p3__3_1() {
1171 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__3_1:
1172 ; GFX900:       ; %bb.0:
1173 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1174 ; GFX900-NEXT:    ;;#ASMSTART
1175 ; GFX900-NEXT:    ; def s[8:9]
1176 ; GFX900-NEXT:    ;;#ASMEND
1177 ; GFX900-NEXT:    ;;#ASMSTART
1178 ; GFX900-NEXT:    ; def s[4:5]
1179 ; GFX900-NEXT:    ;;#ASMEND
1180 ; GFX900-NEXT:    s_mov_b32 s8, s5
1181 ; GFX900-NEXT:    ;;#ASMSTART
1182 ; GFX900-NEXT:    ; use s[8:9]
1183 ; GFX900-NEXT:    ;;#ASMEND
1184 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1186 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__3_1:
1187 ; GFX90A:       ; %bb.0:
1188 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1189 ; GFX90A-NEXT:    ;;#ASMSTART
1190 ; GFX90A-NEXT:    ; def s[8:9]
1191 ; GFX90A-NEXT:    ;;#ASMEND
1192 ; GFX90A-NEXT:    ;;#ASMSTART
1193 ; GFX90A-NEXT:    ; def s[4:5]
1194 ; GFX90A-NEXT:    ;;#ASMEND
1195 ; GFX90A-NEXT:    s_mov_b32 s8, s5
1196 ; GFX90A-NEXT:    ;;#ASMSTART
1197 ; GFX90A-NEXT:    ; use s[8:9]
1198 ; GFX90A-NEXT:    ;;#ASMEND
1199 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1201 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__3_1:
1202 ; GFX940:       ; %bb.0:
1203 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1204 ; GFX940-NEXT:    ;;#ASMSTART
1205 ; GFX940-NEXT:    ; def s[8:9]
1206 ; GFX940-NEXT:    ;;#ASMEND
1207 ; GFX940-NEXT:    ;;#ASMSTART
1208 ; GFX940-NEXT:    ; def s[0:1]
1209 ; GFX940-NEXT:    ;;#ASMEND
1210 ; GFX940-NEXT:    s_mov_b32 s8, s1
1211 ; GFX940-NEXT:    ;;#ASMSTART
1212 ; GFX940-NEXT:    ; use s[8:9]
1213 ; GFX940-NEXT:    ;;#ASMEND
1214 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1215   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1216   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1217   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 1>
1218   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1219   ret void
1222 define void @s_shuffle_v2p3_v2p3__3_2() {
1223 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__3_2:
1224 ; GFX900:       ; %bb.0:
1225 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1226 ; GFX900-NEXT:    ;;#ASMSTART
1227 ; GFX900-NEXT:    ; def s[4:5]
1228 ; GFX900-NEXT:    ;;#ASMEND
1229 ; GFX900-NEXT:    s_mov_b32 s8, s5
1230 ; GFX900-NEXT:    s_mov_b32 s9, s4
1231 ; GFX900-NEXT:    ;;#ASMSTART
1232 ; GFX900-NEXT:    ; use s[8:9]
1233 ; GFX900-NEXT:    ;;#ASMEND
1234 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1236 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__3_2:
1237 ; GFX90A:       ; %bb.0:
1238 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1239 ; GFX90A-NEXT:    ;;#ASMSTART
1240 ; GFX90A-NEXT:    ; def s[4:5]
1241 ; GFX90A-NEXT:    ;;#ASMEND
1242 ; GFX90A-NEXT:    s_mov_b32 s8, s5
1243 ; GFX90A-NEXT:    s_mov_b32 s9, s4
1244 ; GFX90A-NEXT:    ;;#ASMSTART
1245 ; GFX90A-NEXT:    ; use s[8:9]
1246 ; GFX90A-NEXT:    ;;#ASMEND
1247 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1249 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__3_2:
1250 ; GFX940:       ; %bb.0:
1251 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1252 ; GFX940-NEXT:    ;;#ASMSTART
1253 ; GFX940-NEXT:    ; def s[0:1]
1254 ; GFX940-NEXT:    ;;#ASMEND
1255 ; GFX940-NEXT:    s_mov_b32 s8, s1
1256 ; GFX940-NEXT:    s_mov_b32 s9, s0
1257 ; GFX940-NEXT:    ;;#ASMSTART
1258 ; GFX940-NEXT:    ; use s[8:9]
1259 ; GFX940-NEXT:    ;;#ASMEND
1260 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1261   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1262   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1263   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 2>
1264   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1265   ret void
1268 define void @s_shuffle_v2p3_v2p3__3_3() {
1269 ; GFX9-LABEL: s_shuffle_v2p3_v2p3__3_3:
1270 ; GFX9:       ; %bb.0:
1271 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1272 ; GFX9-NEXT:    ;;#ASMSTART
1273 ; GFX9-NEXT:    ; def s[8:9]
1274 ; GFX9-NEXT:    ;;#ASMEND
1275 ; GFX9-NEXT:    s_mov_b32 s8, s9
1276 ; GFX9-NEXT:    ;;#ASMSTART
1277 ; GFX9-NEXT:    ; use s[8:9]
1278 ; GFX9-NEXT:    ;;#ASMEND
1279 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1280   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1281   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1282   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 3, i32 3>
1283   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1284   ret void
1287 define void @s_shuffle_v2p3_v2p3__u_0() {
1288 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__u_0:
1289 ; GFX900:       ; %bb.0:
1290 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1291 ; GFX900-NEXT:    ;;#ASMSTART
1292 ; GFX900-NEXT:    ; def s[4:5]
1293 ; GFX900-NEXT:    ;;#ASMEND
1294 ; GFX900-NEXT:    s_mov_b32 s9, s4
1295 ; GFX900-NEXT:    ;;#ASMSTART
1296 ; GFX900-NEXT:    ; use s[8:9]
1297 ; GFX900-NEXT:    ;;#ASMEND
1298 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1300 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__u_0:
1301 ; GFX90A:       ; %bb.0:
1302 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1303 ; GFX90A-NEXT:    ;;#ASMSTART
1304 ; GFX90A-NEXT:    ; def s[4:5]
1305 ; GFX90A-NEXT:    ;;#ASMEND
1306 ; GFX90A-NEXT:    s_mov_b32 s9, s4
1307 ; GFX90A-NEXT:    ;;#ASMSTART
1308 ; GFX90A-NEXT:    ; use s[8:9]
1309 ; GFX90A-NEXT:    ;;#ASMEND
1310 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1312 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__u_0:
1313 ; GFX940:       ; %bb.0:
1314 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1315 ; GFX940-NEXT:    ;;#ASMSTART
1316 ; GFX940-NEXT:    ; def s[0:1]
1317 ; GFX940-NEXT:    ;;#ASMEND
1318 ; GFX940-NEXT:    s_mov_b32 s9, s0
1319 ; GFX940-NEXT:    ;;#ASMSTART
1320 ; GFX940-NEXT:    ; use s[8:9]
1321 ; GFX940-NEXT:    ;;#ASMEND
1322 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1323   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1324   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 0>
1325   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1326   ret void
1329 define void @s_shuffle_v2p3_v2p3__0_0() {
1330 ; GFX9-LABEL: s_shuffle_v2p3_v2p3__0_0:
1331 ; GFX9:       ; %bb.0:
1332 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1333 ; GFX9-NEXT:    ;;#ASMSTART
1334 ; GFX9-NEXT:    ; def s[8:9]
1335 ; GFX9-NEXT:    ;;#ASMEND
1336 ; GFX9-NEXT:    s_mov_b32 s9, s8
1337 ; GFX9-NEXT:    ;;#ASMSTART
1338 ; GFX9-NEXT:    ; use s[8:9]
1339 ; GFX9-NEXT:    ;;#ASMEND
1340 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1341   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1342   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> zeroinitializer
1343   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1344   ret void
1347 define void @s_shuffle_v2p3_v2p3__1_0() {
1348 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__1_0:
1349 ; GFX900:       ; %bb.0:
1350 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1351 ; GFX900-NEXT:    ;;#ASMSTART
1352 ; GFX900-NEXT:    ; def s[4:5]
1353 ; GFX900-NEXT:    ;;#ASMEND
1354 ; GFX900-NEXT:    s_mov_b32 s8, s5
1355 ; GFX900-NEXT:    s_mov_b32 s9, s4
1356 ; GFX900-NEXT:    ;;#ASMSTART
1357 ; GFX900-NEXT:    ; use s[8:9]
1358 ; GFX900-NEXT:    ;;#ASMEND
1359 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1361 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__1_0:
1362 ; GFX90A:       ; %bb.0:
1363 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1364 ; GFX90A-NEXT:    ;;#ASMSTART
1365 ; GFX90A-NEXT:    ; def s[4:5]
1366 ; GFX90A-NEXT:    ;;#ASMEND
1367 ; GFX90A-NEXT:    s_mov_b32 s8, s5
1368 ; GFX90A-NEXT:    s_mov_b32 s9, s4
1369 ; GFX90A-NEXT:    ;;#ASMSTART
1370 ; GFX90A-NEXT:    ; use s[8:9]
1371 ; GFX90A-NEXT:    ;;#ASMEND
1372 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1374 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__1_0:
1375 ; GFX940:       ; %bb.0:
1376 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1377 ; GFX940-NEXT:    ;;#ASMSTART
1378 ; GFX940-NEXT:    ; def s[0:1]
1379 ; GFX940-NEXT:    ;;#ASMEND
1380 ; GFX940-NEXT:    s_mov_b32 s8, s1
1381 ; GFX940-NEXT:    s_mov_b32 s9, s0
1382 ; GFX940-NEXT:    ;;#ASMSTART
1383 ; GFX940-NEXT:    ; use s[8:9]
1384 ; GFX940-NEXT:    ;;#ASMEND
1385 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1386   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1387   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 0>
1388   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1389   ret void
1392 define void @s_shuffle_v2p3_v2p3__2_0() {
1393 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__2_0:
1394 ; GFX900:       ; %bb.0:
1395 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1396 ; GFX900-NEXT:    ;;#ASMSTART
1397 ; GFX900-NEXT:    ; def s[4:5]
1398 ; GFX900-NEXT:    ;;#ASMEND
1399 ; GFX900-NEXT:    s_mov_b32 s9, s4
1400 ; GFX900-NEXT:    ;;#ASMSTART
1401 ; GFX900-NEXT:    ; use s[8:9]
1402 ; GFX900-NEXT:    ;;#ASMEND
1403 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1405 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__2_0:
1406 ; GFX90A:       ; %bb.0:
1407 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1408 ; GFX90A-NEXT:    ;;#ASMSTART
1409 ; GFX90A-NEXT:    ; def s[4:5]
1410 ; GFX90A-NEXT:    ;;#ASMEND
1411 ; GFX90A-NEXT:    s_mov_b32 s9, s4
1412 ; GFX90A-NEXT:    ;;#ASMSTART
1413 ; GFX90A-NEXT:    ; use s[8:9]
1414 ; GFX90A-NEXT:    ;;#ASMEND
1415 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1417 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__2_0:
1418 ; GFX940:       ; %bb.0:
1419 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1420 ; GFX940-NEXT:    ;;#ASMSTART
1421 ; GFX940-NEXT:    ; def s[0:1]
1422 ; GFX940-NEXT:    ;;#ASMEND
1423 ; GFX940-NEXT:    s_mov_b32 s9, s0
1424 ; GFX940-NEXT:    ;;#ASMSTART
1425 ; GFX940-NEXT:    ; use s[8:9]
1426 ; GFX940-NEXT:    ;;#ASMEND
1427 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1428   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1429   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 0>
1430   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1431   ret void
1434 define void @s_shuffle_v2p3_v2p3__u_1() {
1435 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__u_1:
1436 ; GFX900:       ; %bb.0:
1437 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1438 ; GFX900-NEXT:    ;;#ASMSTART
1439 ; GFX900-NEXT:    ; def s[8:9]
1440 ; GFX900-NEXT:    ;;#ASMEND
1441 ; GFX900-NEXT:    ;;#ASMSTART
1442 ; GFX900-NEXT:    ; use s[8:9]
1443 ; GFX900-NEXT:    ;;#ASMEND
1444 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1446 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__u_1:
1447 ; GFX90A:       ; %bb.0:
1448 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1449 ; GFX90A-NEXT:    ;;#ASMSTART
1450 ; GFX90A-NEXT:    ; def s[8:9]
1451 ; GFX90A-NEXT:    ;;#ASMEND
1452 ; GFX90A-NEXT:    ;;#ASMSTART
1453 ; GFX90A-NEXT:    ; use s[8:9]
1454 ; GFX90A-NEXT:    ;;#ASMEND
1455 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1457 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__u_1:
1458 ; GFX940:       ; %bb.0:
1459 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1460 ; GFX940-NEXT:    ;;#ASMSTART
1461 ; GFX940-NEXT:    ; def s[8:9]
1462 ; GFX940-NEXT:    ;;#ASMEND
1463 ; GFX940-NEXT:    s_nop 0
1464 ; GFX940-NEXT:    ;;#ASMSTART
1465 ; GFX940-NEXT:    ; use s[8:9]
1466 ; GFX940-NEXT:    ;;#ASMEND
1467 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1468   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1469   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 1>
1470   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1471   ret void
1474 define void @s_shuffle_v2p3_v2p3__0_1() {
1475 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__0_1:
1476 ; GFX900:       ; %bb.0:
1477 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1478 ; GFX900-NEXT:    ;;#ASMSTART
1479 ; GFX900-NEXT:    ; def s[8:9]
1480 ; GFX900-NEXT:    ;;#ASMEND
1481 ; GFX900-NEXT:    ;;#ASMSTART
1482 ; GFX900-NEXT:    ; use s[8:9]
1483 ; GFX900-NEXT:    ;;#ASMEND
1484 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1486 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__0_1:
1487 ; GFX90A:       ; %bb.0:
1488 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1489 ; GFX90A-NEXT:    ;;#ASMSTART
1490 ; GFX90A-NEXT:    ; def s[8:9]
1491 ; GFX90A-NEXT:    ;;#ASMEND
1492 ; GFX90A-NEXT:    ;;#ASMSTART
1493 ; GFX90A-NEXT:    ; use s[8:9]
1494 ; GFX90A-NEXT:    ;;#ASMEND
1495 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1497 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__0_1:
1498 ; GFX940:       ; %bb.0:
1499 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1500 ; GFX940-NEXT:    ;;#ASMSTART
1501 ; GFX940-NEXT:    ; def s[8:9]
1502 ; GFX940-NEXT:    ;;#ASMEND
1503 ; GFX940-NEXT:    s_nop 0
1504 ; GFX940-NEXT:    ;;#ASMSTART
1505 ; GFX940-NEXT:    ; use s[8:9]
1506 ; GFX940-NEXT:    ;;#ASMEND
1507 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1508   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1509   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 1>
1510   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1511   ret void
1514 define void @s_shuffle_v2p3_v2p3__1_1() {
1515 ; GFX9-LABEL: s_shuffle_v2p3_v2p3__1_1:
1516 ; GFX9:       ; %bb.0:
1517 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1518 ; GFX9-NEXT:    ;;#ASMSTART
1519 ; GFX9-NEXT:    ; def s[8:9]
1520 ; GFX9-NEXT:    ;;#ASMEND
1521 ; GFX9-NEXT:    s_mov_b32 s8, s9
1522 ; GFX9-NEXT:    ;;#ASMSTART
1523 ; GFX9-NEXT:    ; use s[8:9]
1524 ; GFX9-NEXT:    ;;#ASMEND
1525 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1526   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1527   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 1>
1528   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1529   ret void
1532 define void @s_shuffle_v2p3_v2p3__2_1() {
1533 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__2_1:
1534 ; GFX900:       ; %bb.0:
1535 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1536 ; GFX900-NEXT:    ;;#ASMSTART
1537 ; GFX900-NEXT:    ; def s[8:9]
1538 ; GFX900-NEXT:    ;;#ASMEND
1539 ; GFX900-NEXT:    ;;#ASMSTART
1540 ; GFX900-NEXT:    ; use s[8:9]
1541 ; GFX900-NEXT:    ;;#ASMEND
1542 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1544 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__2_1:
1545 ; GFX90A:       ; %bb.0:
1546 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1547 ; GFX90A-NEXT:    ;;#ASMSTART
1548 ; GFX90A-NEXT:    ; def s[8:9]
1549 ; GFX90A-NEXT:    ;;#ASMEND
1550 ; GFX90A-NEXT:    ;;#ASMSTART
1551 ; GFX90A-NEXT:    ; use s[8:9]
1552 ; GFX90A-NEXT:    ;;#ASMEND
1553 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1555 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__2_1:
1556 ; GFX940:       ; %bb.0:
1557 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1558 ; GFX940-NEXT:    ;;#ASMSTART
1559 ; GFX940-NEXT:    ; def s[8:9]
1560 ; GFX940-NEXT:    ;;#ASMEND
1561 ; GFX940-NEXT:    s_nop 0
1562 ; GFX940-NEXT:    ;;#ASMSTART
1563 ; GFX940-NEXT:    ; use s[8:9]
1564 ; GFX940-NEXT:    ;;#ASMEND
1565 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1566   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1567   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 1>
1568   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1569   ret void
1572 define void @s_shuffle_v2p3_v2p3__u_2() {
1573 ; GFX9-LABEL: s_shuffle_v2p3_v2p3__u_2:
1574 ; GFX9:       ; %bb.0:
1575 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1576 ; GFX9-NEXT:    ;;#ASMSTART
1577 ; GFX9-NEXT:    ; use s[8:9]
1578 ; GFX9-NEXT:    ;;#ASMEND
1579 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1580   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1581   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 poison, i32 2>
1582   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1583   ret void
1586 define void @s_shuffle_v2p3_v2p3__0_2() {
1587 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__0_2:
1588 ; GFX900:       ; %bb.0:
1589 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1590 ; GFX900-NEXT:    ;;#ASMSTART
1591 ; GFX900-NEXT:    ; def s[8:9]
1592 ; GFX900-NEXT:    ;;#ASMEND
1593 ; GFX900-NEXT:    ;;#ASMSTART
1594 ; GFX900-NEXT:    ; use s[8:9]
1595 ; GFX900-NEXT:    ;;#ASMEND
1596 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1598 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__0_2:
1599 ; GFX90A:       ; %bb.0:
1600 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1601 ; GFX90A-NEXT:    ;;#ASMSTART
1602 ; GFX90A-NEXT:    ; def s[8:9]
1603 ; GFX90A-NEXT:    ;;#ASMEND
1604 ; GFX90A-NEXT:    ;;#ASMSTART
1605 ; GFX90A-NEXT:    ; use s[8:9]
1606 ; GFX90A-NEXT:    ;;#ASMEND
1607 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1609 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__0_2:
1610 ; GFX940:       ; %bb.0:
1611 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1612 ; GFX940-NEXT:    ;;#ASMSTART
1613 ; GFX940-NEXT:    ; def s[8:9]
1614 ; GFX940-NEXT:    ;;#ASMEND
1615 ; GFX940-NEXT:    s_nop 0
1616 ; GFX940-NEXT:    ;;#ASMSTART
1617 ; GFX940-NEXT:    ; use s[8:9]
1618 ; GFX940-NEXT:    ;;#ASMEND
1619 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1620   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1621   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 0, i32 2>
1622   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1623   ret void
1626 define void @s_shuffle_v2p3_v2p3__1_2() {
1627 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__1_2:
1628 ; GFX900:       ; %bb.0:
1629 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1630 ; GFX900-NEXT:    ;;#ASMSTART
1631 ; GFX900-NEXT:    ; def s[4:5]
1632 ; GFX900-NEXT:    ;;#ASMEND
1633 ; GFX900-NEXT:    s_mov_b32 s8, s5
1634 ; GFX900-NEXT:    ;;#ASMSTART
1635 ; GFX900-NEXT:    ; use s[8:9]
1636 ; GFX900-NEXT:    ;;#ASMEND
1637 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1639 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__1_2:
1640 ; GFX90A:       ; %bb.0:
1641 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1642 ; GFX90A-NEXT:    ;;#ASMSTART
1643 ; GFX90A-NEXT:    ; def s[4:5]
1644 ; GFX90A-NEXT:    ;;#ASMEND
1645 ; GFX90A-NEXT:    s_mov_b32 s8, s5
1646 ; GFX90A-NEXT:    ;;#ASMSTART
1647 ; GFX90A-NEXT:    ; use s[8:9]
1648 ; GFX90A-NEXT:    ;;#ASMEND
1649 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1651 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__1_2:
1652 ; GFX940:       ; %bb.0:
1653 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1654 ; GFX940-NEXT:    ;;#ASMSTART
1655 ; GFX940-NEXT:    ; def s[0:1]
1656 ; GFX940-NEXT:    ;;#ASMEND
1657 ; GFX940-NEXT:    s_mov_b32 s8, s1
1658 ; GFX940-NEXT:    ;;#ASMSTART
1659 ; GFX940-NEXT:    ; use s[8:9]
1660 ; GFX940-NEXT:    ;;#ASMEND
1661 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1662   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1663   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 1, i32 2>
1664   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1665   ret void
1668 define void @s_shuffle_v2p3_v2p3__2_2() {
1669 ; GFX9-LABEL: s_shuffle_v2p3_v2p3__2_2:
1670 ; GFX9:       ; %bb.0:
1671 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1672 ; GFX9-NEXT:    ;;#ASMSTART
1673 ; GFX9-NEXT:    ; use s[8:9]
1674 ; GFX9-NEXT:    ;;#ASMEND
1675 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1676   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1677   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <2 x i32> <i32 2, i32 2>
1678   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1679   ret void
1682 define void @s_shuffle_v2p3_v2p3__u_3() {
1683 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__u_3:
1684 ; GFX900:       ; %bb.0:
1685 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1686 ; GFX900-NEXT:    ;;#ASMSTART
1687 ; GFX900-NEXT:    ; def s[8:9]
1688 ; GFX900-NEXT:    ;;#ASMEND
1689 ; GFX900-NEXT:    ;;#ASMSTART
1690 ; GFX900-NEXT:    ; use s[8:9]
1691 ; GFX900-NEXT:    ;;#ASMEND
1692 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1694 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__u_3:
1695 ; GFX90A:       ; %bb.0:
1696 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1697 ; GFX90A-NEXT:    ;;#ASMSTART
1698 ; GFX90A-NEXT:    ; def s[8:9]
1699 ; GFX90A-NEXT:    ;;#ASMEND
1700 ; GFX90A-NEXT:    ;;#ASMSTART
1701 ; GFX90A-NEXT:    ; use s[8:9]
1702 ; GFX90A-NEXT:    ;;#ASMEND
1703 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1705 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__u_3:
1706 ; GFX940:       ; %bb.0:
1707 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1708 ; GFX940-NEXT:    ;;#ASMSTART
1709 ; GFX940-NEXT:    ; def s[8:9]
1710 ; GFX940-NEXT:    ;;#ASMEND
1711 ; GFX940-NEXT:    s_nop 0
1712 ; GFX940-NEXT:    ;;#ASMSTART
1713 ; GFX940-NEXT:    ; use s[8:9]
1714 ; GFX940-NEXT:    ;;#ASMEND
1715 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1716   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1717   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1718   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 poison, i32 3>
1719   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1720   ret void
1723 define void @s_shuffle_v2p3_v2p3__0_3() {
1724 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__0_3:
1725 ; GFX900:       ; %bb.0:
1726 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1727 ; GFX900-NEXT:    ;;#ASMSTART
1728 ; GFX900-NEXT:    ; def s[8:9]
1729 ; GFX900-NEXT:    ;;#ASMEND
1730 ; GFX900-NEXT:    ;;#ASMSTART
1731 ; GFX900-NEXT:    ; def s[4:5]
1732 ; GFX900-NEXT:    ;;#ASMEND
1733 ; GFX900-NEXT:    s_mov_b32 s9, s5
1734 ; GFX900-NEXT:    ;;#ASMSTART
1735 ; GFX900-NEXT:    ; use s[8:9]
1736 ; GFX900-NEXT:    ;;#ASMEND
1737 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1739 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__0_3:
1740 ; GFX90A:       ; %bb.0:
1741 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1742 ; GFX90A-NEXT:    ;;#ASMSTART
1743 ; GFX90A-NEXT:    ; def s[8:9]
1744 ; GFX90A-NEXT:    ;;#ASMEND
1745 ; GFX90A-NEXT:    ;;#ASMSTART
1746 ; GFX90A-NEXT:    ; def s[4:5]
1747 ; GFX90A-NEXT:    ;;#ASMEND
1748 ; GFX90A-NEXT:    s_mov_b32 s9, s5
1749 ; GFX90A-NEXT:    ;;#ASMSTART
1750 ; GFX90A-NEXT:    ; use s[8:9]
1751 ; GFX90A-NEXT:    ;;#ASMEND
1752 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1754 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__0_3:
1755 ; GFX940:       ; %bb.0:
1756 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1757 ; GFX940-NEXT:    ;;#ASMSTART
1758 ; GFX940-NEXT:    ; def s[8:9]
1759 ; GFX940-NEXT:    ;;#ASMEND
1760 ; GFX940-NEXT:    ;;#ASMSTART
1761 ; GFX940-NEXT:    ; def s[0:1]
1762 ; GFX940-NEXT:    ;;#ASMEND
1763 ; GFX940-NEXT:    s_mov_b32 s9, s1
1764 ; GFX940-NEXT:    ;;#ASMSTART
1765 ; GFX940-NEXT:    ; use s[8:9]
1766 ; GFX940-NEXT:    ;;#ASMEND
1767 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1768   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1769   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1770   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 0, i32 3>
1771   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1772   ret void
1775 define void @s_shuffle_v2p3_v2p3__1_3() {
1776 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__1_3:
1777 ; GFX900:       ; %bb.0:
1778 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1779 ; GFX900-NEXT:    ;;#ASMSTART
1780 ; GFX900-NEXT:    ; def s[8:9]
1781 ; GFX900-NEXT:    ;;#ASMEND
1782 ; GFX900-NEXT:    ;;#ASMSTART
1783 ; GFX900-NEXT:    ; def s[4:5]
1784 ; GFX900-NEXT:    ;;#ASMEND
1785 ; GFX900-NEXT:    s_mov_b32 s8, s5
1786 ; GFX900-NEXT:    ;;#ASMSTART
1787 ; GFX900-NEXT:    ; use s[8:9]
1788 ; GFX900-NEXT:    ;;#ASMEND
1789 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1791 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__1_3:
1792 ; GFX90A:       ; %bb.0:
1793 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1794 ; GFX90A-NEXT:    ;;#ASMSTART
1795 ; GFX90A-NEXT:    ; def s[8:9]
1796 ; GFX90A-NEXT:    ;;#ASMEND
1797 ; GFX90A-NEXT:    ;;#ASMSTART
1798 ; GFX90A-NEXT:    ; def s[4:5]
1799 ; GFX90A-NEXT:    ;;#ASMEND
1800 ; GFX90A-NEXT:    s_mov_b32 s8, s5
1801 ; GFX90A-NEXT:    ;;#ASMSTART
1802 ; GFX90A-NEXT:    ; use s[8:9]
1803 ; GFX90A-NEXT:    ;;#ASMEND
1804 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1806 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__1_3:
1807 ; GFX940:       ; %bb.0:
1808 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1809 ; GFX940-NEXT:    ;;#ASMSTART
1810 ; GFX940-NEXT:    ; def s[8:9]
1811 ; GFX940-NEXT:    ;;#ASMEND
1812 ; GFX940-NEXT:    ;;#ASMSTART
1813 ; GFX940-NEXT:    ; def s[0:1]
1814 ; GFX940-NEXT:    ;;#ASMEND
1815 ; GFX940-NEXT:    s_mov_b32 s8, s1
1816 ; GFX940-NEXT:    ;;#ASMSTART
1817 ; GFX940-NEXT:    ; use s[8:9]
1818 ; GFX940-NEXT:    ;;#ASMEND
1819 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1820   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1821   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1822   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 1, i32 3>
1823   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1824   ret void
1827 define void @s_shuffle_v2p3_v2p3__2_3() {
1828 ; GFX900-LABEL: s_shuffle_v2p3_v2p3__2_3:
1829 ; GFX900:       ; %bb.0:
1830 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1831 ; GFX900-NEXT:    ;;#ASMSTART
1832 ; GFX900-NEXT:    ; def s[8:9]
1833 ; GFX900-NEXT:    ;;#ASMEND
1834 ; GFX900-NEXT:    ;;#ASMSTART
1835 ; GFX900-NEXT:    ; use s[8:9]
1836 ; GFX900-NEXT:    ;;#ASMEND
1837 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1839 ; GFX90A-LABEL: s_shuffle_v2p3_v2p3__2_3:
1840 ; GFX90A:       ; %bb.0:
1841 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1842 ; GFX90A-NEXT:    ;;#ASMSTART
1843 ; GFX90A-NEXT:    ; def s[8:9]
1844 ; GFX90A-NEXT:    ;;#ASMEND
1845 ; GFX90A-NEXT:    ;;#ASMSTART
1846 ; GFX90A-NEXT:    ; use s[8:9]
1847 ; GFX90A-NEXT:    ;;#ASMEND
1848 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1850 ; GFX940-LABEL: s_shuffle_v2p3_v2p3__2_3:
1851 ; GFX940:       ; %bb.0:
1852 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1853 ; GFX940-NEXT:    ;;#ASMSTART
1854 ; GFX940-NEXT:    ; def s[8:9]
1855 ; GFX940-NEXT:    ;;#ASMEND
1856 ; GFX940-NEXT:    s_nop 0
1857 ; GFX940-NEXT:    ;;#ASMSTART
1858 ; GFX940-NEXT:    ; use s[8:9]
1859 ; GFX940-NEXT:    ;;#ASMEND
1860 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1861   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1862   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
1863   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <2 x i32> <i32 2, i32 3>
1864   call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x ptr addrspace(3)> %shuf)
1865   ret void
1867 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
1868 ; GFX90APLUS: {{.*}}