[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / shufflevector.v3p3.v2p3.ll
blobae748cba52c68828fdf7f7fe6fbf72c44e6729eb
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_v3p3_v2p3__u_u_u(ptr addrspace(1) inreg %ptr) {
8 ; GFX9-LABEL: v_shuffle_v3p3_v2p3__u_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, <3 x i32> poison
14   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
15   ret void
18 define void @v_shuffle_v3p3_v2p3__0_u_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__0_u_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_dwordx3 v2, v[0:2], s[16:17]
27 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
28 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
30 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__0_u_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_dwordx3 v2, v[0:2], s[16:17]
38 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
39 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__0_u_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_dwordx3 v2, v[0:2], 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, <3 x i32> <i32 0, i32 poison, i32 poison>
53   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
54   ret void
57 define void @v_shuffle_v3p3_v2p3__1_u_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__1_u_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_dwordx3 v2, v[0:2], s[16:17]
67 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
68 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
70 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__1_u_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_dwordx3 v2, v[0:2], s[16:17]
79 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
80 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
82 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__1_u_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_dwordx3 v2, v[0:2], 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, <3 x i32> <i32 1, i32 poison, i32 poison>
95   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
96   ret void
99 define void @v_shuffle_v3p3_v2p3__2_u_u(ptr addrspace(1) inreg %ptr) {
100 ; GFX9-LABEL: v_shuffle_v3p3_v2p3__2_u_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, <3 x i32> <i32 2, i32 poison, i32 poison>
106   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
107   ret void
110 define void @v_shuffle_v3p3_v2p3__3_u_u(ptr addrspace(1) inreg %ptr) {
111 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_u_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_dwordx3 v2, v[0:2], s[16:17]
120 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
121 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
123 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_u_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_dwordx3 v2, v[0:2], s[16:17]
132 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
133 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
135 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_u_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_dwordx3 v2, v[0:2], 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, <3 x i32> <i32 3, i32 poison, i32 poison>
149   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
150   ret void
153 define void @v_shuffle_v3p3_v2p3__3_0_u(ptr addrspace(1) inreg %ptr) {
154 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_0_u:
155 ; GFX900:       ; %bb.0:
156 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
157 ; GFX900-NEXT:    ;;#ASMSTART
158 ; GFX900-NEXT:    ; def v[1:2]
159 ; GFX900-NEXT:    ;;#ASMEND
160 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
161 ; GFX900-NEXT:    ;;#ASMSTART
162 ; GFX900-NEXT:    ; def v[2:3]
163 ; GFX900-NEXT:    ;;#ASMEND
164 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
165 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
166 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
167 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
169 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_0_u:
170 ; GFX90A:       ; %bb.0:
171 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
172 ; GFX90A-NEXT:    ;;#ASMSTART
173 ; GFX90A-NEXT:    ; def v[0:1]
174 ; GFX90A-NEXT:    ;;#ASMEND
175 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
176 ; GFX90A-NEXT:    ;;#ASMSTART
177 ; GFX90A-NEXT:    ; def v[2:3]
178 ; GFX90A-NEXT:    ;;#ASMEND
179 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
180 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
181 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
182 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
183 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
185 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_0_u:
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:    v_mov_b32_e32 v0, v1
196 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
197 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], 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, <3 x i32> <i32 3, i32 0, i32 poison>
203   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
204   ret void
207 define void @v_shuffle_v3p3_v2p3__3_1_u(ptr addrspace(1) inreg %ptr) {
208 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_1_u:
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_dwordx3 v4, v[0:2], s[16:17]
220 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
221 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
223 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_1_u:
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_dwordx3 v4, v[0:2], s[16:17]
235 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
236 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
238 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_1_u:
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_dwordx3 v4, v[0:2], 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, <3 x i32> <i32 3, i32 1, i32 poison>
256   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
257   ret void
260 define void @v_shuffle_v3p3_v2p3__3_2_u(ptr addrspace(1) inreg %ptr) {
261 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_2_u:
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[1:2]
267 ; GFX900-NEXT:    ;;#ASMEND
268 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
269 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0: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_v3p3_v2p3__3_2_u:
274 ; GFX90A:       ; %bb.0:
275 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
276 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
277 ; GFX90A-NEXT:    ;;#ASMSTART
278 ; GFX90A-NEXT:    ; def v[2:3]
279 ; GFX90A-NEXT:    ;;#ASMEND
280 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
281 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
282 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
283 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
284 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
286 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_2_u:
287 ; GFX940:       ; %bb.0:
288 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
289 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
290 ; GFX940-NEXT:    ;;#ASMSTART
291 ; GFX940-NEXT:    ; def v[2:3]
292 ; GFX940-NEXT:    ;;#ASMEND
293 ; GFX940-NEXT:    s_nop 0
294 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
295 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
296 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
297 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
298 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
299   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
300   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
301   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>
302   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
303   ret void
306 define void @v_shuffle_v3p3_v2p3__3_3_u(ptr addrspace(1) inreg %ptr) {
307 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_3_u:
308 ; GFX900:       ; %bb.0:
309 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
310 ; GFX900-NEXT:    ;;#ASMSTART
311 ; GFX900-NEXT:    ; def v[0:1]
312 ; GFX900-NEXT:    ;;#ASMEND
313 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
314 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
315 ; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
316 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
317 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
319 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_3_u:
320 ; GFX90A:       ; %bb.0:
321 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
322 ; GFX90A-NEXT:    ;;#ASMSTART
323 ; GFX90A-NEXT:    ; def v[0:1]
324 ; GFX90A-NEXT:    ;;#ASMEND
325 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
326 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
327 ; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
328 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
329 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
331 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_3_u:
332 ; GFX940:       ; %bb.0:
333 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
334 ; GFX940-NEXT:    ;;#ASMSTART
335 ; GFX940-NEXT:    ; def v[0:1]
336 ; GFX940-NEXT:    ;;#ASMEND
337 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
338 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
339 ; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1
340 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
341 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
342   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
343   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
344   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>
345   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
346   ret void
349 define void @v_shuffle_v3p3_v2p3__3_3_0(ptr addrspace(1) inreg %ptr) {
350 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_3_0:
351 ; GFX900:       ; %bb.0:
352 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
353 ; GFX900-NEXT:    ;;#ASMSTART
354 ; GFX900-NEXT:    ; def v[0:1]
355 ; GFX900-NEXT:    ;;#ASMEND
356 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
357 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
358 ; GFX900-NEXT:    ;;#ASMSTART
359 ; GFX900-NEXT:    ; def v[2:3]
360 ; GFX900-NEXT:    ;;#ASMEND
361 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
362 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
363 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
365 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_3_0:
366 ; GFX90A:       ; %bb.0:
367 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
368 ; GFX90A-NEXT:    ;;#ASMSTART
369 ; GFX90A-NEXT:    ; def v[0:1]
370 ; GFX90A-NEXT:    ;;#ASMEND
371 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
372 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
373 ; GFX90A-NEXT:    ;;#ASMSTART
374 ; GFX90A-NEXT:    ; def v[2:3]
375 ; GFX90A-NEXT:    ;;#ASMEND
376 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
377 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
378 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
380 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_3_0:
381 ; GFX940:       ; %bb.0:
382 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
383 ; GFX940-NEXT:    ;;#ASMSTART
384 ; GFX940-NEXT:    ; def v[0:1]
385 ; GFX940-NEXT:    ;;#ASMEND
386 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
387 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
388 ; GFX940-NEXT:    ;;#ASMSTART
389 ; GFX940-NEXT:    ; def v[2:3]
390 ; GFX940-NEXT:    ;;#ASMEND
391 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
392 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
393 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
394   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
395   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
396   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 0>
397   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
398   ret void
401 define void @v_shuffle_v3p3_v2p3__3_3_1(ptr addrspace(1) inreg %ptr) {
402 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_3_1:
403 ; GFX900:       ; %bb.0:
404 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
405 ; GFX900-NEXT:    ;;#ASMSTART
406 ; GFX900-NEXT:    ; def v[1:2]
407 ; GFX900-NEXT:    ;;#ASMEND
408 ; GFX900-NEXT:    ;;#ASMSTART
409 ; GFX900-NEXT:    ; def v[0:1]
410 ; GFX900-NEXT:    ;;#ASMEND
411 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
412 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
413 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
414 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
415 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
417 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_3_1:
418 ; GFX90A:       ; %bb.0:
419 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
420 ; GFX90A-NEXT:    ;;#ASMSTART
421 ; GFX90A-NEXT:    ; def v[2:3]
422 ; GFX90A-NEXT:    ;;#ASMEND
423 ; GFX90A-NEXT:    ;;#ASMSTART
424 ; GFX90A-NEXT:    ; def v[0:1]
425 ; GFX90A-NEXT:    ;;#ASMEND
426 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
427 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
428 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
429 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
430 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
431 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
433 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_3_1:
434 ; GFX940:       ; %bb.0:
435 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
436 ; GFX940-NEXT:    ;;#ASMSTART
437 ; GFX940-NEXT:    ; def v[2:3]
438 ; GFX940-NEXT:    ;;#ASMEND
439 ; GFX940-NEXT:    ;;#ASMSTART
440 ; GFX940-NEXT:    ; def v[0:1]
441 ; GFX940-NEXT:    ;;#ASMEND
442 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
443 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
444 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
445 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
446 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
447 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
448   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
449   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
450   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 1>
451   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
452   ret void
455 define void @v_shuffle_v3p3_v2p3__3_3_2(ptr addrspace(1) inreg %ptr) {
456 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_3_2:
457 ; GFX900:       ; %bb.0:
458 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
459 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
460 ; GFX900-NEXT:    ;;#ASMSTART
461 ; GFX900-NEXT:    ; def v[2:3]
462 ; GFX900-NEXT:    ;;#ASMEND
463 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
464 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
465 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
466 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
467 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
469 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_3_2:
470 ; GFX90A:       ; %bb.0:
471 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
472 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
473 ; GFX90A-NEXT:    ;;#ASMSTART
474 ; GFX90A-NEXT:    ; def v[2:3]
475 ; GFX90A-NEXT:    ;;#ASMEND
476 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
477 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
478 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
479 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
480 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
482 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_3_2:
483 ; GFX940:       ; %bb.0:
484 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
485 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
486 ; GFX940-NEXT:    ;;#ASMSTART
487 ; GFX940-NEXT:    ; def v[2:3]
488 ; GFX940-NEXT:    ;;#ASMEND
489 ; GFX940-NEXT:    s_nop 0
490 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
491 ; GFX940-NEXT:    v_mov_b32_e32 v1, v3
492 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
493 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
494 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
495   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
496   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
497   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 2>
498   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
499   ret void
502 define void @v_shuffle_v3p3_v2p3__3_3_3(ptr addrspace(1) inreg %ptr) {
503 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_3_3:
504 ; GFX900:       ; %bb.0:
505 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
506 ; GFX900-NEXT:    ;;#ASMSTART
507 ; GFX900-NEXT:    ; def v[0:1]
508 ; GFX900-NEXT:    ;;#ASMEND
509 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
510 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
511 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
512 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
513 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
514 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
516 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_3_3:
517 ; GFX90A:       ; %bb.0:
518 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
519 ; GFX90A-NEXT:    ;;#ASMSTART
520 ; GFX90A-NEXT:    ; def v[0:1]
521 ; GFX90A-NEXT:    ;;#ASMEND
522 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
523 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
524 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
525 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
526 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
527 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
529 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_3_3:
530 ; GFX940:       ; %bb.0:
531 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
532 ; GFX940-NEXT:    ;;#ASMSTART
533 ; GFX940-NEXT:    ; def v[0:1]
534 ; GFX940-NEXT:    ;;#ASMEND
535 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
536 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
537 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
538 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
539 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
540 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
541   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
542   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
543   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 3>
544   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
545   ret void
548 define void @v_shuffle_v3p3_v2p3__u_0_0(ptr addrspace(1) inreg %ptr) {
549 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__u_0_0:
550 ; GFX900:       ; %bb.0:
551 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
552 ; GFX900-NEXT:    ;;#ASMSTART
553 ; GFX900-NEXT:    ; def v[1:2]
554 ; GFX900-NEXT:    ;;#ASMEND
555 ; GFX900-NEXT:    v_mov_b32_e32 v0, 0
556 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
557 ; GFX900-NEXT:    global_store_dwordx3 v0, v[0:2], s[16:17]
558 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
559 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
561 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__u_0_0:
562 ; GFX90A:       ; %bb.0:
563 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
564 ; GFX90A-NEXT:    ;;#ASMSTART
565 ; GFX90A-NEXT:    ; def v[0:1]
566 ; GFX90A-NEXT:    ;;#ASMEND
567 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
568 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
569 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
570 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
571 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
572 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
574 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__u_0_0:
575 ; GFX940:       ; %bb.0:
576 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
577 ; GFX940-NEXT:    ;;#ASMSTART
578 ; GFX940-NEXT:    ; def v[0:1]
579 ; GFX940-NEXT:    ;;#ASMEND
580 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
581 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
582 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
583 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], 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, <3 x i32> <i32 poison, i32 0, i32 0>
588   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
589   ret void
592 define void @v_shuffle_v3p3_v2p3__0_0_0(ptr addrspace(1) inreg %ptr) {
593 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__0_0_0:
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 v3, 0
600 ; GFX900-NEXT:    v_mov_b32_e32 v1, v0
601 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
602 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
603 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
604 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
606 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__0_0_0:
607 ; GFX90A:       ; %bb.0:
608 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
609 ; GFX90A-NEXT:    ;;#ASMSTART
610 ; GFX90A-NEXT:    ; def v[0:1]
611 ; GFX90A-NEXT:    ;;#ASMEND
612 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
613 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
614 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
615 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
616 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
617 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
619 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__0_0_0:
620 ; GFX940:       ; %bb.0:
621 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
622 ; GFX940-NEXT:    ;;#ASMSTART
623 ; GFX940-NEXT:    ; def v[0:1]
624 ; GFX940-NEXT:    ;;#ASMEND
625 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
626 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
627 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
628 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
629 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
630 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
631   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
632   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> zeroinitializer
633   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
634   ret void
637 define void @v_shuffle_v3p3_v2p3__1_0_0(ptr addrspace(1) inreg %ptr) {
638 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__1_0_0:
639 ; GFX900:       ; %bb.0:
640 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
641 ; GFX900-NEXT:    ;;#ASMSTART
642 ; GFX900-NEXT:    ; def v[1:2]
643 ; GFX900-NEXT:    ;;#ASMEND
644 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
645 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
646 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
647 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
648 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
649 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
651 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__1_0_0:
652 ; GFX90A:       ; %bb.0:
653 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
654 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
655 ; GFX90A-NEXT:    ;;#ASMSTART
656 ; GFX90A-NEXT:    ; def v[2:3]
657 ; GFX90A-NEXT:    ;;#ASMEND
658 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
659 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
660 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
661 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
662 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
664 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__1_0_0:
665 ; GFX940:       ; %bb.0:
666 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
667 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
668 ; GFX940-NEXT:    ;;#ASMSTART
669 ; GFX940-NEXT:    ; def v[2:3]
670 ; GFX940-NEXT:    ;;#ASMEND
671 ; GFX940-NEXT:    s_nop 0
672 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
673 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
674 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
675 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
676 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
677   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
678   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 0, i32 0>
679   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
680   ret void
683 define void @v_shuffle_v3p3_v2p3__2_0_0(ptr addrspace(1) inreg %ptr) {
684 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__2_0_0:
685 ; GFX900:       ; %bb.0:
686 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
687 ; GFX900-NEXT:    ;;#ASMSTART
688 ; GFX900-NEXT:    ; def v[1:2]
689 ; GFX900-NEXT:    ;;#ASMEND
690 ; GFX900-NEXT:    v_mov_b32_e32 v0, 0
691 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
692 ; GFX900-NEXT:    global_store_dwordx3 v0, v[0:2], s[16:17]
693 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
694 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
696 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__2_0_0:
697 ; GFX90A:       ; %bb.0:
698 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
699 ; GFX90A-NEXT:    ;;#ASMSTART
700 ; GFX90A-NEXT:    ; def v[0:1]
701 ; GFX90A-NEXT:    ;;#ASMEND
702 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
703 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
704 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
705 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
706 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
707 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
709 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__2_0_0:
710 ; GFX940:       ; %bb.0:
711 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
712 ; GFX940-NEXT:    ;;#ASMSTART
713 ; GFX940-NEXT:    ; def v[0:1]
714 ; GFX940-NEXT:    ;;#ASMEND
715 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
716 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
717 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
718 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
719 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
720 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
721   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
722   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 0, i32 0>
723   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
724   ret void
727 define void @v_shuffle_v3p3_v2p3__3_0_0(ptr addrspace(1) inreg %ptr) {
728 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_0_0:
729 ; GFX900:       ; %bb.0:
730 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
731 ; GFX900-NEXT:    ;;#ASMSTART
732 ; GFX900-NEXT:    ; def v[1:2]
733 ; GFX900-NEXT:    ;;#ASMEND
734 ; GFX900-NEXT:    ;;#ASMSTART
735 ; GFX900-NEXT:    ; def v[2:3]
736 ; GFX900-NEXT:    ;;#ASMEND
737 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
738 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
739 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
740 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
741 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
742 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
744 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_0_0:
745 ; GFX90A:       ; %bb.0:
746 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
747 ; GFX90A-NEXT:    ;;#ASMSTART
748 ; GFX90A-NEXT:    ; def v[0:1]
749 ; GFX90A-NEXT:    ;;#ASMEND
750 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
751 ; GFX90A-NEXT:    ;;#ASMSTART
752 ; GFX90A-NEXT:    ; def v[2:3]
753 ; GFX90A-NEXT:    ;;#ASMEND
754 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
755 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
756 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
757 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
758 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
760 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_0_0:
761 ; GFX940:       ; %bb.0:
762 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
763 ; GFX940-NEXT:    ;;#ASMSTART
764 ; GFX940-NEXT:    ; def v[0:1]
765 ; GFX940-NEXT:    ;;#ASMEND
766 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
767 ; GFX940-NEXT:    ;;#ASMSTART
768 ; GFX940-NEXT:    ; def v[2:3]
769 ; GFX940-NEXT:    ;;#ASMEND
770 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
771 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
772 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
773 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
774 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
775   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
776   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
777   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 0>
778   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
779   ret void
782 define void @v_shuffle_v3p3_v2p3__3_u_0(ptr addrspace(1) inreg %ptr) {
783 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_u_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[1:2]
788 ; GFX900-NEXT:    ;;#ASMEND
789 ; GFX900-NEXT:    ;;#ASMSTART
790 ; GFX900-NEXT:    ; def v[2:3]
791 ; GFX900-NEXT:    ;;#ASMEND
792 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
793 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
794 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
795 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
796 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
797 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
799 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_u_0:
800 ; GFX90A:       ; %bb.0:
801 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
802 ; GFX90A-NEXT:    ;;#ASMSTART
803 ; GFX90A-NEXT:    ; def v[0:1]
804 ; GFX90A-NEXT:    ;;#ASMEND
805 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
806 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
807 ; GFX90A-NEXT:    ;;#ASMSTART
808 ; GFX90A-NEXT:    ; def v[2:3]
809 ; GFX90A-NEXT:    ;;#ASMEND
810 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
811 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
812 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
814 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_u_0:
815 ; GFX940:       ; %bb.0:
816 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
817 ; GFX940-NEXT:    ;;#ASMSTART
818 ; GFX940-NEXT:    ; def v[0:1]
819 ; GFX940-NEXT:    ;;#ASMEND
820 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
821 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
822 ; GFX940-NEXT:    ;;#ASMSTART
823 ; GFX940-NEXT:    ; def v[2:3]
824 ; GFX940-NEXT:    ;;#ASMEND
825 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
826 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
827 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
828   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
829   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
830   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>
831   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
832   ret void
835 define void @v_shuffle_v3p3_v2p3__3_1_0(ptr addrspace(1) inreg %ptr) {
836 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_1_0:
837 ; GFX900:       ; %bb.0:
838 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
839 ; GFX900-NEXT:    ;;#ASMSTART
840 ; GFX900-NEXT:    ; def v[0:1]
841 ; GFX900-NEXT:    ;;#ASMEND
842 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
843 ; GFX900-NEXT:    ;;#ASMSTART
844 ; GFX900-NEXT:    ; def v[2:3]
845 ; GFX900-NEXT:    ;;#ASMEND
846 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
847 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
848 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
849 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
850 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
852 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_1_0:
853 ; GFX90A:       ; %bb.0:
854 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
855 ; GFX90A-NEXT:    ;;#ASMSTART
856 ; GFX90A-NEXT:    ; def v[0:1]
857 ; GFX90A-NEXT:    ;;#ASMEND
858 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
859 ; GFX90A-NEXT:    ;;#ASMSTART
860 ; GFX90A-NEXT:    ; def v[2:3]
861 ; GFX90A-NEXT:    ;;#ASMEND
862 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
863 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
864 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
865 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
866 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
868 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_1_0:
869 ; GFX940:       ; %bb.0:
870 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
871 ; GFX940-NEXT:    ;;#ASMSTART
872 ; GFX940-NEXT:    ; def v[0:1]
873 ; GFX940-NEXT:    ;;#ASMEND
874 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
875 ; GFX940-NEXT:    ;;#ASMSTART
876 ; GFX940-NEXT:    ; def v[2:3]
877 ; GFX940-NEXT:    ;;#ASMEND
878 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
879 ; GFX940-NEXT:    v_mov_b32_e32 v1, v3
880 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
881 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
882 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
883   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
884   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
885   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 0>
886   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
887   ret void
890 define void @v_shuffle_v3p3_v2p3__3_2_0(ptr addrspace(1) inreg %ptr) {
891 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_2_0:
892 ; GFX900:       ; %bb.0:
893 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
894 ; GFX900-NEXT:    ;;#ASMSTART
895 ; GFX900-NEXT:    ; def v[1:2]
896 ; GFX900-NEXT:    ;;#ASMEND
897 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
898 ; GFX900-NEXT:    ;;#ASMSTART
899 ; GFX900-NEXT:    ; def v[3:4]
900 ; GFX900-NEXT:    ;;#ASMEND
901 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
902 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
903 ; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
904 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
905 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
907 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_2_0:
908 ; GFX90A:       ; %bb.0:
909 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
910 ; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
911 ; GFX90A-NEXT:    ;;#ASMSTART
912 ; GFX90A-NEXT:    ; def v[4:5]
913 ; GFX90A-NEXT:    ;;#ASMEND
914 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
915 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
916 ; GFX90A-NEXT:    ;;#ASMSTART
917 ; GFX90A-NEXT:    ; def v[2:3]
918 ; GFX90A-NEXT:    ;;#ASMEND
919 ; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
920 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
921 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
923 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_2_0:
924 ; GFX940:       ; %bb.0:
925 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
926 ; GFX940-NEXT:    v_mov_b32_e32 v6, 0
927 ; GFX940-NEXT:    ;;#ASMSTART
928 ; GFX940-NEXT:    ; def v[4:5]
929 ; GFX940-NEXT:    ;;#ASMEND
930 ; GFX940-NEXT:    ;;#ASMSTART
931 ; GFX940-NEXT:    ; def v[2:3]
932 ; GFX940-NEXT:    ;;#ASMEND
933 ; GFX940-NEXT:    s_nop 0
934 ; GFX940-NEXT:    v_mov_b32_e32 v0, v5
935 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
936 ; GFX940-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
937 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
938 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
939   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
940   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
941   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 0>
942   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
943   ret void
946 define void @v_shuffle_v3p3_v2p3__u_1_1(ptr addrspace(1) inreg %ptr) {
947 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__u_1_1:
948 ; GFX900:       ; %bb.0:
949 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
950 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
951 ; GFX900-NEXT:    ;;#ASMSTART
952 ; GFX900-NEXT:    ; def v[0:1]
953 ; GFX900-NEXT:    ;;#ASMEND
954 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
955 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
956 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
957 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
959 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__u_1_1:
960 ; GFX90A:       ; %bb.0:
961 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
962 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
963 ; GFX90A-NEXT:    ;;#ASMSTART
964 ; GFX90A-NEXT:    ; def v[0:1]
965 ; GFX90A-NEXT:    ;;#ASMEND
966 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
967 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
968 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
969 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
971 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__u_1_1:
972 ; GFX940:       ; %bb.0:
973 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
974 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
975 ; GFX940-NEXT:    ;;#ASMSTART
976 ; GFX940-NEXT:    ; def v[0:1]
977 ; GFX940-NEXT:    ;;#ASMEND
978 ; GFX940-NEXT:    s_nop 0
979 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
980 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
981 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
982 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
983   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
984   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 1, i32 1>
985   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
986   ret void
989 define void @v_shuffle_v3p3_v2p3__0_1_1(ptr addrspace(1) inreg %ptr) {
990 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__0_1_1:
991 ; GFX900:       ; %bb.0:
992 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
993 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
994 ; GFX900-NEXT:    ;;#ASMSTART
995 ; GFX900-NEXT:    ; def v[0:1]
996 ; GFX900-NEXT:    ;;#ASMEND
997 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
998 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
999 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1000 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1002 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__0_1_1:
1003 ; GFX90A:       ; %bb.0:
1004 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1005 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1006 ; GFX90A-NEXT:    ;;#ASMSTART
1007 ; GFX90A-NEXT:    ; def v[0:1]
1008 ; GFX90A-NEXT:    ;;#ASMEND
1009 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1010 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1011 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1012 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1014 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__0_1_1:
1015 ; GFX940:       ; %bb.0:
1016 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1017 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1018 ; GFX940-NEXT:    ;;#ASMSTART
1019 ; GFX940-NEXT:    ; def v[0:1]
1020 ; GFX940-NEXT:    ;;#ASMEND
1021 ; GFX940-NEXT:    s_nop 0
1022 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1023 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
1024 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1025 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1026   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1027   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 1, i32 1>
1028   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1029   ret void
1032 define void @v_shuffle_v3p3_v2p3__1_1_1(ptr addrspace(1) inreg %ptr) {
1033 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__1_1_1:
1034 ; GFX900:       ; %bb.0:
1035 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1036 ; GFX900-NEXT:    ;;#ASMSTART
1037 ; GFX900-NEXT:    ; def v[0:1]
1038 ; GFX900-NEXT:    ;;#ASMEND
1039 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1040 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
1041 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1042 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1043 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1044 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1046 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__1_1_1:
1047 ; GFX90A:       ; %bb.0:
1048 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1049 ; GFX90A-NEXT:    ;;#ASMSTART
1050 ; GFX90A-NEXT:    ; def v[0:1]
1051 ; GFX90A-NEXT:    ;;#ASMEND
1052 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1053 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1054 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1055 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1056 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1057 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1059 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__1_1_1:
1060 ; GFX940:       ; %bb.0:
1061 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1062 ; GFX940-NEXT:    ;;#ASMSTART
1063 ; GFX940-NEXT:    ; def v[0:1]
1064 ; GFX940-NEXT:    ;;#ASMEND
1065 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1066 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1067 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1068 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
1069 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1070 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1071   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1072   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 1, i32 1>
1073   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1074   ret void
1077 define void @v_shuffle_v3p3_v2p3__2_1_1(ptr addrspace(1) inreg %ptr) {
1078 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__2_1_1:
1079 ; GFX900:       ; %bb.0:
1080 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1081 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1082 ; GFX900-NEXT:    ;;#ASMSTART
1083 ; GFX900-NEXT:    ; def v[0:1]
1084 ; GFX900-NEXT:    ;;#ASMEND
1085 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1086 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1087 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1088 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1090 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__2_1_1:
1091 ; GFX90A:       ; %bb.0:
1092 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1093 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1094 ; GFX90A-NEXT:    ;;#ASMSTART
1095 ; GFX90A-NEXT:    ; def v[0:1]
1096 ; GFX90A-NEXT:    ;;#ASMEND
1097 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1098 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1099 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1100 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1102 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__2_1_1:
1103 ; GFX940:       ; %bb.0:
1104 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1105 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1106 ; GFX940-NEXT:    ;;#ASMSTART
1107 ; GFX940-NEXT:    ; def v[0:1]
1108 ; GFX940-NEXT:    ;;#ASMEND
1109 ; GFX940-NEXT:    s_nop 0
1110 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1111 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
1112 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1113 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1114   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1115   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 1, i32 1>
1116   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1117   ret void
1120 define void @v_shuffle_v3p3_v2p3__3_1_1(ptr addrspace(1) inreg %ptr) {
1121 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_1_1:
1122 ; GFX900:       ; %bb.0:
1123 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1124 ; GFX900-NEXT:    ;;#ASMSTART
1125 ; GFX900-NEXT:    ; def v[0:1]
1126 ; GFX900-NEXT:    ;;#ASMEND
1127 ; GFX900-NEXT:    ;;#ASMSTART
1128 ; GFX900-NEXT:    ; def v[2:3]
1129 ; GFX900-NEXT:    ;;#ASMEND
1130 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1131 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1132 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1133 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1134 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1135 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1137 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_1_1:
1138 ; GFX90A:       ; %bb.0:
1139 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1140 ; GFX90A-NEXT:    ;;#ASMSTART
1141 ; GFX90A-NEXT:    ; def v[0:1]
1142 ; GFX90A-NEXT:    ;;#ASMEND
1143 ; GFX90A-NEXT:    ;;#ASMSTART
1144 ; GFX90A-NEXT:    ; def v[2:3]
1145 ; GFX90A-NEXT:    ;;#ASMEND
1146 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1147 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1148 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1149 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1150 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1151 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1153 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_1_1:
1154 ; GFX940:       ; %bb.0:
1155 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1156 ; GFX940-NEXT:    ;;#ASMSTART
1157 ; GFX940-NEXT:    ; def v[0:1]
1158 ; GFX940-NEXT:    ;;#ASMEND
1159 ; GFX940-NEXT:    ;;#ASMSTART
1160 ; GFX940-NEXT:    ; def v[2:3]
1161 ; GFX940-NEXT:    ;;#ASMEND
1162 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1163 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1164 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1165 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1166 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1167 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1168   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1169   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1170   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 1>
1171   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1172   ret void
1175 define void @v_shuffle_v3p3_v2p3__3_u_1(ptr addrspace(1) inreg %ptr) {
1176 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_u_1:
1177 ; GFX900:       ; %bb.0:
1178 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1179 ; GFX900-NEXT:    ;;#ASMSTART
1180 ; GFX900-NEXT:    ; def v[1:2]
1181 ; GFX900-NEXT:    ;;#ASMEND
1182 ; GFX900-NEXT:    ;;#ASMSTART
1183 ; GFX900-NEXT:    ; def v[0:1]
1184 ; GFX900-NEXT:    ;;#ASMEND
1185 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1186 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
1187 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1188 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1189 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1191 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_u_1:
1192 ; GFX90A:       ; %bb.0:
1193 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1194 ; GFX90A-NEXT:    ;;#ASMSTART
1195 ; GFX90A-NEXT:    ; def v[0:1]
1196 ; GFX90A-NEXT:    ;;#ASMEND
1197 ; GFX90A-NEXT:    ;;#ASMSTART
1198 ; GFX90A-NEXT:    ; def v[2:3]
1199 ; GFX90A-NEXT:    ;;#ASMEND
1200 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1201 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1202 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1203 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1204 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1205 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1207 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_u_1:
1208 ; GFX940:       ; %bb.0:
1209 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1210 ; GFX940-NEXT:    ;;#ASMSTART
1211 ; GFX940-NEXT:    ; def v[0:1]
1212 ; GFX940-NEXT:    ;;#ASMEND
1213 ; GFX940-NEXT:    ;;#ASMSTART
1214 ; GFX940-NEXT:    ; def v[2:3]
1215 ; GFX940-NEXT:    ;;#ASMEND
1216 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1217 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1218 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1219 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1220 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1221 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1222   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1223   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1224   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>
1225   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1226   ret void
1229 define void @v_shuffle_v3p3_v2p3__3_0_1(ptr addrspace(1) inreg %ptr) {
1230 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_0_1:
1231 ; GFX900:       ; %bb.0:
1232 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1233 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
1234 ; GFX900-NEXT:    ;;#ASMSTART
1235 ; GFX900-NEXT:    ; def v[3:4]
1236 ; GFX900-NEXT:    ;;#ASMEND
1237 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
1238 ; GFX900-NEXT:    ;;#ASMSTART
1239 ; GFX900-NEXT:    ; def v[1:2]
1240 ; GFX900-NEXT:    ;;#ASMEND
1241 ; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
1242 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1243 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1245 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_0_1:
1246 ; GFX90A:       ; %bb.0:
1247 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1248 ; GFX90A-NEXT:    ;;#ASMSTART
1249 ; GFX90A-NEXT:    ; def v[2:3]
1250 ; GFX90A-NEXT:    ;;#ASMEND
1251 ; GFX90A-NEXT:    ;;#ASMSTART
1252 ; GFX90A-NEXT:    ; def v[0:1]
1253 ; GFX90A-NEXT:    ;;#ASMEND
1254 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1255 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1256 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1257 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
1258 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1259 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1260 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1262 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_0_1:
1263 ; GFX940:       ; %bb.0:
1264 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1265 ; GFX940-NEXT:    ;;#ASMSTART
1266 ; GFX940-NEXT:    ; def v[2:3]
1267 ; GFX940-NEXT:    ;;#ASMEND
1268 ; GFX940-NEXT:    ;;#ASMSTART
1269 ; GFX940-NEXT:    ; def v[0:1]
1270 ; GFX940-NEXT:    ;;#ASMEND
1271 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1272 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1273 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1274 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
1275 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1276 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1277 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1278   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1279   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1280   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 1>
1281   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1282   ret void
1285 define void @v_shuffle_v3p3_v2p3__3_2_1(ptr addrspace(1) inreg %ptr) {
1286 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_2_1:
1287 ; GFX900:       ; %bb.0:
1288 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1289 ; GFX900-NEXT:    ;;#ASMSTART
1290 ; GFX900-NEXT:    ; def v[2:3]
1291 ; GFX900-NEXT:    ;;#ASMEND
1292 ; GFX900-NEXT:    ;;#ASMSTART
1293 ; GFX900-NEXT:    ; def v[1:2]
1294 ; GFX900-NEXT:    ;;#ASMEND
1295 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1296 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1297 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
1298 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1299 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1300 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1302 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_2_1:
1303 ; GFX90A:       ; %bb.0:
1304 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1305 ; GFX90A-NEXT:    ;;#ASMSTART
1306 ; GFX90A-NEXT:    ; def v[2:3]
1307 ; GFX90A-NEXT:    ;;#ASMEND
1308 ; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
1309 ; GFX90A-NEXT:    ;;#ASMSTART
1310 ; GFX90A-NEXT:    ; def v[4:5]
1311 ; GFX90A-NEXT:    ;;#ASMEND
1312 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
1313 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
1314 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
1315 ; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
1316 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1317 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1319 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_2_1:
1320 ; GFX940:       ; %bb.0:
1321 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1322 ; GFX940-NEXT:    ;;#ASMSTART
1323 ; GFX940-NEXT:    ; def v[2:3]
1324 ; GFX940-NEXT:    ;;#ASMEND
1325 ; GFX940-NEXT:    v_mov_b32_e32 v6, 0
1326 ; GFX940-NEXT:    ;;#ASMSTART
1327 ; GFX940-NEXT:    ; def v[4:5]
1328 ; GFX940-NEXT:    ;;#ASMEND
1329 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
1330 ; GFX940-NEXT:    v_mov_b32_e32 v0, v5
1331 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
1332 ; GFX940-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
1333 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1334 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1335   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1336   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1337   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 1>
1338   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1339   ret void
1342 define void @v_shuffle_v3p3_v2p3__u_2_2(ptr addrspace(1) inreg %ptr) {
1343 ; GFX9-LABEL: v_shuffle_v3p3_v2p3__u_2_2:
1344 ; GFX9:       ; %bb.0:
1345 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1346 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1347   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1348   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 2, i32 2>
1349   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1350   ret void
1353 define void @v_shuffle_v3p3_v2p3__0_2_2(ptr addrspace(1) inreg %ptr) {
1354 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__0_2_2:
1355 ; GFX900:       ; %bb.0:
1356 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1357 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1358 ; GFX900-NEXT:    ;;#ASMSTART
1359 ; GFX900-NEXT:    ; def v[0:1]
1360 ; GFX900-NEXT:    ;;#ASMEND
1361 ; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
1362 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1363 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1365 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__0_2_2:
1366 ; GFX90A:       ; %bb.0:
1367 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1368 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
1369 ; GFX90A-NEXT:    ;;#ASMSTART
1370 ; GFX90A-NEXT:    ; def v[0:1]
1371 ; GFX90A-NEXT:    ;;#ASMEND
1372 ; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
1373 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1374 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1376 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__0_2_2:
1377 ; GFX940:       ; %bb.0:
1378 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1379 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
1380 ; GFX940-NEXT:    ;;#ASMSTART
1381 ; GFX940-NEXT:    ; def v[0:1]
1382 ; GFX940-NEXT:    ;;#ASMEND
1383 ; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1
1384 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1385 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1386   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1387   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 2, i32 2>
1388   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1389   ret void
1392 define void @v_shuffle_v3p3_v2p3__1_2_2(ptr addrspace(1) inreg %ptr) {
1393 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__1_2_2:
1394 ; GFX900:       ; %bb.0:
1395 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1396 ; GFX900-NEXT:    ;;#ASMSTART
1397 ; GFX900-NEXT:    ; def v[0:1]
1398 ; GFX900-NEXT:    ;;#ASMEND
1399 ; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1400 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
1401 ; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
1402 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1403 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1405 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__1_2_2:
1406 ; GFX90A:       ; %bb.0:
1407 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1408 ; GFX90A-NEXT:    ;;#ASMSTART
1409 ; GFX90A-NEXT:    ; def v[0:1]
1410 ; GFX90A-NEXT:    ;;#ASMEND
1411 ; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
1412 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1413 ; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
1414 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1415 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1417 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__1_2_2:
1418 ; GFX940:       ; %bb.0:
1419 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1420 ; GFX940-NEXT:    ;;#ASMSTART
1421 ; GFX940-NEXT:    ; def v[0:1]
1422 ; GFX940-NEXT:    ;;#ASMEND
1423 ; GFX940-NEXT:    v_mov_b32_e32 v2, 0
1424 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1425 ; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1
1426 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1427 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1428   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1429   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 2, i32 2>
1430   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1431   ret void
1434 define void @v_shuffle_v3p3_v2p3__2_2_2(ptr addrspace(1) inreg %ptr) {
1435 ; GFX9-LABEL: v_shuffle_v3p3_v2p3__2_2_2:
1436 ; GFX9:       ; %bb.0:
1437 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1438 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
1439   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1440   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 2, i32 2>
1441   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1442   ret void
1445 define void @v_shuffle_v3p3_v2p3__3_2_2(ptr addrspace(1) inreg %ptr) {
1446 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_2_2:
1447 ; GFX900:       ; %bb.0:
1448 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1449 ; GFX900-NEXT:    ;;#ASMSTART
1450 ; GFX900-NEXT:    ; def v[1:2]
1451 ; GFX900-NEXT:    ;;#ASMEND
1452 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1453 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1454 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1455 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1456 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1457 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1459 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_2_2:
1460 ; GFX90A:       ; %bb.0:
1461 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1462 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1463 ; GFX90A-NEXT:    ;;#ASMSTART
1464 ; GFX90A-NEXT:    ; def v[2:3]
1465 ; GFX90A-NEXT:    ;;#ASMEND
1466 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1467 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1468 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1469 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1470 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1472 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_2_2:
1473 ; GFX940:       ; %bb.0:
1474 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1475 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1476 ; GFX940-NEXT:    ;;#ASMSTART
1477 ; GFX940-NEXT:    ; def v[2:3]
1478 ; GFX940-NEXT:    ;;#ASMEND
1479 ; GFX940-NEXT:    s_nop 0
1480 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1481 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1482 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1483 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1484 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1485   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1486   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1487   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 2>
1488   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1489   ret void
1492 define void @v_shuffle_v3p3_v2p3__3_u_2(ptr addrspace(1) inreg %ptr) {
1493 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_u_2:
1494 ; GFX900:       ; %bb.0:
1495 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1496 ; GFX900-NEXT:    ;;#ASMSTART
1497 ; GFX900-NEXT:    ; def v[1:2]
1498 ; GFX900-NEXT:    ;;#ASMEND
1499 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1500 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1501 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1502 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1503 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1504 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1506 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_u_2:
1507 ; GFX90A:       ; %bb.0:
1508 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1509 ; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
1510 ; GFX90A-NEXT:    ;;#ASMSTART
1511 ; GFX90A-NEXT:    ; def v[2:3]
1512 ; GFX90A-NEXT:    ;;#ASMEND
1513 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1514 ; GFX90A-NEXT:    global_store_dwordx3 v1, v[0:2], s[16:17]
1515 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1516 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1518 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_u_2:
1519 ; GFX940:       ; %bb.0:
1520 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1521 ; GFX940-NEXT:    v_mov_b32_e32 v1, 0
1522 ; GFX940-NEXT:    ;;#ASMSTART
1523 ; GFX940-NEXT:    ; def v[2:3]
1524 ; GFX940-NEXT:    ;;#ASMEND
1525 ; GFX940-NEXT:    s_nop 0
1526 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1527 ; GFX940-NEXT:    global_store_dwordx3 v1, v[0:2], s[0:1] sc0 sc1
1528 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1529 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1530   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1531   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1532   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>
1533   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1534   ret void
1537 define void @v_shuffle_v3p3_v2p3__3_0_2(ptr addrspace(1) inreg %ptr) {
1538 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_0_2:
1539 ; GFX900:       ; %bb.0:
1540 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1541 ; GFX900-NEXT:    ;;#ASMSTART
1542 ; GFX900-NEXT:    ; def v[1:2]
1543 ; GFX900-NEXT:    ;;#ASMEND
1544 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1545 ; GFX900-NEXT:    ;;#ASMSTART
1546 ; GFX900-NEXT:    ; def v[2:3]
1547 ; GFX900-NEXT:    ;;#ASMEND
1548 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1549 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1550 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1551 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1553 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_0_2:
1554 ; GFX90A:       ; %bb.0:
1555 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1556 ; GFX90A-NEXT:    ;;#ASMSTART
1557 ; GFX90A-NEXT:    ; def v[2:3]
1558 ; GFX90A-NEXT:    ;;#ASMEND
1559 ; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
1560 ; GFX90A-NEXT:    ;;#ASMSTART
1561 ; GFX90A-NEXT:    ; def v[4:5]
1562 ; GFX90A-NEXT:    ;;#ASMEND
1563 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
1564 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1565 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1566 ; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
1567 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1568 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1570 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_0_2:
1571 ; GFX940:       ; %bb.0:
1572 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1573 ; GFX940-NEXT:    ;;#ASMSTART
1574 ; GFX940-NEXT:    ; def v[2:3]
1575 ; GFX940-NEXT:    ;;#ASMEND
1576 ; GFX940-NEXT:    v_mov_b32_e32 v6, 0
1577 ; GFX940-NEXT:    ;;#ASMSTART
1578 ; GFX940-NEXT:    ; def v[4:5]
1579 ; GFX940-NEXT:    ;;#ASMEND
1580 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1581 ; GFX940-NEXT:    v_mov_b32_e32 v0, v5
1582 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1583 ; GFX940-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
1584 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1585 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1586   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1587   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1588   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 2>
1589   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1590   ret void
1593 define void @v_shuffle_v3p3_v2p3__3_1_2(ptr addrspace(1) inreg %ptr) {
1594 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_1_2:
1595 ; GFX900:       ; %bb.0:
1596 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1597 ; GFX900-NEXT:    ;;#ASMSTART
1598 ; GFX900-NEXT:    ; def v[0:1]
1599 ; GFX900-NEXT:    ;;#ASMEND
1600 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1601 ; GFX900-NEXT:    ;;#ASMSTART
1602 ; GFX900-NEXT:    ; def v[2:3]
1603 ; GFX900-NEXT:    ;;#ASMEND
1604 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1605 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1606 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1607 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1609 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_1_2:
1610 ; GFX90A:       ; %bb.0:
1611 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1612 ; GFX90A-NEXT:    ;;#ASMSTART
1613 ; GFX90A-NEXT:    ; def v[0:1]
1614 ; GFX90A-NEXT:    ;;#ASMEND
1615 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1616 ; GFX90A-NEXT:    ;;#ASMSTART
1617 ; GFX90A-NEXT:    ; def v[2:3]
1618 ; GFX90A-NEXT:    ;;#ASMEND
1619 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1620 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1621 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1622 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1624 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_1_2:
1625 ; GFX940:       ; %bb.0:
1626 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1627 ; GFX940-NEXT:    ;;#ASMSTART
1628 ; GFX940-NEXT:    ; def v[0:1]
1629 ; GFX940-NEXT:    ;;#ASMEND
1630 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1631 ; GFX940-NEXT:    ;;#ASMSTART
1632 ; GFX940-NEXT:    ; def v[2:3]
1633 ; GFX940-NEXT:    ;;#ASMEND
1634 ; GFX940-NEXT:    s_nop 0
1635 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1636 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1637 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1638 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1639   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1640   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1641   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 2>
1642   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1643   ret void
1646 define void @v_shuffle_v3p3_v2p3__u_3_3(ptr addrspace(1) inreg %ptr) {
1647 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__u_3_3:
1648 ; GFX900:       ; %bb.0:
1649 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1650 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1651 ; GFX900-NEXT:    ;;#ASMSTART
1652 ; GFX900-NEXT:    ; def v[0:1]
1653 ; GFX900-NEXT:    ;;#ASMEND
1654 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1655 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1656 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1657 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1659 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__u_3_3:
1660 ; GFX90A:       ; %bb.0:
1661 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1662 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1663 ; GFX90A-NEXT:    ;;#ASMSTART
1664 ; GFX90A-NEXT:    ; def v[0:1]
1665 ; GFX90A-NEXT:    ;;#ASMEND
1666 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1667 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1668 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1669 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1671 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__u_3_3:
1672 ; GFX940:       ; %bb.0:
1673 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1674 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1675 ; GFX940-NEXT:    ;;#ASMSTART
1676 ; GFX940-NEXT:    ; def v[0:1]
1677 ; GFX940-NEXT:    ;;#ASMEND
1678 ; GFX940-NEXT:    s_nop 0
1679 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1680 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
1681 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1682 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1683   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1684   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1685   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>
1686   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1687   ret void
1690 define void @v_shuffle_v3p3_v2p3__0_3_3(ptr addrspace(1) inreg %ptr) {
1691 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__0_3_3:
1692 ; GFX900:       ; %bb.0:
1693 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1694 ; GFX900-NEXT:    ;;#ASMSTART
1695 ; GFX900-NEXT:    ; def v[0:1]
1696 ; GFX900-NEXT:    ;;#ASMEND
1697 ; GFX900-NEXT:    ;;#ASMSTART
1698 ; GFX900-NEXT:    ; def v[1:2]
1699 ; GFX900-NEXT:    ;;#ASMEND
1700 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1701 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1702 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1703 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1704 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1706 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__0_3_3:
1707 ; GFX90A:       ; %bb.0:
1708 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1709 ; GFX90A-NEXT:    ;;#ASMSTART
1710 ; GFX90A-NEXT:    ; def v[0:1]
1711 ; GFX90A-NEXT:    ;;#ASMEND
1712 ; GFX90A-NEXT:    ;;#ASMSTART
1713 ; GFX90A-NEXT:    ; def v[2:3]
1714 ; GFX90A-NEXT:    ;;#ASMEND
1715 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1716 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
1717 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
1718 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1719 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1720 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1722 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__0_3_3:
1723 ; GFX940:       ; %bb.0:
1724 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1725 ; GFX940-NEXT:    ;;#ASMSTART
1726 ; GFX940-NEXT:    ; def v[0:1]
1727 ; GFX940-NEXT:    ;;#ASMEND
1728 ; GFX940-NEXT:    ;;#ASMSTART
1729 ; GFX940-NEXT:    ; def v[2:3]
1730 ; GFX940-NEXT:    ;;#ASMEND
1731 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1732 ; GFX940-NEXT:    v_mov_b32_e32 v1, v3
1733 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
1734 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1735 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1736 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1737   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1738   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1739   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 3, i32 3>
1740   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1741   ret void
1744 define void @v_shuffle_v3p3_v2p3__1_3_3(ptr addrspace(1) inreg %ptr) {
1745 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__1_3_3:
1746 ; GFX900:       ; %bb.0:
1747 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1748 ; GFX900-NEXT:    ;;#ASMSTART
1749 ; GFX900-NEXT:    ; def v[1:2]
1750 ; GFX900-NEXT:    ;;#ASMEND
1751 ; GFX900-NEXT:    ;;#ASMSTART
1752 ; GFX900-NEXT:    ; def v[0:1]
1753 ; GFX900-NEXT:    ;;#ASMEND
1754 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1755 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1756 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1757 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1758 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1759 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1761 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__1_3_3:
1762 ; GFX90A:       ; %bb.0:
1763 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1764 ; GFX90A-NEXT:    ;;#ASMSTART
1765 ; GFX90A-NEXT:    ; def v[2:3]
1766 ; GFX90A-NEXT:    ;;#ASMEND
1767 ; GFX90A-NEXT:    ;;#ASMSTART
1768 ; GFX90A-NEXT:    ; def v[0:1]
1769 ; GFX90A-NEXT:    ;;#ASMEND
1770 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1771 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1772 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1773 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1774 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1775 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1777 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__1_3_3:
1778 ; GFX940:       ; %bb.0:
1779 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1780 ; GFX940-NEXT:    ;;#ASMSTART
1781 ; GFX940-NEXT:    ; def v[2:3]
1782 ; GFX940-NEXT:    ;;#ASMEND
1783 ; GFX940-NEXT:    ;;#ASMSTART
1784 ; GFX940-NEXT:    ; def v[0:1]
1785 ; GFX940-NEXT:    ;;#ASMEND
1786 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1787 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1788 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1789 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1790 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1791 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1792   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1793   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1794   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 3, i32 3>
1795   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1796   ret void
1799 define void @v_shuffle_v3p3_v2p3__2_3_3(ptr addrspace(1) inreg %ptr) {
1800 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__2_3_3:
1801 ; GFX900:       ; %bb.0:
1802 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1803 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1804 ; GFX900-NEXT:    ;;#ASMSTART
1805 ; GFX900-NEXT:    ; def v[0:1]
1806 ; GFX900-NEXT:    ;;#ASMEND
1807 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1808 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1809 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1810 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1812 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__2_3_3:
1813 ; GFX90A:       ; %bb.0:
1814 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1815 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1816 ; GFX90A-NEXT:    ;;#ASMSTART
1817 ; GFX90A-NEXT:    ; def v[0:1]
1818 ; GFX90A-NEXT:    ;;#ASMEND
1819 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1820 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1821 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1822 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1824 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__2_3_3:
1825 ; GFX940:       ; %bb.0:
1826 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1827 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1828 ; GFX940-NEXT:    ;;#ASMSTART
1829 ; GFX940-NEXT:    ; def v[0:1]
1830 ; GFX940-NEXT:    ;;#ASMEND
1831 ; GFX940-NEXT:    s_nop 0
1832 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1833 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
1834 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1835 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1836   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1837   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1838   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 3, i32 3>
1839   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1840   ret void
1843 define void @v_shuffle_v3p3_v2p3__3_u_3(ptr addrspace(1) inreg %ptr) {
1844 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_u_3:
1845 ; GFX900:       ; %bb.0:
1846 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1847 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1848 ; GFX900-NEXT:    ;;#ASMSTART
1849 ; GFX900-NEXT:    ; def v[1:2]
1850 ; GFX900-NEXT:    ;;#ASMEND
1851 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1852 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1853 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1854 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1856 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_u_3:
1857 ; GFX90A:       ; %bb.0:
1858 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1859 ; GFX90A-NEXT:    ;;#ASMSTART
1860 ; GFX90A-NEXT:    ; def v[0:1]
1861 ; GFX90A-NEXT:    ;;#ASMEND
1862 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1863 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1864 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
1865 ; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1866 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1867 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1869 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_u_3:
1870 ; GFX940:       ; %bb.0:
1871 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1872 ; GFX940-NEXT:    ;;#ASMSTART
1873 ; GFX940-NEXT:    ; def v[0:1]
1874 ; GFX940-NEXT:    ;;#ASMEND
1875 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1876 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1877 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
1878 ; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
1879 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1880 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1881   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1882   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1883   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>
1884   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1885   ret void
1888 define void @v_shuffle_v3p3_v2p3__3_0_3(ptr addrspace(1) inreg %ptr) {
1889 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_0_3:
1890 ; GFX900:       ; %bb.0:
1891 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1892 ; GFX900-NEXT:    ;;#ASMSTART
1893 ; GFX900-NEXT:    ; def v[1:2]
1894 ; GFX900-NEXT:    ;;#ASMEND
1895 ; GFX900-NEXT:    ;;#ASMSTART
1896 ; GFX900-NEXT:    ; def v[2:3]
1897 ; GFX900-NEXT:    ;;#ASMEND
1898 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1899 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1900 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
1901 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1902 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1903 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1905 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_0_3:
1906 ; GFX90A:       ; %bb.0:
1907 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1908 ; GFX90A-NEXT:    ;;#ASMSTART
1909 ; GFX90A-NEXT:    ; def v[2:3]
1910 ; GFX90A-NEXT:    ;;#ASMEND
1911 ; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
1912 ; GFX90A-NEXT:    ;;#ASMSTART
1913 ; GFX90A-NEXT:    ; def v[4:5]
1914 ; GFX90A-NEXT:    ;;#ASMEND
1915 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
1916 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1917 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
1918 ; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
1919 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1920 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1922 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_0_3:
1923 ; GFX940:       ; %bb.0:
1924 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1925 ; GFX940-NEXT:    ;;#ASMSTART
1926 ; GFX940-NEXT:    ; def v[2:3]
1927 ; GFX940-NEXT:    ;;#ASMEND
1928 ; GFX940-NEXT:    v_mov_b32_e32 v6, 0
1929 ; GFX940-NEXT:    ;;#ASMSTART
1930 ; GFX940-NEXT:    ; def v[4:5]
1931 ; GFX940-NEXT:    ;;#ASMEND
1932 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1933 ; GFX940-NEXT:    v_mov_b32_e32 v0, v5
1934 ; GFX940-NEXT:    v_mov_b32_e32 v2, v5
1935 ; GFX940-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
1936 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1937 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1938   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1939   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1940   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 3>
1941   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1942   ret void
1945 define void @v_shuffle_v3p3_v2p3__3_1_3(ptr addrspace(1) inreg %ptr) {
1946 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_1_3:
1947 ; GFX900:       ; %bb.0:
1948 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1949 ; GFX900-NEXT:    ;;#ASMSTART
1950 ; GFX900-NEXT:    ; def v[0:1]
1951 ; GFX900-NEXT:    ;;#ASMEND
1952 ; GFX900-NEXT:    ;;#ASMSTART
1953 ; GFX900-NEXT:    ; def v[2:3]
1954 ; GFX900-NEXT:    ;;#ASMEND
1955 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1956 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1957 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
1958 ; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1959 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1960 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1962 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_1_3:
1963 ; GFX90A:       ; %bb.0:
1964 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1965 ; GFX90A-NEXT:    ;;#ASMSTART
1966 ; GFX90A-NEXT:    ; def v[0:1]
1967 ; GFX90A-NEXT:    ;;#ASMEND
1968 ; GFX90A-NEXT:    ;;#ASMSTART
1969 ; GFX90A-NEXT:    ; def v[2:3]
1970 ; GFX90A-NEXT:    ;;#ASMEND
1971 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1972 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1973 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
1974 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1975 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1976 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1978 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_1_3:
1979 ; GFX940:       ; %bb.0:
1980 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1981 ; GFX940-NEXT:    ;;#ASMSTART
1982 ; GFX940-NEXT:    ; def v[0:1]
1983 ; GFX940-NEXT:    ;;#ASMEND
1984 ; GFX940-NEXT:    ;;#ASMSTART
1985 ; GFX940-NEXT:    ; def v[2:3]
1986 ; GFX940-NEXT:    ;;#ASMEND
1987 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1988 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1989 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
1990 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1991 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1992 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1993   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1994   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
1995   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 3>
1996   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1997   ret void
2000 define void @v_shuffle_v3p3_v2p3__3_2_3(ptr addrspace(1) inreg %ptr) {
2001 ; GFX900-LABEL: v_shuffle_v3p3_v2p3__3_2_3:
2002 ; GFX900:       ; %bb.0:
2003 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2004 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
2005 ; GFX900-NEXT:    ;;#ASMSTART
2006 ; GFX900-NEXT:    ; def v[1:2]
2007 ; GFX900-NEXT:    ;;#ASMEND
2008 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2009 ; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
2010 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2011 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2013 ; GFX90A-LABEL: v_shuffle_v3p3_v2p3__3_2_3:
2014 ; GFX90A:       ; %bb.0:
2015 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2016 ; GFX90A-NEXT:    ;;#ASMSTART
2017 ; GFX90A-NEXT:    ; def v[2:3]
2018 ; GFX90A-NEXT:    ;;#ASMEND
2019 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2020 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2021 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2022 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
2023 ; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
2024 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2025 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2027 ; GFX940-LABEL: v_shuffle_v3p3_v2p3__3_2_3:
2028 ; GFX940:       ; %bb.0:
2029 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2030 ; GFX940-NEXT:    ;;#ASMSTART
2031 ; GFX940-NEXT:    ; def v[2:3]
2032 ; GFX940-NEXT:    ;;#ASMEND
2033 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2034 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2035 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2036 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
2037 ; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2038 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2039 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2040   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
2041   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()
2042   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 3>
2043   store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2044   ret void
2047 define void @s_shuffle_v3p3_v2p3__u_u_u() {
2048 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__u_u_u:
2049 ; GFX9:       ; %bb.0:
2050 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2051 ; GFX9-NEXT:    ;;#ASMSTART
2052 ; GFX9-NEXT:    ; use s[8:10]
2053 ; GFX9-NEXT:    ;;#ASMEND
2054 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2055   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2056   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> poison
2057   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2058   ret void
2061 define void @s_shuffle_v3p3_v2p3__0_u_u() {
2062 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__0_u_u:
2063 ; GFX900:       ; %bb.0:
2064 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2065 ; GFX900-NEXT:    ;;#ASMSTART
2066 ; GFX900-NEXT:    ; def s[8:9]
2067 ; GFX900-NEXT:    ;;#ASMEND
2068 ; GFX900-NEXT:    ;;#ASMSTART
2069 ; GFX900-NEXT:    ; use s[8:10]
2070 ; GFX900-NEXT:    ;;#ASMEND
2071 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2073 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__0_u_u:
2074 ; GFX90A:       ; %bb.0:
2075 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2076 ; GFX90A-NEXT:    ;;#ASMSTART
2077 ; GFX90A-NEXT:    ; def s[8:9]
2078 ; GFX90A-NEXT:    ;;#ASMEND
2079 ; GFX90A-NEXT:    ;;#ASMSTART
2080 ; GFX90A-NEXT:    ; use s[8:10]
2081 ; GFX90A-NEXT:    ;;#ASMEND
2082 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2084 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__0_u_u:
2085 ; GFX940:       ; %bb.0:
2086 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2087 ; GFX940-NEXT:    ;;#ASMSTART
2088 ; GFX940-NEXT:    ; def s[8:9]
2089 ; GFX940-NEXT:    ;;#ASMEND
2090 ; GFX940-NEXT:    s_nop 0
2091 ; GFX940-NEXT:    ;;#ASMSTART
2092 ; GFX940-NEXT:    ; use s[8:10]
2093 ; GFX940-NEXT:    ;;#ASMEND
2094 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2095   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2096   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 poison, i32 poison>
2097   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2098   ret void
2101 define void @s_shuffle_v3p3_v2p3__1_u_u() {
2102 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__1_u_u:
2103 ; GFX900:       ; %bb.0:
2104 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2105 ; GFX900-NEXT:    ;;#ASMSTART
2106 ; GFX900-NEXT:    ; def s[4:5]
2107 ; GFX900-NEXT:    ;;#ASMEND
2108 ; GFX900-NEXT:    s_mov_b32 s8, s5
2109 ; GFX900-NEXT:    ;;#ASMSTART
2110 ; GFX900-NEXT:    ; use s[8:10]
2111 ; GFX900-NEXT:    ;;#ASMEND
2112 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2114 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__1_u_u:
2115 ; GFX90A:       ; %bb.0:
2116 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2117 ; GFX90A-NEXT:    ;;#ASMSTART
2118 ; GFX90A-NEXT:    ; def s[4:5]
2119 ; GFX90A-NEXT:    ;;#ASMEND
2120 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2121 ; GFX90A-NEXT:    ;;#ASMSTART
2122 ; GFX90A-NEXT:    ; use s[8:10]
2123 ; GFX90A-NEXT:    ;;#ASMEND
2124 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2126 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__1_u_u:
2127 ; GFX940:       ; %bb.0:
2128 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2129 ; GFX940-NEXT:    ;;#ASMSTART
2130 ; GFX940-NEXT:    ; def s[0:1]
2131 ; GFX940-NEXT:    ;;#ASMEND
2132 ; GFX940-NEXT:    s_mov_b32 s8, s1
2133 ; GFX940-NEXT:    ;;#ASMSTART
2134 ; GFX940-NEXT:    ; use s[8:10]
2135 ; GFX940-NEXT:    ;;#ASMEND
2136 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2137   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2138   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
2139   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2140   ret void
2143 define void @s_shuffle_v3p3_v2p3__2_u_u() {
2144 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__2_u_u:
2145 ; GFX9:       ; %bb.0:
2146 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2147 ; GFX9-NEXT:    ;;#ASMSTART
2148 ; GFX9-NEXT:    ; use s[8:10]
2149 ; GFX9-NEXT:    ;;#ASMEND
2150 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2151   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2152   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
2153   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2154   ret void
2157 define void @s_shuffle_v3p3_v2p3__3_u_u() {
2158 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_u_u:
2159 ; GFX900:       ; %bb.0:
2160 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2161 ; GFX900-NEXT:    ;;#ASMSTART
2162 ; GFX900-NEXT:    ; def s[4:5]
2163 ; GFX900-NEXT:    ;;#ASMEND
2164 ; GFX900-NEXT:    s_mov_b32 s8, s5
2165 ; GFX900-NEXT:    ;;#ASMSTART
2166 ; GFX900-NEXT:    ; use s[8:10]
2167 ; GFX900-NEXT:    ;;#ASMEND
2168 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2170 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_u_u:
2171 ; GFX90A:       ; %bb.0:
2172 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2173 ; GFX90A-NEXT:    ;;#ASMSTART
2174 ; GFX90A-NEXT:    ; def s[4:5]
2175 ; GFX90A-NEXT:    ;;#ASMEND
2176 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2177 ; GFX90A-NEXT:    ;;#ASMSTART
2178 ; GFX90A-NEXT:    ; use s[8:10]
2179 ; GFX90A-NEXT:    ;;#ASMEND
2180 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2182 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_u_u:
2183 ; GFX940:       ; %bb.0:
2184 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2185 ; GFX940-NEXT:    ;;#ASMSTART
2186 ; GFX940-NEXT:    ; def s[0:1]
2187 ; GFX940-NEXT:    ;;#ASMEND
2188 ; GFX940-NEXT:    s_mov_b32 s8, s1
2189 ; GFX940-NEXT:    ;;#ASMSTART
2190 ; GFX940-NEXT:    ; use s[8:10]
2191 ; GFX940-NEXT:    ;;#ASMEND
2192 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2193   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2194   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2195   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>
2196   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2197   ret void
2200 define void @s_shuffle_v3p3_v2p3__3_0_u() {
2201 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_0_u:
2202 ; GFX900:       ; %bb.0:
2203 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2204 ; GFX900-NEXT:    ;;#ASMSTART
2205 ; GFX900-NEXT:    ; def s[4:5]
2206 ; GFX900-NEXT:    ;;#ASMEND
2207 ; GFX900-NEXT:    ;;#ASMSTART
2208 ; GFX900-NEXT:    ; def s[6:7]
2209 ; GFX900-NEXT:    ;;#ASMEND
2210 ; GFX900-NEXT:    s_mov_b32 s8, s7
2211 ; GFX900-NEXT:    s_mov_b32 s9, s4
2212 ; GFX900-NEXT:    ;;#ASMSTART
2213 ; GFX900-NEXT:    ; use s[8:10]
2214 ; GFX900-NEXT:    ;;#ASMEND
2215 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2217 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_0_u:
2218 ; GFX90A:       ; %bb.0:
2219 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2220 ; GFX90A-NEXT:    ;;#ASMSTART
2221 ; GFX90A-NEXT:    ; def s[4:5]
2222 ; GFX90A-NEXT:    ;;#ASMEND
2223 ; GFX90A-NEXT:    ;;#ASMSTART
2224 ; GFX90A-NEXT:    ; def s[6:7]
2225 ; GFX90A-NEXT:    ;;#ASMEND
2226 ; GFX90A-NEXT:    s_mov_b32 s8, s7
2227 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2228 ; GFX90A-NEXT:    ;;#ASMSTART
2229 ; GFX90A-NEXT:    ; use s[8:10]
2230 ; GFX90A-NEXT:    ;;#ASMEND
2231 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2233 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_0_u:
2234 ; GFX940:       ; %bb.0:
2235 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2236 ; GFX940-NEXT:    ;;#ASMSTART
2237 ; GFX940-NEXT:    ; def s[0:1]
2238 ; GFX940-NEXT:    ;;#ASMEND
2239 ; GFX940-NEXT:    ;;#ASMSTART
2240 ; GFX940-NEXT:    ; def s[2:3]
2241 ; GFX940-NEXT:    ;;#ASMEND
2242 ; GFX940-NEXT:    s_mov_b32 s8, s3
2243 ; GFX940-NEXT:    s_mov_b32 s9, s0
2244 ; GFX940-NEXT:    ;;#ASMSTART
2245 ; GFX940-NEXT:    ; use s[8:10]
2246 ; GFX940-NEXT:    ;;#ASMEND
2247 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2248   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2249   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2250   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>
2251   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2252   ret void
2255 define void @s_shuffle_v3p3_v2p3__3_1_u() {
2256 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_1_u:
2257 ; GFX900:       ; %bb.0:
2258 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2259 ; GFX900-NEXT:    ;;#ASMSTART
2260 ; GFX900-NEXT:    ; def s[8:9]
2261 ; GFX900-NEXT:    ;;#ASMEND
2262 ; GFX900-NEXT:    ;;#ASMSTART
2263 ; GFX900-NEXT:    ; def s[4:5]
2264 ; GFX900-NEXT:    ;;#ASMEND
2265 ; GFX900-NEXT:    s_mov_b32 s8, s5
2266 ; GFX900-NEXT:    ;;#ASMSTART
2267 ; GFX900-NEXT:    ; use s[8:10]
2268 ; GFX900-NEXT:    ;;#ASMEND
2269 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2271 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_1_u:
2272 ; GFX90A:       ; %bb.0:
2273 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2274 ; GFX90A-NEXT:    ;;#ASMSTART
2275 ; GFX90A-NEXT:    ; def s[8:9]
2276 ; GFX90A-NEXT:    ;;#ASMEND
2277 ; GFX90A-NEXT:    ;;#ASMSTART
2278 ; GFX90A-NEXT:    ; def s[4:5]
2279 ; GFX90A-NEXT:    ;;#ASMEND
2280 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2281 ; GFX90A-NEXT:    ;;#ASMSTART
2282 ; GFX90A-NEXT:    ; use s[8:10]
2283 ; GFX90A-NEXT:    ;;#ASMEND
2284 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2286 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_1_u:
2287 ; GFX940:       ; %bb.0:
2288 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2289 ; GFX940-NEXT:    ;;#ASMSTART
2290 ; GFX940-NEXT:    ; def s[8:9]
2291 ; GFX940-NEXT:    ;;#ASMEND
2292 ; GFX940-NEXT:    ;;#ASMSTART
2293 ; GFX940-NEXT:    ; def s[0:1]
2294 ; GFX940-NEXT:    ;;#ASMEND
2295 ; GFX940-NEXT:    s_mov_b32 s8, s1
2296 ; GFX940-NEXT:    ;;#ASMSTART
2297 ; GFX940-NEXT:    ; use s[8:10]
2298 ; GFX940-NEXT:    ;;#ASMEND
2299 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2300   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2301   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2302   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>
2303   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2304   ret void
2307 define void @s_shuffle_v3p3_v2p3__3_2_u() {
2308 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_2_u:
2309 ; GFX900:       ; %bb.0:
2310 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2311 ; GFX900-NEXT:    ;;#ASMSTART
2312 ; GFX900-NEXT:    ; def s[4:5]
2313 ; GFX900-NEXT:    ;;#ASMEND
2314 ; GFX900-NEXT:    s_mov_b32 s8, s5
2315 ; GFX900-NEXT:    s_mov_b32 s9, s4
2316 ; GFX900-NEXT:    ;;#ASMSTART
2317 ; GFX900-NEXT:    ; use s[8:10]
2318 ; GFX900-NEXT:    ;;#ASMEND
2319 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2321 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_2_u:
2322 ; GFX90A:       ; %bb.0:
2323 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2324 ; GFX90A-NEXT:    ;;#ASMSTART
2325 ; GFX90A-NEXT:    ; def s[4:5]
2326 ; GFX90A-NEXT:    ;;#ASMEND
2327 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2328 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2329 ; GFX90A-NEXT:    ;;#ASMSTART
2330 ; GFX90A-NEXT:    ; use s[8:10]
2331 ; GFX90A-NEXT:    ;;#ASMEND
2332 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2334 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_2_u:
2335 ; GFX940:       ; %bb.0:
2336 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2337 ; GFX940-NEXT:    ;;#ASMSTART
2338 ; GFX940-NEXT:    ; def s[0:1]
2339 ; GFX940-NEXT:    ;;#ASMEND
2340 ; GFX940-NEXT:    s_mov_b32 s8, s1
2341 ; GFX940-NEXT:    s_mov_b32 s9, s0
2342 ; GFX940-NEXT:    ;;#ASMSTART
2343 ; GFX940-NEXT:    ; use s[8:10]
2344 ; GFX940-NEXT:    ;;#ASMEND
2345 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2346   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2347   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2348   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>
2349   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2350   ret void
2353 define void @s_shuffle_v3p3_v2p3__3_3_u() {
2354 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__3_3_u:
2355 ; GFX9:       ; %bb.0:
2356 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2357 ; GFX9-NEXT:    ;;#ASMSTART
2358 ; GFX9-NEXT:    ; def s[8:9]
2359 ; GFX9-NEXT:    ;;#ASMEND
2360 ; GFX9-NEXT:    s_mov_b32 s8, s9
2361 ; GFX9-NEXT:    ;;#ASMSTART
2362 ; GFX9-NEXT:    ; use s[8:10]
2363 ; GFX9-NEXT:    ;;#ASMEND
2364 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2365   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2366   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2367   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>
2368   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2369   ret void
2372 define void @s_shuffle_v3p3_v2p3__3_3_0() {
2373 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_3_0:
2374 ; GFX900:       ; %bb.0:
2375 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2376 ; GFX900-NEXT:    ;;#ASMSTART
2377 ; GFX900-NEXT:    ; def s[8:9]
2378 ; GFX900-NEXT:    ;;#ASMEND
2379 ; GFX900-NEXT:    ;;#ASMSTART
2380 ; GFX900-NEXT:    ; def s[4:5]
2381 ; GFX900-NEXT:    ;;#ASMEND
2382 ; GFX900-NEXT:    s_mov_b32 s8, s9
2383 ; GFX900-NEXT:    s_mov_b32 s10, s4
2384 ; GFX900-NEXT:    ;;#ASMSTART
2385 ; GFX900-NEXT:    ; use s[8:10]
2386 ; GFX900-NEXT:    ;;#ASMEND
2387 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2389 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_3_0:
2390 ; GFX90A:       ; %bb.0:
2391 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2392 ; GFX90A-NEXT:    ;;#ASMSTART
2393 ; GFX90A-NEXT:    ; def s[8:9]
2394 ; GFX90A-NEXT:    ;;#ASMEND
2395 ; GFX90A-NEXT:    ;;#ASMSTART
2396 ; GFX90A-NEXT:    ; def s[4:5]
2397 ; GFX90A-NEXT:    ;;#ASMEND
2398 ; GFX90A-NEXT:    s_mov_b32 s8, s9
2399 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2400 ; GFX90A-NEXT:    ;;#ASMSTART
2401 ; GFX90A-NEXT:    ; use s[8:10]
2402 ; GFX90A-NEXT:    ;;#ASMEND
2403 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2405 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_3_0:
2406 ; GFX940:       ; %bb.0:
2407 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2408 ; GFX940-NEXT:    ;;#ASMSTART
2409 ; GFX940-NEXT:    ; def s[8:9]
2410 ; GFX940-NEXT:    ;;#ASMEND
2411 ; GFX940-NEXT:    ;;#ASMSTART
2412 ; GFX940-NEXT:    ; def s[0:1]
2413 ; GFX940-NEXT:    ;;#ASMEND
2414 ; GFX940-NEXT:    s_mov_b32 s8, s9
2415 ; GFX940-NEXT:    s_mov_b32 s10, s0
2416 ; GFX940-NEXT:    ;;#ASMSTART
2417 ; GFX940-NEXT:    ; use s[8:10]
2418 ; GFX940-NEXT:    ;;#ASMEND
2419 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2420   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2421   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2422   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 0>
2423   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2424   ret void
2427 define void @s_shuffle_v3p3_v2p3__3_3_1() {
2428 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_3_1:
2429 ; GFX900:       ; %bb.0:
2430 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2431 ; GFX900-NEXT:    ;;#ASMSTART
2432 ; GFX900-NEXT:    ; def s[8:9]
2433 ; GFX900-NEXT:    ;;#ASMEND
2434 ; GFX900-NEXT:    ;;#ASMSTART
2435 ; GFX900-NEXT:    ; def s[4:5]
2436 ; GFX900-NEXT:    ;;#ASMEND
2437 ; GFX900-NEXT:    s_mov_b32 s8, s9
2438 ; GFX900-NEXT:    s_mov_b32 s10, s5
2439 ; GFX900-NEXT:    ;;#ASMSTART
2440 ; GFX900-NEXT:    ; use s[8:10]
2441 ; GFX900-NEXT:    ;;#ASMEND
2442 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2444 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_3_1:
2445 ; GFX90A:       ; %bb.0:
2446 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2447 ; GFX90A-NEXT:    ;;#ASMSTART
2448 ; GFX90A-NEXT:    ; def s[8:9]
2449 ; GFX90A-NEXT:    ;;#ASMEND
2450 ; GFX90A-NEXT:    ;;#ASMSTART
2451 ; GFX90A-NEXT:    ; def s[4:5]
2452 ; GFX90A-NEXT:    ;;#ASMEND
2453 ; GFX90A-NEXT:    s_mov_b32 s8, s9
2454 ; GFX90A-NEXT:    s_mov_b32 s10, s5
2455 ; GFX90A-NEXT:    ;;#ASMSTART
2456 ; GFX90A-NEXT:    ; use s[8:10]
2457 ; GFX90A-NEXT:    ;;#ASMEND
2458 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2460 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_3_1:
2461 ; GFX940:       ; %bb.0:
2462 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2463 ; GFX940-NEXT:    ;;#ASMSTART
2464 ; GFX940-NEXT:    ; def s[8:9]
2465 ; GFX940-NEXT:    ;;#ASMEND
2466 ; GFX940-NEXT:    ;;#ASMSTART
2467 ; GFX940-NEXT:    ; def s[0:1]
2468 ; GFX940-NEXT:    ;;#ASMEND
2469 ; GFX940-NEXT:    s_mov_b32 s8, s9
2470 ; GFX940-NEXT:    s_mov_b32 s10, s1
2471 ; GFX940-NEXT:    ;;#ASMSTART
2472 ; GFX940-NEXT:    ; use s[8:10]
2473 ; GFX940-NEXT:    ;;#ASMEND
2474 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2475   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2476   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2477   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 1>
2478   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2479   ret void
2482 define void @s_shuffle_v3p3_v2p3__3_3_2() {
2483 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_3_2:
2484 ; GFX900:       ; %bb.0:
2485 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2486 ; GFX900-NEXT:    ;;#ASMSTART
2487 ; GFX900-NEXT:    ; def s[4:5]
2488 ; GFX900-NEXT:    ;;#ASMEND
2489 ; GFX900-NEXT:    s_mov_b32 s8, s5
2490 ; GFX900-NEXT:    s_mov_b32 s9, s5
2491 ; GFX900-NEXT:    s_mov_b32 s10, s4
2492 ; GFX900-NEXT:    ;;#ASMSTART
2493 ; GFX900-NEXT:    ; use s[8:10]
2494 ; GFX900-NEXT:    ;;#ASMEND
2495 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2497 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_3_2:
2498 ; GFX90A:       ; %bb.0:
2499 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2500 ; GFX90A-NEXT:    ;;#ASMSTART
2501 ; GFX90A-NEXT:    ; def s[4:5]
2502 ; GFX90A-NEXT:    ;;#ASMEND
2503 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2504 ; GFX90A-NEXT:    s_mov_b32 s9, s5
2505 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2506 ; GFX90A-NEXT:    ;;#ASMSTART
2507 ; GFX90A-NEXT:    ; use s[8:10]
2508 ; GFX90A-NEXT:    ;;#ASMEND
2509 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2511 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_3_2:
2512 ; GFX940:       ; %bb.0:
2513 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2514 ; GFX940-NEXT:    ;;#ASMSTART
2515 ; GFX940-NEXT:    ; def s[0:1]
2516 ; GFX940-NEXT:    ;;#ASMEND
2517 ; GFX940-NEXT:    s_mov_b32 s8, s1
2518 ; GFX940-NEXT:    s_mov_b32 s9, s1
2519 ; GFX940-NEXT:    s_mov_b32 s10, s0
2520 ; GFX940-NEXT:    ;;#ASMSTART
2521 ; GFX940-NEXT:    ; use s[8:10]
2522 ; GFX940-NEXT:    ;;#ASMEND
2523 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2524   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2525   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2526   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 2>
2527   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2528   ret void
2531 define void @s_shuffle_v3p3_v2p3__3_3_3() {
2532 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__3_3_3:
2533 ; GFX9:       ; %bb.0:
2534 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2535 ; GFX9-NEXT:    ;;#ASMSTART
2536 ; GFX9-NEXT:    ; def s[8:9]
2537 ; GFX9-NEXT:    ;;#ASMEND
2538 ; GFX9-NEXT:    s_mov_b32 s8, s9
2539 ; GFX9-NEXT:    s_mov_b32 s10, s9
2540 ; GFX9-NEXT:    ;;#ASMSTART
2541 ; GFX9-NEXT:    ; use s[8:10]
2542 ; GFX9-NEXT:    ;;#ASMEND
2543 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2544   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2545   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2546   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 3, i32 3>
2547   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2548   ret void
2551 define void @s_shuffle_v3p3_v2p3__u_0_0() {
2552 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__u_0_0:
2553 ; GFX900:       ; %bb.0:
2554 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2555 ; GFX900-NEXT:    ;;#ASMSTART
2556 ; GFX900-NEXT:    ; def s[4:5]
2557 ; GFX900-NEXT:    ;;#ASMEND
2558 ; GFX900-NEXT:    s_mov_b32 s9, s4
2559 ; GFX900-NEXT:    s_mov_b32 s10, s4
2560 ; GFX900-NEXT:    ;;#ASMSTART
2561 ; GFX900-NEXT:    ; use s[8:10]
2562 ; GFX900-NEXT:    ;;#ASMEND
2563 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2565 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__u_0_0:
2566 ; GFX90A:       ; %bb.0:
2567 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2568 ; GFX90A-NEXT:    ;;#ASMSTART
2569 ; GFX90A-NEXT:    ; def s[4:5]
2570 ; GFX90A-NEXT:    ;;#ASMEND
2571 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2572 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2573 ; GFX90A-NEXT:    ;;#ASMSTART
2574 ; GFX90A-NEXT:    ; use s[8:10]
2575 ; GFX90A-NEXT:    ;;#ASMEND
2576 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2578 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__u_0_0:
2579 ; GFX940:       ; %bb.0:
2580 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2581 ; GFX940-NEXT:    ;;#ASMSTART
2582 ; GFX940-NEXT:    ; def s[0:1]
2583 ; GFX940-NEXT:    ;;#ASMEND
2584 ; GFX940-NEXT:    s_mov_b32 s9, s0
2585 ; GFX940-NEXT:    s_mov_b32 s10, s0
2586 ; GFX940-NEXT:    ;;#ASMSTART
2587 ; GFX940-NEXT:    ; use s[8:10]
2588 ; GFX940-NEXT:    ;;#ASMEND
2589 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2590   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2591   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 0, i32 0>
2592   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2593   ret void
2596 define void @s_shuffle_v3p3_v2p3__0_0_0() {
2597 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__0_0_0:
2598 ; GFX9:       ; %bb.0:
2599 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2600 ; GFX9-NEXT:    ;;#ASMSTART
2601 ; GFX9-NEXT:    ; def s[8:9]
2602 ; GFX9-NEXT:    ;;#ASMEND
2603 ; GFX9-NEXT:    s_mov_b32 s9, s8
2604 ; GFX9-NEXT:    s_mov_b32 s10, s8
2605 ; GFX9-NEXT:    ;;#ASMSTART
2606 ; GFX9-NEXT:    ; use s[8:10]
2607 ; GFX9-NEXT:    ;;#ASMEND
2608 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2609   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2610   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> zeroinitializer
2611   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2612   ret void
2615 define void @s_shuffle_v3p3_v2p3__1_0_0() {
2616 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__1_0_0:
2617 ; GFX900:       ; %bb.0:
2618 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2619 ; GFX900-NEXT:    ;;#ASMSTART
2620 ; GFX900-NEXT:    ; def s[4:5]
2621 ; GFX900-NEXT:    ;;#ASMEND
2622 ; GFX900-NEXT:    s_mov_b32 s8, s5
2623 ; GFX900-NEXT:    s_mov_b32 s9, s4
2624 ; GFX900-NEXT:    s_mov_b32 s10, s4
2625 ; GFX900-NEXT:    ;;#ASMSTART
2626 ; GFX900-NEXT:    ; use s[8:10]
2627 ; GFX900-NEXT:    ;;#ASMEND
2628 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2630 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__1_0_0:
2631 ; GFX90A:       ; %bb.0:
2632 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2633 ; GFX90A-NEXT:    ;;#ASMSTART
2634 ; GFX90A-NEXT:    ; def s[4:5]
2635 ; GFX90A-NEXT:    ;;#ASMEND
2636 ; GFX90A-NEXT:    s_mov_b32 s8, s5
2637 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2638 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2639 ; GFX90A-NEXT:    ;;#ASMSTART
2640 ; GFX90A-NEXT:    ; use s[8:10]
2641 ; GFX90A-NEXT:    ;;#ASMEND
2642 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2644 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__1_0_0:
2645 ; GFX940:       ; %bb.0:
2646 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2647 ; GFX940-NEXT:    ;;#ASMSTART
2648 ; GFX940-NEXT:    ; def s[0:1]
2649 ; GFX940-NEXT:    ;;#ASMEND
2650 ; GFX940-NEXT:    s_mov_b32 s8, s1
2651 ; GFX940-NEXT:    s_mov_b32 s9, s0
2652 ; GFX940-NEXT:    s_mov_b32 s10, s0
2653 ; GFX940-NEXT:    ;;#ASMSTART
2654 ; GFX940-NEXT:    ; use s[8:10]
2655 ; GFX940-NEXT:    ;;#ASMEND
2656 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2657   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2658   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 0, i32 0>
2659   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2660   ret void
2663 define void @s_shuffle_v3p3_v2p3__2_0_0() {
2664 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__2_0_0:
2665 ; GFX900:       ; %bb.0:
2666 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2667 ; GFX900-NEXT:    ;;#ASMSTART
2668 ; GFX900-NEXT:    ; def s[4:5]
2669 ; GFX900-NEXT:    ;;#ASMEND
2670 ; GFX900-NEXT:    s_mov_b32 s9, s4
2671 ; GFX900-NEXT:    s_mov_b32 s10, s4
2672 ; GFX900-NEXT:    ;;#ASMSTART
2673 ; GFX900-NEXT:    ; use s[8:10]
2674 ; GFX900-NEXT:    ;;#ASMEND
2675 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2677 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__2_0_0:
2678 ; GFX90A:       ; %bb.0:
2679 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2680 ; GFX90A-NEXT:    ;;#ASMSTART
2681 ; GFX90A-NEXT:    ; def s[4:5]
2682 ; GFX90A-NEXT:    ;;#ASMEND
2683 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2684 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2685 ; GFX90A-NEXT:    ;;#ASMSTART
2686 ; GFX90A-NEXT:    ; use s[8:10]
2687 ; GFX90A-NEXT:    ;;#ASMEND
2688 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2690 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__2_0_0:
2691 ; GFX940:       ; %bb.0:
2692 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2693 ; GFX940-NEXT:    ;;#ASMSTART
2694 ; GFX940-NEXT:    ; def s[0:1]
2695 ; GFX940-NEXT:    ;;#ASMEND
2696 ; GFX940-NEXT:    s_mov_b32 s9, s0
2697 ; GFX940-NEXT:    s_mov_b32 s10, s0
2698 ; GFX940-NEXT:    ;;#ASMSTART
2699 ; GFX940-NEXT:    ; use s[8:10]
2700 ; GFX940-NEXT:    ;;#ASMEND
2701 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2702   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2703   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 0, i32 0>
2704   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2705   ret void
2708 define void @s_shuffle_v3p3_v2p3__3_0_0() {
2709 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_0_0:
2710 ; GFX900:       ; %bb.0:
2711 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2712 ; GFX900-NEXT:    ;;#ASMSTART
2713 ; GFX900-NEXT:    ; def s[4:5]
2714 ; GFX900-NEXT:    ;;#ASMEND
2715 ; GFX900-NEXT:    ;;#ASMSTART
2716 ; GFX900-NEXT:    ; def s[6:7]
2717 ; GFX900-NEXT:    ;;#ASMEND
2718 ; GFX900-NEXT:    s_mov_b32 s8, s7
2719 ; GFX900-NEXT:    s_mov_b32 s9, s4
2720 ; GFX900-NEXT:    s_mov_b32 s10, s4
2721 ; GFX900-NEXT:    ;;#ASMSTART
2722 ; GFX900-NEXT:    ; use s[8:10]
2723 ; GFX900-NEXT:    ;;#ASMEND
2724 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2726 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_0_0:
2727 ; GFX90A:       ; %bb.0:
2728 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2729 ; GFX90A-NEXT:    ;;#ASMSTART
2730 ; GFX90A-NEXT:    ; def s[4:5]
2731 ; GFX90A-NEXT:    ;;#ASMEND
2732 ; GFX90A-NEXT:    ;;#ASMSTART
2733 ; GFX90A-NEXT:    ; def s[6:7]
2734 ; GFX90A-NEXT:    ;;#ASMEND
2735 ; GFX90A-NEXT:    s_mov_b32 s8, s7
2736 ; GFX90A-NEXT:    s_mov_b32 s9, s4
2737 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2738 ; GFX90A-NEXT:    ;;#ASMSTART
2739 ; GFX90A-NEXT:    ; use s[8:10]
2740 ; GFX90A-NEXT:    ;;#ASMEND
2741 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2743 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_0_0:
2744 ; GFX940:       ; %bb.0:
2745 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2746 ; GFX940-NEXT:    ;;#ASMSTART
2747 ; GFX940-NEXT:    ; def s[0:1]
2748 ; GFX940-NEXT:    ;;#ASMEND
2749 ; GFX940-NEXT:    ;;#ASMSTART
2750 ; GFX940-NEXT:    ; def s[2:3]
2751 ; GFX940-NEXT:    ;;#ASMEND
2752 ; GFX940-NEXT:    s_mov_b32 s8, s3
2753 ; GFX940-NEXT:    s_mov_b32 s9, s0
2754 ; GFX940-NEXT:    s_mov_b32 s10, s0
2755 ; GFX940-NEXT:    ;;#ASMSTART
2756 ; GFX940-NEXT:    ; use s[8:10]
2757 ; GFX940-NEXT:    ;;#ASMEND
2758 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2759   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2760   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2761   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 0>
2762   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2763   ret void
2766 define void @s_shuffle_v3p3_v2p3__3_u_0() {
2767 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_u_0:
2768 ; GFX900:       ; %bb.0:
2769 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2770 ; GFX900-NEXT:    ;;#ASMSTART
2771 ; GFX900-NEXT:    ; def s[4:5]
2772 ; GFX900-NEXT:    ;;#ASMEND
2773 ; GFX900-NEXT:    ;;#ASMSTART
2774 ; GFX900-NEXT:    ; def s[6:7]
2775 ; GFX900-NEXT:    ;;#ASMEND
2776 ; GFX900-NEXT:    s_mov_b32 s8, s7
2777 ; GFX900-NEXT:    s_mov_b32 s10, s4
2778 ; GFX900-NEXT:    ;;#ASMSTART
2779 ; GFX900-NEXT:    ; use s[8:10]
2780 ; GFX900-NEXT:    ;;#ASMEND
2781 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2783 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_u_0:
2784 ; GFX90A:       ; %bb.0:
2785 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2786 ; GFX90A-NEXT:    ;;#ASMSTART
2787 ; GFX90A-NEXT:    ; def s[4:5]
2788 ; GFX90A-NEXT:    ;;#ASMEND
2789 ; GFX90A-NEXT:    ;;#ASMSTART
2790 ; GFX90A-NEXT:    ; def s[6:7]
2791 ; GFX90A-NEXT:    ;;#ASMEND
2792 ; GFX90A-NEXT:    s_mov_b32 s8, s7
2793 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2794 ; GFX90A-NEXT:    ;;#ASMSTART
2795 ; GFX90A-NEXT:    ; use s[8:10]
2796 ; GFX90A-NEXT:    ;;#ASMEND
2797 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2799 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_u_0:
2800 ; GFX940:       ; %bb.0:
2801 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2802 ; GFX940-NEXT:    ;;#ASMSTART
2803 ; GFX940-NEXT:    ; def s[0:1]
2804 ; GFX940-NEXT:    ;;#ASMEND
2805 ; GFX940-NEXT:    ;;#ASMSTART
2806 ; GFX940-NEXT:    ; def s[2:3]
2807 ; GFX940-NEXT:    ;;#ASMEND
2808 ; GFX940-NEXT:    s_mov_b32 s8, s3
2809 ; GFX940-NEXT:    s_mov_b32 s10, s0
2810 ; GFX940-NEXT:    ;;#ASMSTART
2811 ; GFX940-NEXT:    ; use s[8:10]
2812 ; GFX940-NEXT:    ;;#ASMEND
2813 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2814   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2815   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2816   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>
2817   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2818   ret void
2821 define void @s_shuffle_v3p3_v2p3__3_1_0() {
2822 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_1_0:
2823 ; GFX900:       ; %bb.0:
2824 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2825 ; GFX900-NEXT:    ;;#ASMSTART
2826 ; GFX900-NEXT:    ; def s[4:5]
2827 ; GFX900-NEXT:    ;;#ASMEND
2828 ; GFX900-NEXT:    ;;#ASMSTART
2829 ; GFX900-NEXT:    ; def s[6:7]
2830 ; GFX900-NEXT:    ;;#ASMEND
2831 ; GFX900-NEXT:    s_mov_b32 s8, s7
2832 ; GFX900-NEXT:    s_mov_b32 s9, s5
2833 ; GFX900-NEXT:    s_mov_b32 s10, s4
2834 ; GFX900-NEXT:    ;;#ASMSTART
2835 ; GFX900-NEXT:    ; use s[8:10]
2836 ; GFX900-NEXT:    ;;#ASMEND
2837 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2839 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_1_0:
2840 ; GFX90A:       ; %bb.0:
2841 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2842 ; GFX90A-NEXT:    ;;#ASMSTART
2843 ; GFX90A-NEXT:    ; def s[4:5]
2844 ; GFX90A-NEXT:    ;;#ASMEND
2845 ; GFX90A-NEXT:    ;;#ASMSTART
2846 ; GFX90A-NEXT:    ; def s[6:7]
2847 ; GFX90A-NEXT:    ;;#ASMEND
2848 ; GFX90A-NEXT:    s_mov_b32 s8, s7
2849 ; GFX90A-NEXT:    s_mov_b32 s9, s5
2850 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2851 ; GFX90A-NEXT:    ;;#ASMSTART
2852 ; GFX90A-NEXT:    ; use s[8:10]
2853 ; GFX90A-NEXT:    ;;#ASMEND
2854 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2856 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_1_0:
2857 ; GFX940:       ; %bb.0:
2858 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2859 ; GFX940-NEXT:    ;;#ASMSTART
2860 ; GFX940-NEXT:    ; def s[0:1]
2861 ; GFX940-NEXT:    ;;#ASMEND
2862 ; GFX940-NEXT:    ;;#ASMSTART
2863 ; GFX940-NEXT:    ; def s[2:3]
2864 ; GFX940-NEXT:    ;;#ASMEND
2865 ; GFX940-NEXT:    s_mov_b32 s8, s3
2866 ; GFX940-NEXT:    s_mov_b32 s9, s1
2867 ; GFX940-NEXT:    s_mov_b32 s10, s0
2868 ; GFX940-NEXT:    ;;#ASMSTART
2869 ; GFX940-NEXT:    ; use s[8:10]
2870 ; GFX940-NEXT:    ;;#ASMEND
2871 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2872   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2873   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2874   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 0>
2875   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2876   ret void
2879 define void @s_shuffle_v3p3_v2p3__3_2_0() {
2880 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_2_0:
2881 ; GFX900:       ; %bb.0:
2882 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2883 ; GFX900-NEXT:    ;;#ASMSTART
2884 ; GFX900-NEXT:    ; def s[4:5]
2885 ; GFX900-NEXT:    ;;#ASMEND
2886 ; GFX900-NEXT:    ;;#ASMSTART
2887 ; GFX900-NEXT:    ; def s[6:7]
2888 ; GFX900-NEXT:    ;;#ASMEND
2889 ; GFX900-NEXT:    s_mov_b32 s8, s7
2890 ; GFX900-NEXT:    s_mov_b32 s9, s6
2891 ; GFX900-NEXT:    s_mov_b32 s10, s4
2892 ; GFX900-NEXT:    ;;#ASMSTART
2893 ; GFX900-NEXT:    ; use s[8:10]
2894 ; GFX900-NEXT:    ;;#ASMEND
2895 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2897 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_2_0:
2898 ; GFX90A:       ; %bb.0:
2899 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2900 ; GFX90A-NEXT:    ;;#ASMSTART
2901 ; GFX90A-NEXT:    ; def s[4:5]
2902 ; GFX90A-NEXT:    ;;#ASMEND
2903 ; GFX90A-NEXT:    ;;#ASMSTART
2904 ; GFX90A-NEXT:    ; def s[6:7]
2905 ; GFX90A-NEXT:    ;;#ASMEND
2906 ; GFX90A-NEXT:    s_mov_b32 s8, s7
2907 ; GFX90A-NEXT:    s_mov_b32 s9, s6
2908 ; GFX90A-NEXT:    s_mov_b32 s10, s4
2909 ; GFX90A-NEXT:    ;;#ASMSTART
2910 ; GFX90A-NEXT:    ; use s[8:10]
2911 ; GFX90A-NEXT:    ;;#ASMEND
2912 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2914 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_2_0:
2915 ; GFX940:       ; %bb.0:
2916 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2917 ; GFX940-NEXT:    ;;#ASMSTART
2918 ; GFX940-NEXT:    ; def s[0:1]
2919 ; GFX940-NEXT:    ;;#ASMEND
2920 ; GFX940-NEXT:    ;;#ASMSTART
2921 ; GFX940-NEXT:    ; def s[2:3]
2922 ; GFX940-NEXT:    ;;#ASMEND
2923 ; GFX940-NEXT:    s_mov_b32 s8, s3
2924 ; GFX940-NEXT:    s_mov_b32 s9, s2
2925 ; GFX940-NEXT:    s_mov_b32 s10, s0
2926 ; GFX940-NEXT:    ;;#ASMSTART
2927 ; GFX940-NEXT:    ; use s[8:10]
2928 ; GFX940-NEXT:    ;;#ASMEND
2929 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2930   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2931   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2932   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 0>
2933   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2934   ret void
2937 define void @s_shuffle_v3p3_v2p3__u_1_1() {
2938 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__u_1_1:
2939 ; GFX9:       ; %bb.0:
2940 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2941 ; GFX9-NEXT:    ;;#ASMSTART
2942 ; GFX9-NEXT:    ; def s[8:9]
2943 ; GFX9-NEXT:    ;;#ASMEND
2944 ; GFX9-NEXT:    s_mov_b32 s10, s9
2945 ; GFX9-NEXT:    ;;#ASMSTART
2946 ; GFX9-NEXT:    ; use s[8:10]
2947 ; GFX9-NEXT:    ;;#ASMEND
2948 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2949   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2950   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 1, i32 1>
2951   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2952   ret void
2955 define void @s_shuffle_v3p3_v2p3__0_1_1() {
2956 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__0_1_1:
2957 ; GFX9:       ; %bb.0:
2958 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2959 ; GFX9-NEXT:    ;;#ASMSTART
2960 ; GFX9-NEXT:    ; def s[8:9]
2961 ; GFX9-NEXT:    ;;#ASMEND
2962 ; GFX9-NEXT:    s_mov_b32 s10, s9
2963 ; GFX9-NEXT:    ;;#ASMSTART
2964 ; GFX9-NEXT:    ; use s[8:10]
2965 ; GFX9-NEXT:    ;;#ASMEND
2966 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2967   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2968   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 1, i32 1>
2969   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2970   ret void
2973 define void @s_shuffle_v3p3_v2p3__1_1_1() {
2974 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__1_1_1:
2975 ; GFX9:       ; %bb.0:
2976 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2977 ; GFX9-NEXT:    ;;#ASMSTART
2978 ; GFX9-NEXT:    ; def s[8:9]
2979 ; GFX9-NEXT:    ;;#ASMEND
2980 ; GFX9-NEXT:    s_mov_b32 s8, s9
2981 ; GFX9-NEXT:    s_mov_b32 s10, s9
2982 ; GFX9-NEXT:    ;;#ASMSTART
2983 ; GFX9-NEXT:    ; use s[8:10]
2984 ; GFX9-NEXT:    ;;#ASMEND
2985 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
2986   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
2987   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 1, i32 1>
2988   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
2989   ret void
2992 define void @s_shuffle_v3p3_v2p3__2_1_1() {
2993 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__2_1_1:
2994 ; GFX9:       ; %bb.0:
2995 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2996 ; GFX9-NEXT:    ;;#ASMSTART
2997 ; GFX9-NEXT:    ; def s[8:9]
2998 ; GFX9-NEXT:    ;;#ASMEND
2999 ; GFX9-NEXT:    s_mov_b32 s10, s9
3000 ; GFX9-NEXT:    ;;#ASMSTART
3001 ; GFX9-NEXT:    ; use s[8:10]
3002 ; GFX9-NEXT:    ;;#ASMEND
3003 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3004   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3005   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 1, i32 1>
3006   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3007   ret void
3010 define void @s_shuffle_v3p3_v2p3__3_1_1() {
3011 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_1_1:
3012 ; GFX900:       ; %bb.0:
3013 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3014 ; GFX900-NEXT:    ;;#ASMSTART
3015 ; GFX900-NEXT:    ; def s[8:9]
3016 ; GFX900-NEXT:    ;;#ASMEND
3017 ; GFX900-NEXT:    ;;#ASMSTART
3018 ; GFX900-NEXT:    ; def s[4:5]
3019 ; GFX900-NEXT:    ;;#ASMEND
3020 ; GFX900-NEXT:    s_mov_b32 s8, s5
3021 ; GFX900-NEXT:    s_mov_b32 s10, s9
3022 ; GFX900-NEXT:    ;;#ASMSTART
3023 ; GFX900-NEXT:    ; use s[8:10]
3024 ; GFX900-NEXT:    ;;#ASMEND
3025 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3027 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_1_1:
3028 ; GFX90A:       ; %bb.0:
3029 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3030 ; GFX90A-NEXT:    ;;#ASMSTART
3031 ; GFX90A-NEXT:    ; def s[8:9]
3032 ; GFX90A-NEXT:    ;;#ASMEND
3033 ; GFX90A-NEXT:    ;;#ASMSTART
3034 ; GFX90A-NEXT:    ; def s[4:5]
3035 ; GFX90A-NEXT:    ;;#ASMEND
3036 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3037 ; GFX90A-NEXT:    s_mov_b32 s10, s9
3038 ; GFX90A-NEXT:    ;;#ASMSTART
3039 ; GFX90A-NEXT:    ; use s[8:10]
3040 ; GFX90A-NEXT:    ;;#ASMEND
3041 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3043 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_1_1:
3044 ; GFX940:       ; %bb.0:
3045 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3046 ; GFX940-NEXT:    ;;#ASMSTART
3047 ; GFX940-NEXT:    ; def s[8:9]
3048 ; GFX940-NEXT:    ;;#ASMEND
3049 ; GFX940-NEXT:    ;;#ASMSTART
3050 ; GFX940-NEXT:    ; def s[0:1]
3051 ; GFX940-NEXT:    ;;#ASMEND
3052 ; GFX940-NEXT:    s_mov_b32 s8, s1
3053 ; GFX940-NEXT:    s_mov_b32 s10, s9
3054 ; GFX940-NEXT:    ;;#ASMSTART
3055 ; GFX940-NEXT:    ; use s[8:10]
3056 ; GFX940-NEXT:    ;;#ASMEND
3057 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3058   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3059   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3060   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 1>
3061   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3062   ret void
3065 define void @s_shuffle_v3p3_v2p3__3_u_1() {
3066 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_u_1:
3067 ; GFX900:       ; %bb.0:
3068 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3069 ; GFX900-NEXT:    ;;#ASMSTART
3070 ; GFX900-NEXT:    ; def s[4:5]
3071 ; GFX900-NEXT:    ;;#ASMEND
3072 ; GFX900-NEXT:    ;;#ASMSTART
3073 ; GFX900-NEXT:    ; def s[6:7]
3074 ; GFX900-NEXT:    ;;#ASMEND
3075 ; GFX900-NEXT:    s_mov_b32 s8, s7
3076 ; GFX900-NEXT:    s_mov_b32 s10, s5
3077 ; GFX900-NEXT:    ;;#ASMSTART
3078 ; GFX900-NEXT:    ; use s[8:10]
3079 ; GFX900-NEXT:    ;;#ASMEND
3080 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3082 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_u_1:
3083 ; GFX90A:       ; %bb.0:
3084 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3085 ; GFX90A-NEXT:    ;;#ASMSTART
3086 ; GFX90A-NEXT:    ; def s[4:5]
3087 ; GFX90A-NEXT:    ;;#ASMEND
3088 ; GFX90A-NEXT:    ;;#ASMSTART
3089 ; GFX90A-NEXT:    ; def s[6:7]
3090 ; GFX90A-NEXT:    ;;#ASMEND
3091 ; GFX90A-NEXT:    s_mov_b32 s8, s7
3092 ; GFX90A-NEXT:    s_mov_b32 s10, s5
3093 ; GFX90A-NEXT:    ;;#ASMSTART
3094 ; GFX90A-NEXT:    ; use s[8:10]
3095 ; GFX90A-NEXT:    ;;#ASMEND
3096 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3098 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_u_1:
3099 ; GFX940:       ; %bb.0:
3100 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3101 ; GFX940-NEXT:    ;;#ASMSTART
3102 ; GFX940-NEXT:    ; def s[0:1]
3103 ; GFX940-NEXT:    ;;#ASMEND
3104 ; GFX940-NEXT:    ;;#ASMSTART
3105 ; GFX940-NEXT:    ; def s[2:3]
3106 ; GFX940-NEXT:    ;;#ASMEND
3107 ; GFX940-NEXT:    s_mov_b32 s8, s3
3108 ; GFX940-NEXT:    s_mov_b32 s10, s1
3109 ; GFX940-NEXT:    ;;#ASMSTART
3110 ; GFX940-NEXT:    ; use s[8:10]
3111 ; GFX940-NEXT:    ;;#ASMEND
3112 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3113   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3114   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3115   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>
3116   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3117   ret void
3120 define void @s_shuffle_v3p3_v2p3__3_0_1() {
3121 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_0_1:
3122 ; GFX900:       ; %bb.0:
3123 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3124 ; GFX900-NEXT:    ;;#ASMSTART
3125 ; GFX900-NEXT:    ; def s[4:5]
3126 ; GFX900-NEXT:    ;;#ASMEND
3127 ; GFX900-NEXT:    ;;#ASMSTART
3128 ; GFX900-NEXT:    ; def s[6:7]
3129 ; GFX900-NEXT:    ;;#ASMEND
3130 ; GFX900-NEXT:    s_mov_b32 s8, s7
3131 ; GFX900-NEXT:    s_mov_b32 s9, s4
3132 ; GFX900-NEXT:    s_mov_b32 s10, s5
3133 ; GFX900-NEXT:    ;;#ASMSTART
3134 ; GFX900-NEXT:    ; use s[8:10]
3135 ; GFX900-NEXT:    ;;#ASMEND
3136 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3138 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_0_1:
3139 ; GFX90A:       ; %bb.0:
3140 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3141 ; GFX90A-NEXT:    ;;#ASMSTART
3142 ; GFX90A-NEXT:    ; def s[4:5]
3143 ; GFX90A-NEXT:    ;;#ASMEND
3144 ; GFX90A-NEXT:    ;;#ASMSTART
3145 ; GFX90A-NEXT:    ; def s[6:7]
3146 ; GFX90A-NEXT:    ;;#ASMEND
3147 ; GFX90A-NEXT:    s_mov_b32 s8, s7
3148 ; GFX90A-NEXT:    s_mov_b32 s9, s4
3149 ; GFX90A-NEXT:    s_mov_b32 s10, s5
3150 ; GFX90A-NEXT:    ;;#ASMSTART
3151 ; GFX90A-NEXT:    ; use s[8:10]
3152 ; GFX90A-NEXT:    ;;#ASMEND
3153 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3155 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_0_1:
3156 ; GFX940:       ; %bb.0:
3157 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3158 ; GFX940-NEXT:    ;;#ASMSTART
3159 ; GFX940-NEXT:    ; def s[0:1]
3160 ; GFX940-NEXT:    ;;#ASMEND
3161 ; GFX940-NEXT:    ;;#ASMSTART
3162 ; GFX940-NEXT:    ; def s[2:3]
3163 ; GFX940-NEXT:    ;;#ASMEND
3164 ; GFX940-NEXT:    s_mov_b32 s8, s3
3165 ; GFX940-NEXT:    s_mov_b32 s9, s0
3166 ; GFX940-NEXT:    s_mov_b32 s10, s1
3167 ; GFX940-NEXT:    ;;#ASMSTART
3168 ; GFX940-NEXT:    ; use s[8:10]
3169 ; GFX940-NEXT:    ;;#ASMEND
3170 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3171   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3172   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3173   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 1>
3174   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3175   ret void
3178 define void @s_shuffle_v3p3_v2p3__3_2_1() {
3179 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_2_1:
3180 ; GFX900:       ; %bb.0:
3181 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3182 ; GFX900-NEXT:    ;;#ASMSTART
3183 ; GFX900-NEXT:    ; def s[4:5]
3184 ; GFX900-NEXT:    ;;#ASMEND
3185 ; GFX900-NEXT:    ;;#ASMSTART
3186 ; GFX900-NEXT:    ; def s[6:7]
3187 ; GFX900-NEXT:    ;;#ASMEND
3188 ; GFX900-NEXT:    s_mov_b32 s8, s7
3189 ; GFX900-NEXT:    s_mov_b32 s9, s6
3190 ; GFX900-NEXT:    s_mov_b32 s10, s5
3191 ; GFX900-NEXT:    ;;#ASMSTART
3192 ; GFX900-NEXT:    ; use s[8:10]
3193 ; GFX900-NEXT:    ;;#ASMEND
3194 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3196 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_2_1:
3197 ; GFX90A:       ; %bb.0:
3198 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3199 ; GFX90A-NEXT:    ;;#ASMSTART
3200 ; GFX90A-NEXT:    ; def s[4:5]
3201 ; GFX90A-NEXT:    ;;#ASMEND
3202 ; GFX90A-NEXT:    ;;#ASMSTART
3203 ; GFX90A-NEXT:    ; def s[6:7]
3204 ; GFX90A-NEXT:    ;;#ASMEND
3205 ; GFX90A-NEXT:    s_mov_b32 s8, s7
3206 ; GFX90A-NEXT:    s_mov_b32 s9, s6
3207 ; GFX90A-NEXT:    s_mov_b32 s10, s5
3208 ; GFX90A-NEXT:    ;;#ASMSTART
3209 ; GFX90A-NEXT:    ; use s[8:10]
3210 ; GFX90A-NEXT:    ;;#ASMEND
3211 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3213 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_2_1:
3214 ; GFX940:       ; %bb.0:
3215 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3216 ; GFX940-NEXT:    ;;#ASMSTART
3217 ; GFX940-NEXT:    ; def s[0:1]
3218 ; GFX940-NEXT:    ;;#ASMEND
3219 ; GFX940-NEXT:    ;;#ASMSTART
3220 ; GFX940-NEXT:    ; def s[2:3]
3221 ; GFX940-NEXT:    ;;#ASMEND
3222 ; GFX940-NEXT:    s_mov_b32 s8, s3
3223 ; GFX940-NEXT:    s_mov_b32 s9, s2
3224 ; GFX940-NEXT:    s_mov_b32 s10, s1
3225 ; GFX940-NEXT:    ;;#ASMSTART
3226 ; GFX940-NEXT:    ; use s[8:10]
3227 ; GFX940-NEXT:    ;;#ASMEND
3228 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3229   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3230   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3231   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 1>
3232   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3233   ret void
3236 define void @s_shuffle_v3p3_v2p3__u_2_2() {
3237 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__u_2_2:
3238 ; GFX9:       ; %bb.0:
3239 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3240 ; GFX9-NEXT:    ;;#ASMSTART
3241 ; GFX9-NEXT:    ; use s[8:10]
3242 ; GFX9-NEXT:    ;;#ASMEND
3243 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3244   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3245   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 2, i32 2>
3246   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3247   ret void
3250 define void @s_shuffle_v3p3_v2p3__0_2_2() {
3251 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__0_2_2:
3252 ; GFX900:       ; %bb.0:
3253 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3254 ; GFX900-NEXT:    ;;#ASMSTART
3255 ; GFX900-NEXT:    ; def s[8:9]
3256 ; GFX900-NEXT:    ;;#ASMEND
3257 ; GFX900-NEXT:    ;;#ASMSTART
3258 ; GFX900-NEXT:    ; use s[8:10]
3259 ; GFX900-NEXT:    ;;#ASMEND
3260 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3262 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__0_2_2:
3263 ; GFX90A:       ; %bb.0:
3264 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3265 ; GFX90A-NEXT:    ;;#ASMSTART
3266 ; GFX90A-NEXT:    ; def s[8:9]
3267 ; GFX90A-NEXT:    ;;#ASMEND
3268 ; GFX90A-NEXT:    ;;#ASMSTART
3269 ; GFX90A-NEXT:    ; use s[8:10]
3270 ; GFX90A-NEXT:    ;;#ASMEND
3271 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3273 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__0_2_2:
3274 ; GFX940:       ; %bb.0:
3275 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3276 ; GFX940-NEXT:    ;;#ASMSTART
3277 ; GFX940-NEXT:    ; def s[8:9]
3278 ; GFX940-NEXT:    ;;#ASMEND
3279 ; GFX940-NEXT:    s_nop 0
3280 ; GFX940-NEXT:    ;;#ASMSTART
3281 ; GFX940-NEXT:    ; use s[8:10]
3282 ; GFX940-NEXT:    ;;#ASMEND
3283 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3284   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3285   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 2, i32 2>
3286   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3287   ret void
3290 define void @s_shuffle_v3p3_v2p3__1_2_2() {
3291 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__1_2_2:
3292 ; GFX900:       ; %bb.0:
3293 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3294 ; GFX900-NEXT:    ;;#ASMSTART
3295 ; GFX900-NEXT:    ; def s[4:5]
3296 ; GFX900-NEXT:    ;;#ASMEND
3297 ; GFX900-NEXT:    s_mov_b32 s8, s5
3298 ; GFX900-NEXT:    ;;#ASMSTART
3299 ; GFX900-NEXT:    ; use s[8:10]
3300 ; GFX900-NEXT:    ;;#ASMEND
3301 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3303 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__1_2_2:
3304 ; GFX90A:       ; %bb.0:
3305 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3306 ; GFX90A-NEXT:    ;;#ASMSTART
3307 ; GFX90A-NEXT:    ; def s[4:5]
3308 ; GFX90A-NEXT:    ;;#ASMEND
3309 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3310 ; GFX90A-NEXT:    ;;#ASMSTART
3311 ; GFX90A-NEXT:    ; use s[8:10]
3312 ; GFX90A-NEXT:    ;;#ASMEND
3313 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3315 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__1_2_2:
3316 ; GFX940:       ; %bb.0:
3317 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3318 ; GFX940-NEXT:    ;;#ASMSTART
3319 ; GFX940-NEXT:    ; def s[0:1]
3320 ; GFX940-NEXT:    ;;#ASMEND
3321 ; GFX940-NEXT:    s_mov_b32 s8, s1
3322 ; GFX940-NEXT:    ;;#ASMSTART
3323 ; GFX940-NEXT:    ; use s[8:10]
3324 ; GFX940-NEXT:    ;;#ASMEND
3325 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3326   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3327   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 2, i32 2>
3328   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3329   ret void
3332 define void @s_shuffle_v3p3_v2p3__2_2_2() {
3333 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__2_2_2:
3334 ; GFX9:       ; %bb.0:
3335 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3336 ; GFX9-NEXT:    ;;#ASMSTART
3337 ; GFX9-NEXT:    ; use s[8:10]
3338 ; GFX9-NEXT:    ;;#ASMEND
3339 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3340   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3341   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 2, i32 2>
3342   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3343   ret void
3346 define void @s_shuffle_v3p3_v2p3__3_2_2() {
3347 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_2_2:
3348 ; GFX900:       ; %bb.0:
3349 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3350 ; GFX900-NEXT:    ;;#ASMSTART
3351 ; GFX900-NEXT:    ; def s[4:5]
3352 ; GFX900-NEXT:    ;;#ASMEND
3353 ; GFX900-NEXT:    s_mov_b32 s8, s5
3354 ; GFX900-NEXT:    s_mov_b32 s9, s4
3355 ; GFX900-NEXT:    s_mov_b32 s10, s4
3356 ; GFX900-NEXT:    ;;#ASMSTART
3357 ; GFX900-NEXT:    ; use s[8:10]
3358 ; GFX900-NEXT:    ;;#ASMEND
3359 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3361 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_2_2:
3362 ; GFX90A:       ; %bb.0:
3363 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3364 ; GFX90A-NEXT:    ;;#ASMSTART
3365 ; GFX90A-NEXT:    ; def s[4:5]
3366 ; GFX90A-NEXT:    ;;#ASMEND
3367 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3368 ; GFX90A-NEXT:    s_mov_b32 s9, s4
3369 ; GFX90A-NEXT:    s_mov_b32 s10, s4
3370 ; GFX90A-NEXT:    ;;#ASMSTART
3371 ; GFX90A-NEXT:    ; use s[8:10]
3372 ; GFX90A-NEXT:    ;;#ASMEND
3373 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3375 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_2_2:
3376 ; GFX940:       ; %bb.0:
3377 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3378 ; GFX940-NEXT:    ;;#ASMSTART
3379 ; GFX940-NEXT:    ; def s[0:1]
3380 ; GFX940-NEXT:    ;;#ASMEND
3381 ; GFX940-NEXT:    s_mov_b32 s8, s1
3382 ; GFX940-NEXT:    s_mov_b32 s9, s0
3383 ; GFX940-NEXT:    s_mov_b32 s10, s0
3384 ; GFX940-NEXT:    ;;#ASMSTART
3385 ; GFX940-NEXT:    ; use s[8:10]
3386 ; GFX940-NEXT:    ;;#ASMEND
3387 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3388   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3389   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3390   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 2>
3391   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3392   ret void
3395 define void @s_shuffle_v3p3_v2p3__3_u_2() {
3396 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_u_2:
3397 ; GFX900:       ; %bb.0:
3398 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3399 ; GFX900-NEXT:    ;;#ASMSTART
3400 ; GFX900-NEXT:    ; def s[4:5]
3401 ; GFX900-NEXT:    ;;#ASMEND
3402 ; GFX900-NEXT:    s_mov_b32 s8, s5
3403 ; GFX900-NEXT:    s_mov_b32 s10, s4
3404 ; GFX900-NEXT:    ;;#ASMSTART
3405 ; GFX900-NEXT:    ; use s[8:10]
3406 ; GFX900-NEXT:    ;;#ASMEND
3407 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3409 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_u_2:
3410 ; GFX90A:       ; %bb.0:
3411 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3412 ; GFX90A-NEXT:    ;;#ASMSTART
3413 ; GFX90A-NEXT:    ; def s[4:5]
3414 ; GFX90A-NEXT:    ;;#ASMEND
3415 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3416 ; GFX90A-NEXT:    s_mov_b32 s10, s4
3417 ; GFX90A-NEXT:    ;;#ASMSTART
3418 ; GFX90A-NEXT:    ; use s[8:10]
3419 ; GFX90A-NEXT:    ;;#ASMEND
3420 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3422 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_u_2:
3423 ; GFX940:       ; %bb.0:
3424 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3425 ; GFX940-NEXT:    ;;#ASMSTART
3426 ; GFX940-NEXT:    ; def s[0:1]
3427 ; GFX940-NEXT:    ;;#ASMEND
3428 ; GFX940-NEXT:    s_mov_b32 s8, s1
3429 ; GFX940-NEXT:    s_mov_b32 s10, s0
3430 ; GFX940-NEXT:    ;;#ASMSTART
3431 ; GFX940-NEXT:    ; use s[8:10]
3432 ; GFX940-NEXT:    ;;#ASMEND
3433 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3434   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3435   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3436   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>
3437   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3438   ret void
3441 define void @s_shuffle_v3p3_v2p3__3_0_2() {
3442 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_0_2:
3443 ; GFX900:       ; %bb.0:
3444 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3445 ; GFX900-NEXT:    ;;#ASMSTART
3446 ; GFX900-NEXT:    ; def s[4:5]
3447 ; GFX900-NEXT:    ;;#ASMEND
3448 ; GFX900-NEXT:    ;;#ASMSTART
3449 ; GFX900-NEXT:    ; def s[6:7]
3450 ; GFX900-NEXT:    ;;#ASMEND
3451 ; GFX900-NEXT:    s_mov_b32 s8, s7
3452 ; GFX900-NEXT:    s_mov_b32 s9, s4
3453 ; GFX900-NEXT:    s_mov_b32 s10, s6
3454 ; GFX900-NEXT:    ;;#ASMSTART
3455 ; GFX900-NEXT:    ; use s[8:10]
3456 ; GFX900-NEXT:    ;;#ASMEND
3457 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3459 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_0_2:
3460 ; GFX90A:       ; %bb.0:
3461 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3462 ; GFX90A-NEXT:    ;;#ASMSTART
3463 ; GFX90A-NEXT:    ; def s[4:5]
3464 ; GFX90A-NEXT:    ;;#ASMEND
3465 ; GFX90A-NEXT:    ;;#ASMSTART
3466 ; GFX90A-NEXT:    ; def s[6:7]
3467 ; GFX90A-NEXT:    ;;#ASMEND
3468 ; GFX90A-NEXT:    s_mov_b32 s8, s7
3469 ; GFX90A-NEXT:    s_mov_b32 s9, s4
3470 ; GFX90A-NEXT:    s_mov_b32 s10, s6
3471 ; GFX90A-NEXT:    ;;#ASMSTART
3472 ; GFX90A-NEXT:    ; use s[8:10]
3473 ; GFX90A-NEXT:    ;;#ASMEND
3474 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3476 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_0_2:
3477 ; GFX940:       ; %bb.0:
3478 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3479 ; GFX940-NEXT:    ;;#ASMSTART
3480 ; GFX940-NEXT:    ; def s[0:1]
3481 ; GFX940-NEXT:    ;;#ASMEND
3482 ; GFX940-NEXT:    ;;#ASMSTART
3483 ; GFX940-NEXT:    ; def s[2:3]
3484 ; GFX940-NEXT:    ;;#ASMEND
3485 ; GFX940-NEXT:    s_mov_b32 s8, s3
3486 ; GFX940-NEXT:    s_mov_b32 s9, s0
3487 ; GFX940-NEXT:    s_mov_b32 s10, s2
3488 ; GFX940-NEXT:    ;;#ASMSTART
3489 ; GFX940-NEXT:    ; use s[8:10]
3490 ; GFX940-NEXT:    ;;#ASMEND
3491 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3492   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3493   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3494   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 2>
3495   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3496   ret void
3499 define void @s_shuffle_v3p3_v2p3__3_1_2() {
3500 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_1_2:
3501 ; GFX900:       ; %bb.0:
3502 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3503 ; GFX900-NEXT:    ;;#ASMSTART
3504 ; GFX900-NEXT:    ; def s[8:9]
3505 ; GFX900-NEXT:    ;;#ASMEND
3506 ; GFX900-NEXT:    ;;#ASMSTART
3507 ; GFX900-NEXT:    ; def s[4:5]
3508 ; GFX900-NEXT:    ;;#ASMEND
3509 ; GFX900-NEXT:    s_mov_b32 s8, s5
3510 ; GFX900-NEXT:    s_mov_b32 s10, s4
3511 ; GFX900-NEXT:    ;;#ASMSTART
3512 ; GFX900-NEXT:    ; use s[8:10]
3513 ; GFX900-NEXT:    ;;#ASMEND
3514 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3516 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_1_2:
3517 ; GFX90A:       ; %bb.0:
3518 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3519 ; GFX90A-NEXT:    ;;#ASMSTART
3520 ; GFX90A-NEXT:    ; def s[8:9]
3521 ; GFX90A-NEXT:    ;;#ASMEND
3522 ; GFX90A-NEXT:    ;;#ASMSTART
3523 ; GFX90A-NEXT:    ; def s[4:5]
3524 ; GFX90A-NEXT:    ;;#ASMEND
3525 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3526 ; GFX90A-NEXT:    s_mov_b32 s10, s4
3527 ; GFX90A-NEXT:    ;;#ASMSTART
3528 ; GFX90A-NEXT:    ; use s[8:10]
3529 ; GFX90A-NEXT:    ;;#ASMEND
3530 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3532 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_1_2:
3533 ; GFX940:       ; %bb.0:
3534 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3535 ; GFX940-NEXT:    ;;#ASMSTART
3536 ; GFX940-NEXT:    ; def s[8:9]
3537 ; GFX940-NEXT:    ;;#ASMEND
3538 ; GFX940-NEXT:    ;;#ASMSTART
3539 ; GFX940-NEXT:    ; def s[0:1]
3540 ; GFX940-NEXT:    ;;#ASMEND
3541 ; GFX940-NEXT:    s_mov_b32 s8, s1
3542 ; GFX940-NEXT:    s_mov_b32 s10, s0
3543 ; GFX940-NEXT:    ;;#ASMSTART
3544 ; GFX940-NEXT:    ; use s[8:10]
3545 ; GFX940-NEXT:    ;;#ASMEND
3546 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3547   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3548   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3549   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 2>
3550   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3551   ret void
3554 define void @s_shuffle_v3p3_v2p3__u_3_3() {
3555 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__u_3_3:
3556 ; GFX9:       ; %bb.0:
3557 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3558 ; GFX9-NEXT:    ;;#ASMSTART
3559 ; GFX9-NEXT:    ; def s[8:9]
3560 ; GFX9-NEXT:    ;;#ASMEND
3561 ; GFX9-NEXT:    s_mov_b32 s10, s9
3562 ; GFX9-NEXT:    ;;#ASMSTART
3563 ; GFX9-NEXT:    ; use s[8:10]
3564 ; GFX9-NEXT:    ;;#ASMEND
3565 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3566   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3567   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3568   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>
3569   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3570   ret void
3573 define void @s_shuffle_v3p3_v2p3__0_3_3() {
3574 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__0_3_3:
3575 ; GFX900:       ; %bb.0:
3576 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3577 ; GFX900-NEXT:    ;;#ASMSTART
3578 ; GFX900-NEXT:    ; def s[8:9]
3579 ; GFX900-NEXT:    ;;#ASMEND
3580 ; GFX900-NEXT:    ;;#ASMSTART
3581 ; GFX900-NEXT:    ; def s[4:5]
3582 ; GFX900-NEXT:    ;;#ASMEND
3583 ; GFX900-NEXT:    s_mov_b32 s9, s5
3584 ; GFX900-NEXT:    s_mov_b32 s10, s5
3585 ; GFX900-NEXT:    ;;#ASMSTART
3586 ; GFX900-NEXT:    ; use s[8:10]
3587 ; GFX900-NEXT:    ;;#ASMEND
3588 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3590 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__0_3_3:
3591 ; GFX90A:       ; %bb.0:
3592 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3593 ; GFX90A-NEXT:    ;;#ASMSTART
3594 ; GFX90A-NEXT:    ; def s[8:9]
3595 ; GFX90A-NEXT:    ;;#ASMEND
3596 ; GFX90A-NEXT:    ;;#ASMSTART
3597 ; GFX90A-NEXT:    ; def s[4:5]
3598 ; GFX90A-NEXT:    ;;#ASMEND
3599 ; GFX90A-NEXT:    s_mov_b32 s9, s5
3600 ; GFX90A-NEXT:    s_mov_b32 s10, s5
3601 ; GFX90A-NEXT:    ;;#ASMSTART
3602 ; GFX90A-NEXT:    ; use s[8:10]
3603 ; GFX90A-NEXT:    ;;#ASMEND
3604 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3606 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__0_3_3:
3607 ; GFX940:       ; %bb.0:
3608 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3609 ; GFX940-NEXT:    ;;#ASMSTART
3610 ; GFX940-NEXT:    ; def s[8:9]
3611 ; GFX940-NEXT:    ;;#ASMEND
3612 ; GFX940-NEXT:    ;;#ASMSTART
3613 ; GFX940-NEXT:    ; def s[0:1]
3614 ; GFX940-NEXT:    ;;#ASMEND
3615 ; GFX940-NEXT:    s_mov_b32 s9, s1
3616 ; GFX940-NEXT:    s_mov_b32 s10, s1
3617 ; GFX940-NEXT:    ;;#ASMSTART
3618 ; GFX940-NEXT:    ; use s[8:10]
3619 ; GFX940-NEXT:    ;;#ASMEND
3620 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3621   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3622   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3623   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 3, i32 3>
3624   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3625   ret void
3628 define void @s_shuffle_v3p3_v2p3__1_3_3() {
3629 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__1_3_3:
3630 ; GFX900:       ; %bb.0:
3631 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3632 ; GFX900-NEXT:    ;;#ASMSTART
3633 ; GFX900-NEXT:    ; def s[8:9]
3634 ; GFX900-NEXT:    ;;#ASMEND
3635 ; GFX900-NEXT:    ;;#ASMSTART
3636 ; GFX900-NEXT:    ; def s[4:5]
3637 ; GFX900-NEXT:    ;;#ASMEND
3638 ; GFX900-NEXT:    s_mov_b32 s8, s5
3639 ; GFX900-NEXT:    s_mov_b32 s10, s9
3640 ; GFX900-NEXT:    ;;#ASMSTART
3641 ; GFX900-NEXT:    ; use s[8:10]
3642 ; GFX900-NEXT:    ;;#ASMEND
3643 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3645 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__1_3_3:
3646 ; GFX90A:       ; %bb.0:
3647 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3648 ; GFX90A-NEXT:    ;;#ASMSTART
3649 ; GFX90A-NEXT:    ; def s[8:9]
3650 ; GFX90A-NEXT:    ;;#ASMEND
3651 ; GFX90A-NEXT:    ;;#ASMSTART
3652 ; GFX90A-NEXT:    ; def s[4:5]
3653 ; GFX90A-NEXT:    ;;#ASMEND
3654 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3655 ; GFX90A-NEXT:    s_mov_b32 s10, s9
3656 ; GFX90A-NEXT:    ;;#ASMSTART
3657 ; GFX90A-NEXT:    ; use s[8:10]
3658 ; GFX90A-NEXT:    ;;#ASMEND
3659 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3661 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__1_3_3:
3662 ; GFX940:       ; %bb.0:
3663 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3664 ; GFX940-NEXT:    ;;#ASMSTART
3665 ; GFX940-NEXT:    ; def s[8:9]
3666 ; GFX940-NEXT:    ;;#ASMEND
3667 ; GFX940-NEXT:    ;;#ASMSTART
3668 ; GFX940-NEXT:    ; def s[0:1]
3669 ; GFX940-NEXT:    ;;#ASMEND
3670 ; GFX940-NEXT:    s_mov_b32 s8, s1
3671 ; GFX940-NEXT:    s_mov_b32 s10, s9
3672 ; GFX940-NEXT:    ;;#ASMSTART
3673 ; GFX940-NEXT:    ; use s[8:10]
3674 ; GFX940-NEXT:    ;;#ASMEND
3675 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3676   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3677   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3678   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 3, i32 3>
3679   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3680   ret void
3683 define void @s_shuffle_v3p3_v2p3__2_3_3() {
3684 ; GFX9-LABEL: s_shuffle_v3p3_v2p3__2_3_3:
3685 ; GFX9:       ; %bb.0:
3686 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3687 ; GFX9-NEXT:    ;;#ASMSTART
3688 ; GFX9-NEXT:    ; def s[8:9]
3689 ; GFX9-NEXT:    ;;#ASMEND
3690 ; GFX9-NEXT:    s_mov_b32 s10, s9
3691 ; GFX9-NEXT:    ;;#ASMSTART
3692 ; GFX9-NEXT:    ; use s[8:10]
3693 ; GFX9-NEXT:    ;;#ASMEND
3694 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
3695   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3696   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3697   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 3, i32 3>
3698   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3699   ret void
3702 define void @s_shuffle_v3p3_v2p3__3_u_3() {
3703 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_u_3:
3704 ; GFX900:       ; %bb.0:
3705 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3706 ; GFX900-NEXT:    ;;#ASMSTART
3707 ; GFX900-NEXT:    ; def s[4:5]
3708 ; GFX900-NEXT:    ;;#ASMEND
3709 ; GFX900-NEXT:    s_mov_b32 s8, s5
3710 ; GFX900-NEXT:    s_mov_b32 s10, s5
3711 ; GFX900-NEXT:    ;;#ASMSTART
3712 ; GFX900-NEXT:    ; use s[8:10]
3713 ; GFX900-NEXT:    ;;#ASMEND
3714 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3716 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_u_3:
3717 ; GFX90A:       ; %bb.0:
3718 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3719 ; GFX90A-NEXT:    ;;#ASMSTART
3720 ; GFX90A-NEXT:    ; def s[4:5]
3721 ; GFX90A-NEXT:    ;;#ASMEND
3722 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3723 ; GFX90A-NEXT:    s_mov_b32 s10, s5
3724 ; GFX90A-NEXT:    ;;#ASMSTART
3725 ; GFX90A-NEXT:    ; use s[8:10]
3726 ; GFX90A-NEXT:    ;;#ASMEND
3727 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3729 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_u_3:
3730 ; GFX940:       ; %bb.0:
3731 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3732 ; GFX940-NEXT:    ;;#ASMSTART
3733 ; GFX940-NEXT:    ; def s[0:1]
3734 ; GFX940-NEXT:    ;;#ASMEND
3735 ; GFX940-NEXT:    s_mov_b32 s8, s1
3736 ; GFX940-NEXT:    s_mov_b32 s10, s1
3737 ; GFX940-NEXT:    ;;#ASMSTART
3738 ; GFX940-NEXT:    ; use s[8:10]
3739 ; GFX940-NEXT:    ;;#ASMEND
3740 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3741   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3742   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3743   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>
3744   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3745   ret void
3748 define void @s_shuffle_v3p3_v2p3__3_0_3() {
3749 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_0_3:
3750 ; GFX900:       ; %bb.0:
3751 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3752 ; GFX900-NEXT:    ;;#ASMSTART
3753 ; GFX900-NEXT:    ; def s[4:5]
3754 ; GFX900-NEXT:    ;;#ASMEND
3755 ; GFX900-NEXT:    ;;#ASMSTART
3756 ; GFX900-NEXT:    ; def s[6:7]
3757 ; GFX900-NEXT:    ;;#ASMEND
3758 ; GFX900-NEXT:    s_mov_b32 s8, s7
3759 ; GFX900-NEXT:    s_mov_b32 s9, s4
3760 ; GFX900-NEXT:    s_mov_b32 s10, s7
3761 ; GFX900-NEXT:    ;;#ASMSTART
3762 ; GFX900-NEXT:    ; use s[8:10]
3763 ; GFX900-NEXT:    ;;#ASMEND
3764 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3766 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_0_3:
3767 ; GFX90A:       ; %bb.0:
3768 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3769 ; GFX90A-NEXT:    ;;#ASMSTART
3770 ; GFX90A-NEXT:    ; def s[4:5]
3771 ; GFX90A-NEXT:    ;;#ASMEND
3772 ; GFX90A-NEXT:    ;;#ASMSTART
3773 ; GFX90A-NEXT:    ; def s[6:7]
3774 ; GFX90A-NEXT:    ;;#ASMEND
3775 ; GFX90A-NEXT:    s_mov_b32 s8, s7
3776 ; GFX90A-NEXT:    s_mov_b32 s9, s4
3777 ; GFX90A-NEXT:    s_mov_b32 s10, s7
3778 ; GFX90A-NEXT:    ;;#ASMSTART
3779 ; GFX90A-NEXT:    ; use s[8:10]
3780 ; GFX90A-NEXT:    ;;#ASMEND
3781 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3783 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_0_3:
3784 ; GFX940:       ; %bb.0:
3785 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3786 ; GFX940-NEXT:    ;;#ASMSTART
3787 ; GFX940-NEXT:    ; def s[0:1]
3788 ; GFX940-NEXT:    ;;#ASMEND
3789 ; GFX940-NEXT:    ;;#ASMSTART
3790 ; GFX940-NEXT:    ; def s[2:3]
3791 ; GFX940-NEXT:    ;;#ASMEND
3792 ; GFX940-NEXT:    s_mov_b32 s8, s3
3793 ; GFX940-NEXT:    s_mov_b32 s9, s0
3794 ; GFX940-NEXT:    s_mov_b32 s10, s3
3795 ; GFX940-NEXT:    ;;#ASMSTART
3796 ; GFX940-NEXT:    ; use s[8:10]
3797 ; GFX940-NEXT:    ;;#ASMEND
3798 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3799   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3800   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3801   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 0, i32 3>
3802   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3803   ret void
3806 define void @s_shuffle_v3p3_v2p3__3_1_3() {
3807 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_1_3:
3808 ; GFX900:       ; %bb.0:
3809 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3810 ; GFX900-NEXT:    ;;#ASMSTART
3811 ; GFX900-NEXT:    ; def s[8:9]
3812 ; GFX900-NEXT:    ;;#ASMEND
3813 ; GFX900-NEXT:    ;;#ASMSTART
3814 ; GFX900-NEXT:    ; def s[4:5]
3815 ; GFX900-NEXT:    ;;#ASMEND
3816 ; GFX900-NEXT:    s_mov_b32 s8, s5
3817 ; GFX900-NEXT:    s_mov_b32 s10, s5
3818 ; GFX900-NEXT:    ;;#ASMSTART
3819 ; GFX900-NEXT:    ; use s[8:10]
3820 ; GFX900-NEXT:    ;;#ASMEND
3821 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3823 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_1_3:
3824 ; GFX90A:       ; %bb.0:
3825 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3826 ; GFX90A-NEXT:    ;;#ASMSTART
3827 ; GFX90A-NEXT:    ; def s[8:9]
3828 ; GFX90A-NEXT:    ;;#ASMEND
3829 ; GFX90A-NEXT:    ;;#ASMSTART
3830 ; GFX90A-NEXT:    ; def s[4:5]
3831 ; GFX90A-NEXT:    ;;#ASMEND
3832 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3833 ; GFX90A-NEXT:    s_mov_b32 s10, s5
3834 ; GFX90A-NEXT:    ;;#ASMSTART
3835 ; GFX90A-NEXT:    ; use s[8:10]
3836 ; GFX90A-NEXT:    ;;#ASMEND
3837 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3839 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_1_3:
3840 ; GFX940:       ; %bb.0:
3841 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3842 ; GFX940-NEXT:    ;;#ASMSTART
3843 ; GFX940-NEXT:    ; def s[8:9]
3844 ; GFX940-NEXT:    ;;#ASMEND
3845 ; GFX940-NEXT:    ;;#ASMSTART
3846 ; GFX940-NEXT:    ; def s[0:1]
3847 ; GFX940-NEXT:    ;;#ASMEND
3848 ; GFX940-NEXT:    s_mov_b32 s8, s1
3849 ; GFX940-NEXT:    s_mov_b32 s10, s1
3850 ; GFX940-NEXT:    ;;#ASMSTART
3851 ; GFX940-NEXT:    ; use s[8:10]
3852 ; GFX940-NEXT:    ;;#ASMEND
3853 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3854   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3855   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3856   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 1, i32 3>
3857   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3858   ret void
3861 define void @s_shuffle_v3p3_v2p3__3_2_3() {
3862 ; GFX900-LABEL: s_shuffle_v3p3_v2p3__3_2_3:
3863 ; GFX900:       ; %bb.0:
3864 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3865 ; GFX900-NEXT:    ;;#ASMSTART
3866 ; GFX900-NEXT:    ; def s[4:5]
3867 ; GFX900-NEXT:    ;;#ASMEND
3868 ; GFX900-NEXT:    s_mov_b32 s8, s5
3869 ; GFX900-NEXT:    s_mov_b32 s9, s4
3870 ; GFX900-NEXT:    s_mov_b32 s10, s5
3871 ; GFX900-NEXT:    ;;#ASMSTART
3872 ; GFX900-NEXT:    ; use s[8:10]
3873 ; GFX900-NEXT:    ;;#ASMEND
3874 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3876 ; GFX90A-LABEL: s_shuffle_v3p3_v2p3__3_2_3:
3877 ; GFX90A:       ; %bb.0:
3878 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3879 ; GFX90A-NEXT:    ;;#ASMSTART
3880 ; GFX90A-NEXT:    ; def s[4:5]
3881 ; GFX90A-NEXT:    ;;#ASMEND
3882 ; GFX90A-NEXT:    s_mov_b32 s8, s5
3883 ; GFX90A-NEXT:    s_mov_b32 s9, s4
3884 ; GFX90A-NEXT:    s_mov_b32 s10, s5
3885 ; GFX90A-NEXT:    ;;#ASMSTART
3886 ; GFX90A-NEXT:    ; use s[8:10]
3887 ; GFX90A-NEXT:    ;;#ASMEND
3888 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3890 ; GFX940-LABEL: s_shuffle_v3p3_v2p3__3_2_3:
3891 ; GFX940:       ; %bb.0:
3892 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3893 ; GFX940-NEXT:    ;;#ASMSTART
3894 ; GFX940-NEXT:    ; def s[0:1]
3895 ; GFX940-NEXT:    ;;#ASMEND
3896 ; GFX940-NEXT:    s_mov_b32 s8, s1
3897 ; GFX940-NEXT:    s_mov_b32 s9, s0
3898 ; GFX940-NEXT:    s_mov_b32 s10, s1
3899 ; GFX940-NEXT:    ;;#ASMSTART
3900 ; GFX940-NEXT:    ; use s[8:10]
3901 ; GFX940-NEXT:    ;;#ASMEND
3902 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3903   %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3904   %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()
3905   %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 2, i32 3>
3906   call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
3907   ret void
3909 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
3910 ; GFX90APLUS: {{.*}}