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_v2i64_v2i64__u_u(ptr addrspace(1) inreg %ptr) {
8 ; GFX9-LABEL: v_shuffle_v2i64_v2i64__u_u:
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 i64> asm "; def $0", "=v"()
13 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> poison
14 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
18 define void @v_shuffle_v2i64_v2i64__0_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_u:
21 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
23 ; GFX900-NEXT: ;;#ASMSTART
24 ; GFX900-NEXT: ; def v[0:3]
25 ; GFX900-NEXT: ;;#ASMEND
26 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
27 ; GFX900-NEXT: s_waitcnt vmcnt(0)
28 ; GFX900-NEXT: s_setpc_b64 s[30:31]
30 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__0_u:
32 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
34 ; GFX90A-NEXT: ;;#ASMSTART
35 ; GFX90A-NEXT: ; def v[0:3]
36 ; GFX90A-NEXT: ;;#ASMEND
37 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
38 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
39 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
41 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_u:
43 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
45 ; GFX940-NEXT: ;;#ASMSTART
46 ; GFX940-NEXT: ; def v[0:3]
47 ; GFX940-NEXT: ;;#ASMEND
48 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
49 ; GFX940-NEXT: s_waitcnt vmcnt(0)
50 ; GFX940-NEXT: s_setpc_b64 s[30:31]
51 %vec0 = call <2 x i64> asm "; def $0", "=v"()
52 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 poison>
53 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
57 define void @v_shuffle_v2i64_v2i64__1_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_u:
60 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61 ; GFX900-NEXT: ;;#ASMSTART
62 ; GFX900-NEXT: ; def v[0:3]
63 ; GFX900-NEXT: ;;#ASMEND
64 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
65 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
66 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
67 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
68 ; GFX900-NEXT: s_waitcnt vmcnt(0)
69 ; GFX900-NEXT: s_setpc_b64 s[30:31]
71 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_u:
73 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
74 ; GFX90A-NEXT: ;;#ASMSTART
75 ; GFX90A-NEXT: ; def v[0:3]
76 ; GFX90A-NEXT: ;;#ASMEND
77 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
78 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
79 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
80 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
81 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
82 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
84 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_u:
86 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
87 ; GFX940-NEXT: ;;#ASMSTART
88 ; GFX940-NEXT: ; def v[0:3]
89 ; GFX940-NEXT: ;;#ASMEND
90 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
91 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
92 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
93 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
94 ; GFX940-NEXT: s_waitcnt vmcnt(0)
95 ; GFX940-NEXT: s_setpc_b64 s[30:31]
96 %vec0 = call <2 x i64> asm "; def $0", "=v"()
97 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
98 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
102 define void @v_shuffle_v2i64_v2i64__2_u(ptr addrspace(1) inreg %ptr) {
103 ; GFX9-LABEL: v_shuffle_v2i64_v2i64__2_u:
105 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
106 ; GFX9-NEXT: s_setpc_b64 s[30:31]
107 %vec0 = call <2 x i64> asm "; def $0", "=v"()
108 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 poison>
109 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
113 define void @v_shuffle_v2i64_v2i64__3_u(ptr addrspace(1) inreg %ptr) {
114 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_u:
116 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
117 ; GFX900-NEXT: ;;#ASMSTART
118 ; GFX900-NEXT: ; def v[0:3]
119 ; GFX900-NEXT: ;;#ASMEND
120 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
121 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
122 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
123 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
124 ; GFX900-NEXT: s_waitcnt vmcnt(0)
125 ; GFX900-NEXT: s_setpc_b64 s[30:31]
127 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_u:
129 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
130 ; GFX90A-NEXT: ;;#ASMSTART
131 ; GFX90A-NEXT: ; def v[0:3]
132 ; GFX90A-NEXT: ;;#ASMEND
133 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
134 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
135 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
136 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
137 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
138 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
140 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_u:
142 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
143 ; GFX940-NEXT: ;;#ASMSTART
144 ; GFX940-NEXT: ; def v[0:3]
145 ; GFX940-NEXT: ;;#ASMEND
146 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
147 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
148 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
149 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
150 ; GFX940-NEXT: s_waitcnt vmcnt(0)
151 ; GFX940-NEXT: s_setpc_b64 s[30:31]
152 %vec0 = call <2 x i64> asm "; def $0", "=v"()
153 %vec1 = call <2 x i64> asm "; def $0", "=v"()
154 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 poison>
155 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
159 define void @v_shuffle_v2i64_v2i64__3_0(ptr addrspace(1) inreg %ptr) {
160 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_0:
162 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
163 ; GFX900-NEXT: ;;#ASMSTART
164 ; GFX900-NEXT: ; def v[0:3]
165 ; GFX900-NEXT: ;;#ASMEND
166 ; GFX900-NEXT: ;;#ASMSTART
167 ; GFX900-NEXT: ; def v[2:5]
168 ; GFX900-NEXT: ;;#ASMEND
169 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
170 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
171 ; GFX900-NEXT: v_mov_b32_e32 v3, v5
172 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
173 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
174 ; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]
175 ; GFX900-NEXT: s_waitcnt vmcnt(0)
176 ; GFX900-NEXT: s_setpc_b64 s[30:31]
178 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_0:
180 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
181 ; GFX90A-NEXT: ;;#ASMSTART
182 ; GFX90A-NEXT: ; def v[0:3]
183 ; GFX90A-NEXT: ;;#ASMEND
184 ; GFX90A-NEXT: ;;#ASMSTART
185 ; GFX90A-NEXT: ; def v[2:5]
186 ; GFX90A-NEXT: ;;#ASMEND
187 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
188 ; GFX90A-NEXT: v_mov_b32_e32 v2, v4
189 ; GFX90A-NEXT: v_mov_b32_e32 v3, v5
190 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
191 ; GFX90A-NEXT: v_mov_b32_e32 v5, v1
192 ; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]
193 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
194 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
196 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_0:
198 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
199 ; GFX940-NEXT: ;;#ASMSTART
200 ; GFX940-NEXT: ; def v[0:3]
201 ; GFX940-NEXT: ;;#ASMEND
202 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
203 ; GFX940-NEXT: ;;#ASMSTART
204 ; GFX940-NEXT: ; def v[2:5]
205 ; GFX940-NEXT: ;;#ASMEND
206 ; GFX940-NEXT: s_nop 0
207 ; GFX940-NEXT: v_mov_b32_e32 v2, v4
208 ; GFX940-NEXT: v_mov_b32_e32 v3, v5
209 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
210 ; GFX940-NEXT: v_mov_b32_e32 v5, v1
211 ; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
212 ; GFX940-NEXT: s_waitcnt vmcnt(0)
213 ; GFX940-NEXT: s_setpc_b64 s[30:31]
214 %vec0 = call <2 x i64> asm "; def $0", "=v"()
215 %vec1 = call <2 x i64> asm "; def $0", "=v"()
216 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 0>
217 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
221 define void @v_shuffle_v2i64_v2i64__3_1(ptr addrspace(1) inreg %ptr) {
222 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_1:
224 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
225 ; GFX900-NEXT: ;;#ASMSTART
226 ; GFX900-NEXT: ; def v[0:3]
227 ; GFX900-NEXT: ;;#ASMEND
228 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
229 ; GFX900-NEXT: ;;#ASMSTART
230 ; GFX900-NEXT: ; def v[4:7]
231 ; GFX900-NEXT: ;;#ASMEND
232 ; GFX900-NEXT: v_mov_b32_e32 v0, v6
233 ; GFX900-NEXT: v_mov_b32_e32 v1, v7
234 ; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]
235 ; GFX900-NEXT: s_waitcnt vmcnt(0)
236 ; GFX900-NEXT: s_setpc_b64 s[30:31]
238 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_1:
240 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
241 ; GFX90A-NEXT: ;;#ASMSTART
242 ; GFX90A-NEXT: ; def v[0:3]
243 ; GFX90A-NEXT: ;;#ASMEND
244 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
245 ; GFX90A-NEXT: ;;#ASMSTART
246 ; GFX90A-NEXT: ; def v[4:7]
247 ; GFX90A-NEXT: ;;#ASMEND
248 ; GFX90A-NEXT: v_mov_b32_e32 v0, v6
249 ; GFX90A-NEXT: v_mov_b32_e32 v1, v7
250 ; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]
251 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
252 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
254 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_1:
256 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
257 ; GFX940-NEXT: ;;#ASMSTART
258 ; GFX940-NEXT: ; def v[0:3]
259 ; GFX940-NEXT: ;;#ASMEND
260 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
261 ; GFX940-NEXT: ;;#ASMSTART
262 ; GFX940-NEXT: ; def v[4:7]
263 ; GFX940-NEXT: ;;#ASMEND
264 ; GFX940-NEXT: s_nop 0
265 ; GFX940-NEXT: v_mov_b32_e32 v0, v6
266 ; GFX940-NEXT: v_mov_b32_e32 v1, v7
267 ; GFX940-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
268 ; GFX940-NEXT: s_waitcnt vmcnt(0)
269 ; GFX940-NEXT: s_setpc_b64 s[30:31]
270 %vec0 = call <2 x i64> asm "; def $0", "=v"()
271 %vec1 = call <2 x i64> asm "; def $0", "=v"()
272 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 1>
273 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
277 define void @v_shuffle_v2i64_v2i64__3_2(ptr addrspace(1) inreg %ptr) {
278 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_2:
280 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
281 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
282 ; GFX900-NEXT: ;;#ASMSTART
283 ; GFX900-NEXT: ; def v[0:3]
284 ; GFX900-NEXT: ;;#ASMEND
285 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
286 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
287 ; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]
288 ; GFX900-NEXT: s_waitcnt vmcnt(0)
289 ; GFX900-NEXT: s_setpc_b64 s[30:31]
291 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_2:
293 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
294 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
295 ; GFX90A-NEXT: ;;#ASMSTART
296 ; GFX90A-NEXT: ; def v[0:3]
297 ; GFX90A-NEXT: ;;#ASMEND
298 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
299 ; GFX90A-NEXT: v_mov_b32_e32 v5, v1
300 ; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]
301 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
302 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
304 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_2:
306 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
307 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
308 ; GFX940-NEXT: ;;#ASMSTART
309 ; GFX940-NEXT: ; def v[0:3]
310 ; GFX940-NEXT: ;;#ASMEND
311 ; GFX940-NEXT: s_nop 0
312 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
313 ; GFX940-NEXT: v_mov_b32_e32 v5, v1
314 ; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
315 ; GFX940-NEXT: s_waitcnt vmcnt(0)
316 ; GFX940-NEXT: s_setpc_b64 s[30:31]
317 %vec0 = call <2 x i64> asm "; def $0", "=v"()
318 %vec1 = call <2 x i64> asm "; def $0", "=v"()
319 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 2>
320 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
324 define void @v_shuffle_v2i64_v2i64__3_3(ptr addrspace(1) inreg %ptr) {
325 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__3_3:
327 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
328 ; GFX900-NEXT: ;;#ASMSTART
329 ; GFX900-NEXT: ; def v[0:3]
330 ; GFX900-NEXT: ;;#ASMEND
331 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
332 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
333 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
334 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
335 ; GFX900-NEXT: s_waitcnt vmcnt(0)
336 ; GFX900-NEXT: s_setpc_b64 s[30:31]
338 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__3_3:
340 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
341 ; GFX90A-NEXT: ;;#ASMSTART
342 ; GFX90A-NEXT: ; def v[0:3]
343 ; GFX90A-NEXT: ;;#ASMEND
344 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
345 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
346 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
347 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
348 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
349 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
351 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__3_3:
353 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
354 ; GFX940-NEXT: ;;#ASMSTART
355 ; GFX940-NEXT: ; def v[0:3]
356 ; GFX940-NEXT: ;;#ASMEND
357 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
358 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
359 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
360 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
361 ; GFX940-NEXT: s_waitcnt vmcnt(0)
362 ; GFX940-NEXT: s_setpc_b64 s[30:31]
363 %vec0 = call <2 x i64> asm "; def $0", "=v"()
364 %vec1 = call <2 x i64> asm "; def $0", "=v"()
365 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 3>
366 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
370 define void @v_shuffle_v2i64_v2i64__u_0(ptr addrspace(1) inreg %ptr) {
371 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__u_0:
373 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
374 ; GFX900-NEXT: ;;#ASMSTART
375 ; GFX900-NEXT: ; def v[0:3]
376 ; GFX900-NEXT: ;;#ASMEND
377 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
378 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
379 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
380 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
381 ; GFX900-NEXT: s_waitcnt vmcnt(0)
382 ; GFX900-NEXT: s_setpc_b64 s[30:31]
384 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__u_0:
386 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
387 ; GFX90A-NEXT: ;;#ASMSTART
388 ; GFX90A-NEXT: ; def v[0:3]
389 ; GFX90A-NEXT: ;;#ASMEND
390 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
391 ; GFX90A-NEXT: v_mov_b32_e32 v2, v0
392 ; GFX90A-NEXT: v_mov_b32_e32 v3, v1
393 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
394 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
395 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
397 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__u_0:
399 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
400 ; GFX940-NEXT: ;;#ASMSTART
401 ; GFX940-NEXT: ; def v[0:3]
402 ; GFX940-NEXT: ;;#ASMEND
403 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
404 ; GFX940-NEXT: v_mov_b32_e32 v2, v0
405 ; GFX940-NEXT: v_mov_b32_e32 v3, v1
406 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
407 ; GFX940-NEXT: s_waitcnt vmcnt(0)
408 ; GFX940-NEXT: s_setpc_b64 s[30:31]
409 %vec0 = call <2 x i64> asm "; def $0", "=v"()
410 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 0>
411 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
415 define void @v_shuffle_v2i64_v2i64__0_0(ptr addrspace(1) inreg %ptr) {
416 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_0:
418 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
419 ; GFX900-NEXT: ;;#ASMSTART
420 ; GFX900-NEXT: ; def v[0:3]
421 ; GFX900-NEXT: ;;#ASMEND
422 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
423 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
424 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
425 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
426 ; GFX900-NEXT: s_waitcnt vmcnt(0)
427 ; GFX900-NEXT: s_setpc_b64 s[30:31]
429 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__0_0:
431 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
432 ; GFX90A-NEXT: ;;#ASMSTART
433 ; GFX90A-NEXT: ; def v[0:3]
434 ; GFX90A-NEXT: ;;#ASMEND
435 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
436 ; GFX90A-NEXT: v_mov_b32_e32 v2, v0
437 ; GFX90A-NEXT: v_mov_b32_e32 v3, v1
438 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
439 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
440 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
442 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_0:
444 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
445 ; GFX940-NEXT: ;;#ASMSTART
446 ; GFX940-NEXT: ; def v[0:3]
447 ; GFX940-NEXT: ;;#ASMEND
448 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
449 ; GFX940-NEXT: v_mov_b32_e32 v2, v0
450 ; GFX940-NEXT: v_mov_b32_e32 v3, v1
451 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
452 ; GFX940-NEXT: s_waitcnt vmcnt(0)
453 ; GFX940-NEXT: s_setpc_b64 s[30:31]
454 %vec0 = call <2 x i64> asm "; def $0", "=v"()
455 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> zeroinitializer
456 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
460 define void @v_shuffle_v2i64_v2i64__1_0(ptr addrspace(1) inreg %ptr) {
461 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_0:
463 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
464 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
465 ; GFX900-NEXT: ;;#ASMSTART
466 ; GFX900-NEXT: ; def v[0:3]
467 ; GFX900-NEXT: ;;#ASMEND
468 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
469 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
470 ; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]
471 ; GFX900-NEXT: s_waitcnt vmcnt(0)
472 ; GFX900-NEXT: s_setpc_b64 s[30:31]
474 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_0:
476 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
477 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
478 ; GFX90A-NEXT: ;;#ASMSTART
479 ; GFX90A-NEXT: ; def v[0:3]
480 ; GFX90A-NEXT: ;;#ASMEND
481 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
482 ; GFX90A-NEXT: v_mov_b32_e32 v5, v1
483 ; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]
484 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
485 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
487 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_0:
489 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
490 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
491 ; GFX940-NEXT: ;;#ASMSTART
492 ; GFX940-NEXT: ; def v[0:3]
493 ; GFX940-NEXT: ;;#ASMEND
494 ; GFX940-NEXT: s_nop 0
495 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
496 ; GFX940-NEXT: v_mov_b32_e32 v5, v1
497 ; GFX940-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
498 ; GFX940-NEXT: s_waitcnt vmcnt(0)
499 ; GFX940-NEXT: s_setpc_b64 s[30:31]
500 %vec0 = call <2 x i64> asm "; def $0", "=v"()
501 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
502 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
506 define void @v_shuffle_v2i64_v2i64__2_0(ptr addrspace(1) inreg %ptr) {
507 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__2_0:
509 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
510 ; GFX900-NEXT: ;;#ASMSTART
511 ; GFX900-NEXT: ; def v[0:3]
512 ; GFX900-NEXT: ;;#ASMEND
513 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
514 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
515 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
516 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
517 ; GFX900-NEXT: s_waitcnt vmcnt(0)
518 ; GFX900-NEXT: s_setpc_b64 s[30:31]
520 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__2_0:
522 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
523 ; GFX90A-NEXT: ;;#ASMSTART
524 ; GFX90A-NEXT: ; def v[0:3]
525 ; GFX90A-NEXT: ;;#ASMEND
526 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
527 ; GFX90A-NEXT: v_mov_b32_e32 v2, v0
528 ; GFX90A-NEXT: v_mov_b32_e32 v3, v1
529 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
530 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
531 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
533 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__2_0:
535 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
536 ; GFX940-NEXT: ;;#ASMSTART
537 ; GFX940-NEXT: ; def v[0:3]
538 ; GFX940-NEXT: ;;#ASMEND
539 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
540 ; GFX940-NEXT: v_mov_b32_e32 v2, v0
541 ; GFX940-NEXT: v_mov_b32_e32 v3, v1
542 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
543 ; GFX940-NEXT: s_waitcnt vmcnt(0)
544 ; GFX940-NEXT: s_setpc_b64 s[30:31]
545 %vec0 = call <2 x i64> asm "; def $0", "=v"()
546 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 0>
547 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
551 define void @v_shuffle_v2i64_v2i64__u_1(ptr addrspace(1) inreg %ptr) {
552 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__u_1:
554 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
555 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
556 ; GFX900-NEXT: ;;#ASMSTART
557 ; GFX900-NEXT: ; def v[0:3]
558 ; GFX900-NEXT: ;;#ASMEND
559 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
560 ; GFX900-NEXT: s_waitcnt vmcnt(0)
561 ; GFX900-NEXT: s_setpc_b64 s[30:31]
563 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__u_1:
565 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
566 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
567 ; GFX90A-NEXT: ;;#ASMSTART
568 ; GFX90A-NEXT: ; def v[0:3]
569 ; GFX90A-NEXT: ;;#ASMEND
570 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
571 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
572 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
574 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__u_1:
576 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
577 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
578 ; GFX940-NEXT: ;;#ASMSTART
579 ; GFX940-NEXT: ; def v[0:3]
580 ; GFX940-NEXT: ;;#ASMEND
581 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
582 ; GFX940-NEXT: s_waitcnt vmcnt(0)
583 ; GFX940-NEXT: s_setpc_b64 s[30:31]
584 %vec0 = call <2 x i64> asm "; def $0", "=v"()
585 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 1>
586 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
590 define void @v_shuffle_v2i64_v2i64__0_1(ptr addrspace(1) inreg %ptr) {
591 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_1:
593 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
594 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
595 ; GFX900-NEXT: ;;#ASMSTART
596 ; GFX900-NEXT: ; def v[0:3]
597 ; GFX900-NEXT: ;;#ASMEND
598 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
599 ; GFX900-NEXT: s_waitcnt vmcnt(0)
600 ; GFX900-NEXT: s_setpc_b64 s[30:31]
602 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__0_1:
604 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
605 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
606 ; GFX90A-NEXT: ;;#ASMSTART
607 ; GFX90A-NEXT: ; def v[0:3]
608 ; GFX90A-NEXT: ;;#ASMEND
609 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
610 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
611 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
613 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_1:
615 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
616 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
617 ; GFX940-NEXT: ;;#ASMSTART
618 ; GFX940-NEXT: ; def v[0:3]
619 ; GFX940-NEXT: ;;#ASMEND
620 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
621 ; GFX940-NEXT: s_waitcnt vmcnt(0)
622 ; GFX940-NEXT: s_setpc_b64 s[30:31]
623 %vec0 = call <2 x i64> asm "; def $0", "=v"()
624 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 1>
625 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
629 define void @v_shuffle_v2i64_v2i64__1_1(ptr addrspace(1) inreg %ptr) {
630 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_1:
632 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
633 ; GFX900-NEXT: ;;#ASMSTART
634 ; GFX900-NEXT: ; def v[0:3]
635 ; GFX900-NEXT: ;;#ASMEND
636 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
637 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
638 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
639 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
640 ; GFX900-NEXT: s_waitcnt vmcnt(0)
641 ; GFX900-NEXT: s_setpc_b64 s[30:31]
643 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_1:
645 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
646 ; GFX90A-NEXT: ;;#ASMSTART
647 ; GFX90A-NEXT: ; def v[0:3]
648 ; GFX90A-NEXT: ;;#ASMEND
649 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
650 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
651 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
652 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
653 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
654 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
656 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_1:
658 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
659 ; GFX940-NEXT: ;;#ASMSTART
660 ; GFX940-NEXT: ; def v[0:3]
661 ; GFX940-NEXT: ;;#ASMEND
662 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
663 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
664 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
665 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
666 ; GFX940-NEXT: s_waitcnt vmcnt(0)
667 ; GFX940-NEXT: s_setpc_b64 s[30:31]
668 %vec0 = call <2 x i64> asm "; def $0", "=v"()
669 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 1>
670 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
674 define void @v_shuffle_v2i64_v2i64__2_1(ptr addrspace(1) inreg %ptr) {
675 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__2_1:
677 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
678 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
679 ; GFX900-NEXT: ;;#ASMSTART
680 ; GFX900-NEXT: ; def v[0:3]
681 ; GFX900-NEXT: ;;#ASMEND
682 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
683 ; GFX900-NEXT: s_waitcnt vmcnt(0)
684 ; GFX900-NEXT: s_setpc_b64 s[30:31]
686 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__2_1:
688 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
689 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
690 ; GFX90A-NEXT: ;;#ASMSTART
691 ; GFX90A-NEXT: ; def v[0:3]
692 ; GFX90A-NEXT: ;;#ASMEND
693 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
694 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
695 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
697 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__2_1:
699 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
700 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
701 ; GFX940-NEXT: ;;#ASMSTART
702 ; GFX940-NEXT: ; def v[0:3]
703 ; GFX940-NEXT: ;;#ASMEND
704 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
705 ; GFX940-NEXT: s_waitcnt vmcnt(0)
706 ; GFX940-NEXT: s_setpc_b64 s[30:31]
707 %vec0 = call <2 x i64> asm "; def $0", "=v"()
708 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 1>
709 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
713 define void @v_shuffle_v2i64_v2i64__u_2(ptr addrspace(1) inreg %ptr) {
714 ; GFX9-LABEL: v_shuffle_v2i64_v2i64__u_2:
716 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
717 ; GFX9-NEXT: s_setpc_b64 s[30:31]
718 %vec0 = call <2 x i64> asm "; def $0", "=v"()
719 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 2>
720 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
724 define void @v_shuffle_v2i64_v2i64__0_2(ptr addrspace(1) inreg %ptr) {
725 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_2:
727 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
728 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
729 ; GFX900-NEXT: ;;#ASMSTART
730 ; GFX900-NEXT: ; def v[0:3]
731 ; GFX900-NEXT: ;;#ASMEND
732 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
733 ; GFX900-NEXT: s_waitcnt vmcnt(0)
734 ; GFX900-NEXT: s_setpc_b64 s[30:31]
736 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__0_2:
738 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
739 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
740 ; GFX90A-NEXT: ;;#ASMSTART
741 ; GFX90A-NEXT: ; def v[0:3]
742 ; GFX90A-NEXT: ;;#ASMEND
743 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
744 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
745 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
747 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_2:
749 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
750 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
751 ; GFX940-NEXT: ;;#ASMSTART
752 ; GFX940-NEXT: ; def v[0:3]
753 ; GFX940-NEXT: ;;#ASMEND
754 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
755 ; GFX940-NEXT: s_waitcnt vmcnt(0)
756 ; GFX940-NEXT: s_setpc_b64 s[30:31]
757 %vec0 = call <2 x i64> asm "; def $0", "=v"()
758 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 2>
759 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
763 define void @v_shuffle_v2i64_v2i64__1_2(ptr addrspace(1) inreg %ptr) {
764 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_2:
766 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
767 ; GFX900-NEXT: ;;#ASMSTART
768 ; GFX900-NEXT: ; def v[0:3]
769 ; GFX900-NEXT: ;;#ASMEND
770 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
771 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
772 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
773 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
774 ; GFX900-NEXT: s_waitcnt vmcnt(0)
775 ; GFX900-NEXT: s_setpc_b64 s[30:31]
777 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_2:
779 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
780 ; GFX90A-NEXT: ;;#ASMSTART
781 ; GFX90A-NEXT: ; def v[0:3]
782 ; GFX90A-NEXT: ;;#ASMEND
783 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
784 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
785 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
786 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
787 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
788 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
790 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_2:
792 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
793 ; GFX940-NEXT: ;;#ASMSTART
794 ; GFX940-NEXT: ; def v[0:3]
795 ; GFX940-NEXT: ;;#ASMEND
796 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
797 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
798 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
799 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
800 ; GFX940-NEXT: s_waitcnt vmcnt(0)
801 ; GFX940-NEXT: s_setpc_b64 s[30:31]
802 %vec0 = call <2 x i64> asm "; def $0", "=v"()
803 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 2>
804 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
808 define void @v_shuffle_v2i64_v2i64__2_2(ptr addrspace(1) inreg %ptr) {
809 ; GFX9-LABEL: v_shuffle_v2i64_v2i64__2_2:
811 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
812 ; GFX9-NEXT: s_setpc_b64 s[30:31]
813 %vec0 = call <2 x i64> asm "; def $0", "=v"()
814 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 2>
815 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
819 define void @v_shuffle_v2i64_v2i64__u_3(ptr addrspace(1) inreg %ptr) {
820 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__u_3:
822 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
823 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
824 ; GFX900-NEXT: ;;#ASMSTART
825 ; GFX900-NEXT: ; def v[0:3]
826 ; GFX900-NEXT: ;;#ASMEND
827 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
828 ; GFX900-NEXT: s_waitcnt vmcnt(0)
829 ; GFX900-NEXT: s_setpc_b64 s[30:31]
831 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__u_3:
833 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
834 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
835 ; GFX90A-NEXT: ;;#ASMSTART
836 ; GFX90A-NEXT: ; def v[0:3]
837 ; GFX90A-NEXT: ;;#ASMEND
838 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
839 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
840 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
842 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__u_3:
844 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
845 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
846 ; GFX940-NEXT: ;;#ASMSTART
847 ; GFX940-NEXT: ; def v[0:3]
848 ; GFX940-NEXT: ;;#ASMEND
849 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
850 ; GFX940-NEXT: s_waitcnt vmcnt(0)
851 ; GFX940-NEXT: s_setpc_b64 s[30:31]
852 %vec0 = call <2 x i64> asm "; def $0", "=v"()
853 %vec1 = call <2 x i64> asm "; def $0", "=v"()
854 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 poison, i32 3>
855 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
859 define void @v_shuffle_v2i64_v2i64__0_3(ptr addrspace(1) inreg %ptr) {
860 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__0_3:
862 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
863 ; GFX900-NEXT: ;;#ASMSTART
864 ; GFX900-NEXT: ; def v[0:3]
865 ; GFX900-NEXT: ;;#ASMEND
866 ; GFX900-NEXT: ;;#ASMSTART
867 ; GFX900-NEXT: ; def v[2:5]
868 ; GFX900-NEXT: ;;#ASMEND
869 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
870 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
871 ; GFX900-NEXT: v_mov_b32_e32 v3, v5
872 ; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]
873 ; GFX900-NEXT: s_waitcnt vmcnt(0)
874 ; GFX900-NEXT: s_setpc_b64 s[30:31]
876 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__0_3:
878 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
879 ; GFX90A-NEXT: ;;#ASMSTART
880 ; GFX90A-NEXT: ; def v[0:3]
881 ; GFX90A-NEXT: ;;#ASMEND
882 ; GFX90A-NEXT: ;;#ASMSTART
883 ; GFX90A-NEXT: ; def v[2:5]
884 ; GFX90A-NEXT: ;;#ASMEND
885 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
886 ; GFX90A-NEXT: v_mov_b32_e32 v2, v4
887 ; GFX90A-NEXT: v_mov_b32_e32 v3, v5
888 ; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]
889 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
890 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
892 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__0_3:
894 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
895 ; GFX940-NEXT: ;;#ASMSTART
896 ; GFX940-NEXT: ; def v[0:3]
897 ; GFX940-NEXT: ;;#ASMEND
898 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
899 ; GFX940-NEXT: ;;#ASMSTART
900 ; GFX940-NEXT: ; def v[2:5]
901 ; GFX940-NEXT: ;;#ASMEND
902 ; GFX940-NEXT: s_nop 0
903 ; GFX940-NEXT: v_mov_b32_e32 v2, v4
904 ; GFX940-NEXT: v_mov_b32_e32 v3, v5
905 ; GFX940-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
906 ; GFX940-NEXT: s_waitcnt vmcnt(0)
907 ; GFX940-NEXT: s_setpc_b64 s[30:31]
908 %vec0 = call <2 x i64> asm "; def $0", "=v"()
909 %vec1 = call <2 x i64> asm "; def $0", "=v"()
910 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 0, i32 3>
911 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
915 define void @v_shuffle_v2i64_v2i64__1_3(ptr addrspace(1) inreg %ptr) {
916 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__1_3:
918 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
919 ; GFX900-NEXT: ;;#ASMSTART
920 ; GFX900-NEXT: ; def v[4:7]
921 ; GFX900-NEXT: ;;#ASMEND
922 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
923 ; GFX900-NEXT: ;;#ASMSTART
924 ; GFX900-NEXT: ; def v[0:3]
925 ; GFX900-NEXT: ;;#ASMEND
926 ; GFX900-NEXT: v_mov_b32_e32 v4, v2
927 ; GFX900-NEXT: v_mov_b32_e32 v5, v3
928 ; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]
929 ; GFX900-NEXT: s_waitcnt vmcnt(0)
930 ; GFX900-NEXT: s_setpc_b64 s[30:31]
932 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__1_3:
934 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
935 ; GFX90A-NEXT: ;;#ASMSTART
936 ; GFX90A-NEXT: ; def v[4:7]
937 ; GFX90A-NEXT: ;;#ASMEND
938 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
939 ; GFX90A-NEXT: ;;#ASMSTART
940 ; GFX90A-NEXT: ; def v[0:3]
941 ; GFX90A-NEXT: ;;#ASMEND
942 ; GFX90A-NEXT: v_mov_b32_e32 v4, v2
943 ; GFX90A-NEXT: v_mov_b32_e32 v5, v3
944 ; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]
945 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
946 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
948 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__1_3:
950 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
951 ; GFX940-NEXT: ;;#ASMSTART
952 ; GFX940-NEXT: ; def v[4:7]
953 ; GFX940-NEXT: ;;#ASMEND
954 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
955 ; GFX940-NEXT: ;;#ASMSTART
956 ; GFX940-NEXT: ; def v[0:3]
957 ; GFX940-NEXT: ;;#ASMEND
958 ; GFX940-NEXT: s_nop 0
959 ; GFX940-NEXT: v_mov_b32_e32 v4, v2
960 ; GFX940-NEXT: v_mov_b32_e32 v5, v3
961 ; GFX940-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
962 ; GFX940-NEXT: s_waitcnt vmcnt(0)
963 ; GFX940-NEXT: s_setpc_b64 s[30:31]
964 %vec0 = call <2 x i64> asm "; def $0", "=v"()
965 %vec1 = call <2 x i64> asm "; def $0", "=v"()
966 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 1, i32 3>
967 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
971 define void @v_shuffle_v2i64_v2i64__2_3(ptr addrspace(1) inreg %ptr) {
972 ; GFX900-LABEL: v_shuffle_v2i64_v2i64__2_3:
974 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
975 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
976 ; GFX900-NEXT: ;;#ASMSTART
977 ; GFX900-NEXT: ; def v[0:3]
978 ; GFX900-NEXT: ;;#ASMEND
979 ; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
980 ; GFX900-NEXT: s_waitcnt vmcnt(0)
981 ; GFX900-NEXT: s_setpc_b64 s[30:31]
983 ; GFX90A-LABEL: v_shuffle_v2i64_v2i64__2_3:
985 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
986 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
987 ; GFX90A-NEXT: ;;#ASMSTART
988 ; GFX90A-NEXT: ; def v[0:3]
989 ; GFX90A-NEXT: ;;#ASMEND
990 ; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]
991 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
992 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
994 ; GFX940-LABEL: v_shuffle_v2i64_v2i64__2_3:
996 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
997 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
998 ; GFX940-NEXT: ;;#ASMSTART
999 ; GFX940-NEXT: ; def v[0:3]
1000 ; GFX940-NEXT: ;;#ASMEND
1001 ; GFX940-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1002 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1003 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1004 %vec0 = call <2 x i64> asm "; def $0", "=v"()
1005 %vec1 = call <2 x i64> asm "; def $0", "=v"()
1006 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 2, i32 3>
1007 store <2 x i64> %shuf, ptr addrspace(1) %ptr, align 16
1011 define void @s_shuffle_v2i64_v2i64__u_u() {
1012 ; GFX9-LABEL: s_shuffle_v2i64_v2i64__u_u:
1014 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1015 ; GFX9-NEXT: ;;#ASMSTART
1016 ; GFX9-NEXT: ; use s[8:11]
1017 ; GFX9-NEXT: ;;#ASMEND
1018 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1019 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1020 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> poison
1021 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1025 define void @s_shuffle_v2i64_v2i64__0_u() {
1026 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__0_u:
1028 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1029 ; GFX900-NEXT: ;;#ASMSTART
1030 ; GFX900-NEXT: ; def s[8:11]
1031 ; GFX900-NEXT: ;;#ASMEND
1032 ; GFX900-NEXT: ;;#ASMSTART
1033 ; GFX900-NEXT: ; use s[8:11]
1034 ; GFX900-NEXT: ;;#ASMEND
1035 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1037 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__0_u:
1039 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1040 ; GFX90A-NEXT: ;;#ASMSTART
1041 ; GFX90A-NEXT: ; def s[8:11]
1042 ; GFX90A-NEXT: ;;#ASMEND
1043 ; GFX90A-NEXT: ;;#ASMSTART
1044 ; GFX90A-NEXT: ; use s[8:11]
1045 ; GFX90A-NEXT: ;;#ASMEND
1046 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1048 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__0_u:
1050 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1051 ; GFX940-NEXT: ;;#ASMSTART
1052 ; GFX940-NEXT: ; def s[8:11]
1053 ; GFX940-NEXT: ;;#ASMEND
1054 ; GFX940-NEXT: s_nop 0
1055 ; GFX940-NEXT: ;;#ASMSTART
1056 ; GFX940-NEXT: ; use s[8:11]
1057 ; GFX940-NEXT: ;;#ASMEND
1058 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1059 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1060 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 poison>
1061 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1065 define void @s_shuffle_v2i64_v2i64__1_u() {
1066 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__1_u:
1068 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1069 ; GFX900-NEXT: ;;#ASMSTART
1070 ; GFX900-NEXT: ; def s[4:7]
1071 ; GFX900-NEXT: ;;#ASMEND
1072 ; GFX900-NEXT: s_mov_b32 s8, s6
1073 ; GFX900-NEXT: s_mov_b32 s9, s7
1074 ; GFX900-NEXT: ;;#ASMSTART
1075 ; GFX900-NEXT: ; use s[8:11]
1076 ; GFX900-NEXT: ;;#ASMEND
1077 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1079 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__1_u:
1081 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1082 ; GFX90A-NEXT: ;;#ASMSTART
1083 ; GFX90A-NEXT: ; def s[4:7]
1084 ; GFX90A-NEXT: ;;#ASMEND
1085 ; GFX90A-NEXT: s_mov_b32 s8, s6
1086 ; GFX90A-NEXT: s_mov_b32 s9, s7
1087 ; GFX90A-NEXT: ;;#ASMSTART
1088 ; GFX90A-NEXT: ; use s[8:11]
1089 ; GFX90A-NEXT: ;;#ASMEND
1090 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1092 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__1_u:
1094 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1095 ; GFX940-NEXT: ;;#ASMSTART
1096 ; GFX940-NEXT: ; def s[0:3]
1097 ; GFX940-NEXT: ;;#ASMEND
1098 ; GFX940-NEXT: s_mov_b32 s8, s2
1099 ; GFX940-NEXT: s_mov_b32 s9, s3
1100 ; GFX940-NEXT: ;;#ASMSTART
1101 ; GFX940-NEXT: ; use s[8:11]
1102 ; GFX940-NEXT: ;;#ASMEND
1103 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1104 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1105 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
1106 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1110 define void @s_shuffle_v2i64_v2i64__2_u() {
1111 ; GFX9-LABEL: s_shuffle_v2i64_v2i64__2_u:
1113 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1114 ; GFX9-NEXT: ;;#ASMSTART
1115 ; GFX9-NEXT: ; use s[8:11]
1116 ; GFX9-NEXT: ;;#ASMEND
1117 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1118 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1119 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 poison>
1120 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1124 define void @s_shuffle_v2i64_v2i64__3_u() {
1125 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__3_u:
1127 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1128 ; GFX900-NEXT: ;;#ASMSTART
1129 ; GFX900-NEXT: ; def s[4:7]
1130 ; GFX900-NEXT: ;;#ASMEND
1131 ; GFX900-NEXT: s_mov_b32 s8, s6
1132 ; GFX900-NEXT: s_mov_b32 s9, s7
1133 ; GFX900-NEXT: ;;#ASMSTART
1134 ; GFX900-NEXT: ; use s[8:11]
1135 ; GFX900-NEXT: ;;#ASMEND
1136 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1138 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__3_u:
1140 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1141 ; GFX90A-NEXT: ;;#ASMSTART
1142 ; GFX90A-NEXT: ; def s[4:7]
1143 ; GFX90A-NEXT: ;;#ASMEND
1144 ; GFX90A-NEXT: s_mov_b32 s8, s6
1145 ; GFX90A-NEXT: s_mov_b32 s9, s7
1146 ; GFX90A-NEXT: ;;#ASMSTART
1147 ; GFX90A-NEXT: ; use s[8:11]
1148 ; GFX90A-NEXT: ;;#ASMEND
1149 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1151 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__3_u:
1153 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1154 ; GFX940-NEXT: ;;#ASMSTART
1155 ; GFX940-NEXT: ; def s[0:3]
1156 ; GFX940-NEXT: ;;#ASMEND
1157 ; GFX940-NEXT: s_mov_b32 s8, s2
1158 ; GFX940-NEXT: s_mov_b32 s9, s3
1159 ; GFX940-NEXT: ;;#ASMSTART
1160 ; GFX940-NEXT: ; use s[8:11]
1161 ; GFX940-NEXT: ;;#ASMEND
1162 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1163 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1164 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1165 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 poison>
1166 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1170 define void @s_shuffle_v2i64_v2i64__3_0() {
1171 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__3_0:
1173 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1174 ; GFX900-NEXT: ;;#ASMSTART
1175 ; GFX900-NEXT: ; def s[8:11]
1176 ; GFX900-NEXT: ;;#ASMEND
1177 ; GFX900-NEXT: ;;#ASMSTART
1178 ; GFX900-NEXT: ; def s[4:7]
1179 ; GFX900-NEXT: ;;#ASMEND
1180 ; GFX900-NEXT: s_mov_b32 s8, s10
1181 ; GFX900-NEXT: s_mov_b32 s9, s11
1182 ; GFX900-NEXT: s_mov_b32 s10, s4
1183 ; GFX900-NEXT: s_mov_b32 s11, s5
1184 ; GFX900-NEXT: ;;#ASMSTART
1185 ; GFX900-NEXT: ; use s[8:11]
1186 ; GFX900-NEXT: ;;#ASMEND
1187 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1189 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__3_0:
1191 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1192 ; GFX90A-NEXT: ;;#ASMSTART
1193 ; GFX90A-NEXT: ; def s[8:11]
1194 ; GFX90A-NEXT: ;;#ASMEND
1195 ; GFX90A-NEXT: ;;#ASMSTART
1196 ; GFX90A-NEXT: ; def s[4:7]
1197 ; GFX90A-NEXT: ;;#ASMEND
1198 ; GFX90A-NEXT: s_mov_b32 s8, s10
1199 ; GFX90A-NEXT: s_mov_b32 s9, s11
1200 ; GFX90A-NEXT: s_mov_b32 s10, s4
1201 ; GFX90A-NEXT: s_mov_b32 s11, s5
1202 ; GFX90A-NEXT: ;;#ASMSTART
1203 ; GFX90A-NEXT: ; use s[8:11]
1204 ; GFX90A-NEXT: ;;#ASMEND
1205 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1207 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__3_0:
1209 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1210 ; GFX940-NEXT: ;;#ASMSTART
1211 ; GFX940-NEXT: ; def s[0:3]
1212 ; GFX940-NEXT: ;;#ASMEND
1213 ; GFX940-NEXT: ;;#ASMSTART
1214 ; GFX940-NEXT: ; def s[4:7]
1215 ; GFX940-NEXT: ;;#ASMEND
1216 ; GFX940-NEXT: s_mov_b32 s8, s6
1217 ; GFX940-NEXT: s_mov_b32 s9, s7
1218 ; GFX940-NEXT: s_mov_b32 s10, s0
1219 ; GFX940-NEXT: s_mov_b32 s11, s1
1220 ; GFX940-NEXT: ;;#ASMSTART
1221 ; GFX940-NEXT: ; use s[8:11]
1222 ; GFX940-NEXT: ;;#ASMEND
1223 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1224 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1225 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1226 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 0>
1227 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1231 define void @s_shuffle_v2i64_v2i64__3_1() {
1232 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__3_1:
1234 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1235 ; GFX900-NEXT: ;;#ASMSTART
1236 ; GFX900-NEXT: ; def s[8:11]
1237 ; GFX900-NEXT: ;;#ASMEND
1238 ; GFX900-NEXT: ;;#ASMSTART
1239 ; GFX900-NEXT: ; def s[4:7]
1240 ; GFX900-NEXT: ;;#ASMEND
1241 ; GFX900-NEXT: s_mov_b32 s8, s6
1242 ; GFX900-NEXT: s_mov_b32 s9, s7
1243 ; GFX900-NEXT: ;;#ASMSTART
1244 ; GFX900-NEXT: ; use s[8:11]
1245 ; GFX900-NEXT: ;;#ASMEND
1246 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1248 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__3_1:
1250 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1251 ; GFX90A-NEXT: ;;#ASMSTART
1252 ; GFX90A-NEXT: ; def s[8:11]
1253 ; GFX90A-NEXT: ;;#ASMEND
1254 ; GFX90A-NEXT: ;;#ASMSTART
1255 ; GFX90A-NEXT: ; def s[4:7]
1256 ; GFX90A-NEXT: ;;#ASMEND
1257 ; GFX90A-NEXT: s_mov_b32 s8, s6
1258 ; GFX90A-NEXT: s_mov_b32 s9, s7
1259 ; GFX90A-NEXT: ;;#ASMSTART
1260 ; GFX90A-NEXT: ; use s[8:11]
1261 ; GFX90A-NEXT: ;;#ASMEND
1262 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1264 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__3_1:
1266 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267 ; GFX940-NEXT: ;;#ASMSTART
1268 ; GFX940-NEXT: ; def s[8:11]
1269 ; GFX940-NEXT: ;;#ASMEND
1270 ; GFX940-NEXT: ;;#ASMSTART
1271 ; GFX940-NEXT: ; def s[0:3]
1272 ; GFX940-NEXT: ;;#ASMEND
1273 ; GFX940-NEXT: s_mov_b32 s8, s2
1274 ; GFX940-NEXT: s_mov_b32 s9, s3
1275 ; GFX940-NEXT: ;;#ASMSTART
1276 ; GFX940-NEXT: ; use s[8:11]
1277 ; GFX940-NEXT: ;;#ASMEND
1278 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1279 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1280 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1281 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 1>
1282 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1286 define void @s_shuffle_v2i64_v2i64__3_2() {
1287 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__3_2:
1289 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1290 ; GFX900-NEXT: ;;#ASMSTART
1291 ; GFX900-NEXT: ; def s[4:7]
1292 ; GFX900-NEXT: ;;#ASMEND
1293 ; GFX900-NEXT: s_mov_b32 s8, s6
1294 ; GFX900-NEXT: s_mov_b32 s9, s7
1295 ; GFX900-NEXT: s_mov_b32 s10, s4
1296 ; GFX900-NEXT: s_mov_b32 s11, s5
1297 ; GFX900-NEXT: ;;#ASMSTART
1298 ; GFX900-NEXT: ; use s[8:11]
1299 ; GFX900-NEXT: ;;#ASMEND
1300 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1302 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__3_2:
1304 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1305 ; GFX90A-NEXT: ;;#ASMSTART
1306 ; GFX90A-NEXT: ; def s[4:7]
1307 ; GFX90A-NEXT: ;;#ASMEND
1308 ; GFX90A-NEXT: s_mov_b32 s8, s6
1309 ; GFX90A-NEXT: s_mov_b32 s9, s7
1310 ; GFX90A-NEXT: s_mov_b32 s10, s4
1311 ; GFX90A-NEXT: s_mov_b32 s11, s5
1312 ; GFX90A-NEXT: ;;#ASMSTART
1313 ; GFX90A-NEXT: ; use s[8:11]
1314 ; GFX90A-NEXT: ;;#ASMEND
1315 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1317 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__3_2:
1319 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1320 ; GFX940-NEXT: ;;#ASMSTART
1321 ; GFX940-NEXT: ; def s[0:3]
1322 ; GFX940-NEXT: ;;#ASMEND
1323 ; GFX940-NEXT: s_mov_b32 s8, s2
1324 ; GFX940-NEXT: s_mov_b32 s9, s3
1325 ; GFX940-NEXT: s_mov_b32 s10, s0
1326 ; GFX940-NEXT: s_mov_b32 s11, s1
1327 ; GFX940-NEXT: ;;#ASMSTART
1328 ; GFX940-NEXT: ; use s[8:11]
1329 ; GFX940-NEXT: ;;#ASMEND
1330 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1331 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1332 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1333 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 2>
1334 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1338 define void @s_shuffle_v2i64_v2i64__3_3() {
1339 ; GFX9-LABEL: s_shuffle_v2i64_v2i64__3_3:
1341 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1342 ; GFX9-NEXT: ;;#ASMSTART
1343 ; GFX9-NEXT: ; def s[8:11]
1344 ; GFX9-NEXT: ;;#ASMEND
1345 ; GFX9-NEXT: s_mov_b32 s8, s10
1346 ; GFX9-NEXT: s_mov_b32 s9, s11
1347 ; GFX9-NEXT: ;;#ASMSTART
1348 ; GFX9-NEXT: ; use s[8:11]
1349 ; GFX9-NEXT: ;;#ASMEND
1350 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1351 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1352 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1353 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 3, i32 3>
1354 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1358 define void @s_shuffle_v2i64_v2i64__u_0() {
1359 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__u_0:
1361 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1362 ; GFX900-NEXT: ;;#ASMSTART
1363 ; GFX900-NEXT: ; def s[4:7]
1364 ; GFX900-NEXT: ;;#ASMEND
1365 ; GFX900-NEXT: s_mov_b32 s10, s4
1366 ; GFX900-NEXT: s_mov_b32 s11, s5
1367 ; GFX900-NEXT: ;;#ASMSTART
1368 ; GFX900-NEXT: ; use s[8:11]
1369 ; GFX900-NEXT: ;;#ASMEND
1370 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1372 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__u_0:
1374 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1375 ; GFX90A-NEXT: ;;#ASMSTART
1376 ; GFX90A-NEXT: ; def s[4:7]
1377 ; GFX90A-NEXT: ;;#ASMEND
1378 ; GFX90A-NEXT: s_mov_b32 s10, s4
1379 ; GFX90A-NEXT: s_mov_b32 s11, s5
1380 ; GFX90A-NEXT: ;;#ASMSTART
1381 ; GFX90A-NEXT: ; use s[8:11]
1382 ; GFX90A-NEXT: ;;#ASMEND
1383 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1385 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__u_0:
1387 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1388 ; GFX940-NEXT: ;;#ASMSTART
1389 ; GFX940-NEXT: ; def s[0:3]
1390 ; GFX940-NEXT: ;;#ASMEND
1391 ; GFX940-NEXT: s_mov_b32 s10, s0
1392 ; GFX940-NEXT: s_mov_b32 s11, s1
1393 ; GFX940-NEXT: ;;#ASMSTART
1394 ; GFX940-NEXT: ; use s[8:11]
1395 ; GFX940-NEXT: ;;#ASMEND
1396 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1397 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1398 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 0>
1399 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1403 define void @s_shuffle_v2i64_v2i64__0_0() {
1404 ; GFX9-LABEL: s_shuffle_v2i64_v2i64__0_0:
1406 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1407 ; GFX9-NEXT: ;;#ASMSTART
1408 ; GFX9-NEXT: ; def s[8:11]
1409 ; GFX9-NEXT: ;;#ASMEND
1410 ; GFX9-NEXT: s_mov_b32 s10, s8
1411 ; GFX9-NEXT: s_mov_b32 s11, s9
1412 ; GFX9-NEXT: ;;#ASMSTART
1413 ; GFX9-NEXT: ; use s[8:11]
1414 ; GFX9-NEXT: ;;#ASMEND
1415 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1416 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1417 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> zeroinitializer
1418 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1422 define void @s_shuffle_v2i64_v2i64__1_0() {
1423 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__1_0:
1425 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1426 ; GFX900-NEXT: ;;#ASMSTART
1427 ; GFX900-NEXT: ; def s[4:7]
1428 ; GFX900-NEXT: ;;#ASMEND
1429 ; GFX900-NEXT: s_mov_b32 s8, s6
1430 ; GFX900-NEXT: s_mov_b32 s9, s7
1431 ; GFX900-NEXT: s_mov_b32 s10, s4
1432 ; GFX900-NEXT: s_mov_b32 s11, s5
1433 ; GFX900-NEXT: ;;#ASMSTART
1434 ; GFX900-NEXT: ; use s[8:11]
1435 ; GFX900-NEXT: ;;#ASMEND
1436 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1438 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__1_0:
1440 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1441 ; GFX90A-NEXT: ;;#ASMSTART
1442 ; GFX90A-NEXT: ; def s[4:7]
1443 ; GFX90A-NEXT: ;;#ASMEND
1444 ; GFX90A-NEXT: s_mov_b32 s8, s6
1445 ; GFX90A-NEXT: s_mov_b32 s9, s7
1446 ; GFX90A-NEXT: s_mov_b32 s10, s4
1447 ; GFX90A-NEXT: s_mov_b32 s11, s5
1448 ; GFX90A-NEXT: ;;#ASMSTART
1449 ; GFX90A-NEXT: ; use s[8:11]
1450 ; GFX90A-NEXT: ;;#ASMEND
1451 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1453 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__1_0:
1455 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1456 ; GFX940-NEXT: ;;#ASMSTART
1457 ; GFX940-NEXT: ; def s[0:3]
1458 ; GFX940-NEXT: ;;#ASMEND
1459 ; GFX940-NEXT: s_mov_b32 s8, s2
1460 ; GFX940-NEXT: s_mov_b32 s9, s3
1461 ; GFX940-NEXT: s_mov_b32 s10, s0
1462 ; GFX940-NEXT: s_mov_b32 s11, s1
1463 ; GFX940-NEXT: ;;#ASMSTART
1464 ; GFX940-NEXT: ; use s[8:11]
1465 ; GFX940-NEXT: ;;#ASMEND
1466 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1467 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1468 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
1469 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1473 define void @s_shuffle_v2i64_v2i64__2_0() {
1474 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__2_0:
1476 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1477 ; GFX900-NEXT: ;;#ASMSTART
1478 ; GFX900-NEXT: ; def s[4:7]
1479 ; GFX900-NEXT: ;;#ASMEND
1480 ; GFX900-NEXT: s_mov_b32 s10, s4
1481 ; GFX900-NEXT: s_mov_b32 s11, s5
1482 ; GFX900-NEXT: ;;#ASMSTART
1483 ; GFX900-NEXT: ; use s[8:11]
1484 ; GFX900-NEXT: ;;#ASMEND
1485 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1487 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__2_0:
1489 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1490 ; GFX90A-NEXT: ;;#ASMSTART
1491 ; GFX90A-NEXT: ; def s[4:7]
1492 ; GFX90A-NEXT: ;;#ASMEND
1493 ; GFX90A-NEXT: s_mov_b32 s10, s4
1494 ; GFX90A-NEXT: s_mov_b32 s11, s5
1495 ; GFX90A-NEXT: ;;#ASMSTART
1496 ; GFX90A-NEXT: ; use s[8:11]
1497 ; GFX90A-NEXT: ;;#ASMEND
1498 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1500 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__2_0:
1502 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1503 ; GFX940-NEXT: ;;#ASMSTART
1504 ; GFX940-NEXT: ; def s[0:3]
1505 ; GFX940-NEXT: ;;#ASMEND
1506 ; GFX940-NEXT: s_mov_b32 s10, s0
1507 ; GFX940-NEXT: s_mov_b32 s11, s1
1508 ; GFX940-NEXT: ;;#ASMSTART
1509 ; GFX940-NEXT: ; use s[8:11]
1510 ; GFX940-NEXT: ;;#ASMEND
1511 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1512 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1513 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 0>
1514 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1518 define void @s_shuffle_v2i64_v2i64__u_1() {
1519 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__u_1:
1521 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1522 ; GFX900-NEXT: ;;#ASMSTART
1523 ; GFX900-NEXT: ; def s[8:11]
1524 ; GFX900-NEXT: ;;#ASMEND
1525 ; GFX900-NEXT: ;;#ASMSTART
1526 ; GFX900-NEXT: ; use s[8:11]
1527 ; GFX900-NEXT: ;;#ASMEND
1528 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1530 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__u_1:
1532 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1533 ; GFX90A-NEXT: ;;#ASMSTART
1534 ; GFX90A-NEXT: ; def s[8:11]
1535 ; GFX90A-NEXT: ;;#ASMEND
1536 ; GFX90A-NEXT: ;;#ASMSTART
1537 ; GFX90A-NEXT: ; use s[8:11]
1538 ; GFX90A-NEXT: ;;#ASMEND
1539 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1541 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__u_1:
1543 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1544 ; GFX940-NEXT: ;;#ASMSTART
1545 ; GFX940-NEXT: ; def s[8:11]
1546 ; GFX940-NEXT: ;;#ASMEND
1547 ; GFX940-NEXT: s_nop 0
1548 ; GFX940-NEXT: ;;#ASMSTART
1549 ; GFX940-NEXT: ; use s[8:11]
1550 ; GFX940-NEXT: ;;#ASMEND
1551 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1552 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1553 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 1>
1554 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1558 define void @s_shuffle_v2i64_v2i64__0_1() {
1559 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__0_1:
1561 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1562 ; GFX900-NEXT: ;;#ASMSTART
1563 ; GFX900-NEXT: ; def s[8:11]
1564 ; GFX900-NEXT: ;;#ASMEND
1565 ; GFX900-NEXT: ;;#ASMSTART
1566 ; GFX900-NEXT: ; use s[8:11]
1567 ; GFX900-NEXT: ;;#ASMEND
1568 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1570 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__0_1:
1572 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1573 ; GFX90A-NEXT: ;;#ASMSTART
1574 ; GFX90A-NEXT: ; def s[8:11]
1575 ; GFX90A-NEXT: ;;#ASMEND
1576 ; GFX90A-NEXT: ;;#ASMSTART
1577 ; GFX90A-NEXT: ; use s[8:11]
1578 ; GFX90A-NEXT: ;;#ASMEND
1579 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1581 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__0_1:
1583 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1584 ; GFX940-NEXT: ;;#ASMSTART
1585 ; GFX940-NEXT: ; def s[8:11]
1586 ; GFX940-NEXT: ;;#ASMEND
1587 ; GFX940-NEXT: s_nop 0
1588 ; GFX940-NEXT: ;;#ASMSTART
1589 ; GFX940-NEXT: ; use s[8:11]
1590 ; GFX940-NEXT: ;;#ASMEND
1591 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1592 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1593 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 1>
1594 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1598 define void @s_shuffle_v2i64_v2i64__1_1() {
1599 ; GFX9-LABEL: s_shuffle_v2i64_v2i64__1_1:
1601 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1602 ; GFX9-NEXT: ;;#ASMSTART
1603 ; GFX9-NEXT: ; def s[8:11]
1604 ; GFX9-NEXT: ;;#ASMEND
1605 ; GFX9-NEXT: s_mov_b32 s8, s10
1606 ; GFX9-NEXT: s_mov_b32 s9, s11
1607 ; GFX9-NEXT: ;;#ASMSTART
1608 ; GFX9-NEXT: ; use s[8:11]
1609 ; GFX9-NEXT: ;;#ASMEND
1610 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1611 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1612 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 1>
1613 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1617 define void @s_shuffle_v2i64_v2i64__2_1() {
1618 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__2_1:
1620 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1621 ; GFX900-NEXT: ;;#ASMSTART
1622 ; GFX900-NEXT: ; def s[8:11]
1623 ; GFX900-NEXT: ;;#ASMEND
1624 ; GFX900-NEXT: ;;#ASMSTART
1625 ; GFX900-NEXT: ; use s[8:11]
1626 ; GFX900-NEXT: ;;#ASMEND
1627 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1629 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__2_1:
1631 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1632 ; GFX90A-NEXT: ;;#ASMSTART
1633 ; GFX90A-NEXT: ; def s[8:11]
1634 ; GFX90A-NEXT: ;;#ASMEND
1635 ; GFX90A-NEXT: ;;#ASMSTART
1636 ; GFX90A-NEXT: ; use s[8:11]
1637 ; GFX90A-NEXT: ;;#ASMEND
1638 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1640 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__2_1:
1642 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1643 ; GFX940-NEXT: ;;#ASMSTART
1644 ; GFX940-NEXT: ; def s[8:11]
1645 ; GFX940-NEXT: ;;#ASMEND
1646 ; GFX940-NEXT: s_nop 0
1647 ; GFX940-NEXT: ;;#ASMSTART
1648 ; GFX940-NEXT: ; use s[8:11]
1649 ; GFX940-NEXT: ;;#ASMEND
1650 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1651 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1652 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 1>
1653 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1657 define void @s_shuffle_v2i64_v2i64__u_2() {
1658 ; GFX9-LABEL: s_shuffle_v2i64_v2i64__u_2:
1660 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1661 ; GFX9-NEXT: ;;#ASMSTART
1662 ; GFX9-NEXT: ; use s[8:11]
1663 ; GFX9-NEXT: ;;#ASMEND
1664 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1665 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1666 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 poison, i32 2>
1667 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1671 define void @s_shuffle_v2i64_v2i64__0_2() {
1672 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__0_2:
1674 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1675 ; GFX900-NEXT: ;;#ASMSTART
1676 ; GFX900-NEXT: ; def s[8:11]
1677 ; GFX900-NEXT: ;;#ASMEND
1678 ; GFX900-NEXT: ;;#ASMSTART
1679 ; GFX900-NEXT: ; use s[8:11]
1680 ; GFX900-NEXT: ;;#ASMEND
1681 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1683 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__0_2:
1685 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1686 ; GFX90A-NEXT: ;;#ASMSTART
1687 ; GFX90A-NEXT: ; def s[8:11]
1688 ; GFX90A-NEXT: ;;#ASMEND
1689 ; GFX90A-NEXT: ;;#ASMSTART
1690 ; GFX90A-NEXT: ; use s[8:11]
1691 ; GFX90A-NEXT: ;;#ASMEND
1692 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1694 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__0_2:
1696 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1697 ; GFX940-NEXT: ;;#ASMSTART
1698 ; GFX940-NEXT: ; def s[8:11]
1699 ; GFX940-NEXT: ;;#ASMEND
1700 ; GFX940-NEXT: s_nop 0
1701 ; GFX940-NEXT: ;;#ASMSTART
1702 ; GFX940-NEXT: ; use s[8:11]
1703 ; GFX940-NEXT: ;;#ASMEND
1704 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1705 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1706 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 0, i32 2>
1707 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1711 define void @s_shuffle_v2i64_v2i64__1_2() {
1712 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__1_2:
1714 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1715 ; GFX900-NEXT: ;;#ASMSTART
1716 ; GFX900-NEXT: ; def s[4:7]
1717 ; GFX900-NEXT: ;;#ASMEND
1718 ; GFX900-NEXT: s_mov_b32 s8, s6
1719 ; GFX900-NEXT: s_mov_b32 s9, s7
1720 ; GFX900-NEXT: ;;#ASMSTART
1721 ; GFX900-NEXT: ; use s[8:11]
1722 ; GFX900-NEXT: ;;#ASMEND
1723 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1725 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__1_2:
1727 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1728 ; GFX90A-NEXT: ;;#ASMSTART
1729 ; GFX90A-NEXT: ; def s[4:7]
1730 ; GFX90A-NEXT: ;;#ASMEND
1731 ; GFX90A-NEXT: s_mov_b32 s8, s6
1732 ; GFX90A-NEXT: s_mov_b32 s9, s7
1733 ; GFX90A-NEXT: ;;#ASMSTART
1734 ; GFX90A-NEXT: ; use s[8:11]
1735 ; GFX90A-NEXT: ;;#ASMEND
1736 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1738 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__1_2:
1740 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1741 ; GFX940-NEXT: ;;#ASMSTART
1742 ; GFX940-NEXT: ; def s[0:3]
1743 ; GFX940-NEXT: ;;#ASMEND
1744 ; GFX940-NEXT: s_mov_b32 s8, s2
1745 ; GFX940-NEXT: s_mov_b32 s9, s3
1746 ; GFX940-NEXT: ;;#ASMSTART
1747 ; GFX940-NEXT: ; use s[8:11]
1748 ; GFX940-NEXT: ;;#ASMEND
1749 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1750 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1751 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 1, i32 2>
1752 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1756 define void @s_shuffle_v2i64_v2i64__2_2() {
1757 ; GFX9-LABEL: s_shuffle_v2i64_v2i64__2_2:
1759 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1760 ; GFX9-NEXT: ;;#ASMSTART
1761 ; GFX9-NEXT: ; use s[8:11]
1762 ; GFX9-NEXT: ;;#ASMEND
1763 ; GFX9-NEXT: s_setpc_b64 s[30:31]
1764 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1765 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> poison, <2 x i32> <i32 2, i32 2>
1766 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1770 define void @s_shuffle_v2i64_v2i64__u_3() {
1771 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__u_3:
1773 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1774 ; GFX900-NEXT: ;;#ASMSTART
1775 ; GFX900-NEXT: ; def s[8:11]
1776 ; GFX900-NEXT: ;;#ASMEND
1777 ; GFX900-NEXT: ;;#ASMSTART
1778 ; GFX900-NEXT: ; use s[8:11]
1779 ; GFX900-NEXT: ;;#ASMEND
1780 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1782 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__u_3:
1784 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1785 ; GFX90A-NEXT: ;;#ASMSTART
1786 ; GFX90A-NEXT: ; def s[8:11]
1787 ; GFX90A-NEXT: ;;#ASMEND
1788 ; GFX90A-NEXT: ;;#ASMSTART
1789 ; GFX90A-NEXT: ; use s[8:11]
1790 ; GFX90A-NEXT: ;;#ASMEND
1791 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1793 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__u_3:
1795 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1796 ; GFX940-NEXT: ;;#ASMSTART
1797 ; GFX940-NEXT: ; def s[8:11]
1798 ; GFX940-NEXT: ;;#ASMEND
1799 ; GFX940-NEXT: s_nop 0
1800 ; GFX940-NEXT: ;;#ASMSTART
1801 ; GFX940-NEXT: ; use s[8:11]
1802 ; GFX940-NEXT: ;;#ASMEND
1803 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1804 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1805 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1806 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 poison, i32 3>
1807 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1811 define void @s_shuffle_v2i64_v2i64__0_3() {
1812 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__0_3:
1814 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1815 ; GFX900-NEXT: ;;#ASMSTART
1816 ; GFX900-NEXT: ; def s[8:11]
1817 ; GFX900-NEXT: ;;#ASMEND
1818 ; GFX900-NEXT: ;;#ASMSTART
1819 ; GFX900-NEXT: ; def s[4:7]
1820 ; GFX900-NEXT: ;;#ASMEND
1821 ; GFX900-NEXT: s_mov_b32 s10, s6
1822 ; GFX900-NEXT: s_mov_b32 s11, s7
1823 ; GFX900-NEXT: ;;#ASMSTART
1824 ; GFX900-NEXT: ; use s[8:11]
1825 ; GFX900-NEXT: ;;#ASMEND
1826 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1828 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__0_3:
1830 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1831 ; GFX90A-NEXT: ;;#ASMSTART
1832 ; GFX90A-NEXT: ; def s[8:11]
1833 ; GFX90A-NEXT: ;;#ASMEND
1834 ; GFX90A-NEXT: ;;#ASMSTART
1835 ; GFX90A-NEXT: ; def s[4:7]
1836 ; GFX90A-NEXT: ;;#ASMEND
1837 ; GFX90A-NEXT: s_mov_b32 s10, s6
1838 ; GFX90A-NEXT: s_mov_b32 s11, s7
1839 ; GFX90A-NEXT: ;;#ASMSTART
1840 ; GFX90A-NEXT: ; use s[8:11]
1841 ; GFX90A-NEXT: ;;#ASMEND
1842 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1844 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__0_3:
1846 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1847 ; GFX940-NEXT: ;;#ASMSTART
1848 ; GFX940-NEXT: ; def s[8:11]
1849 ; GFX940-NEXT: ;;#ASMEND
1850 ; GFX940-NEXT: ;;#ASMSTART
1851 ; GFX940-NEXT: ; def s[0:3]
1852 ; GFX940-NEXT: ;;#ASMEND
1853 ; GFX940-NEXT: s_mov_b32 s10, s2
1854 ; GFX940-NEXT: s_mov_b32 s11, s3
1855 ; GFX940-NEXT: ;;#ASMSTART
1856 ; GFX940-NEXT: ; use s[8:11]
1857 ; GFX940-NEXT: ;;#ASMEND
1858 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1859 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1860 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1861 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 0, i32 3>
1862 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1866 define void @s_shuffle_v2i64_v2i64__1_3() {
1867 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__1_3:
1869 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1870 ; GFX900-NEXT: ;;#ASMSTART
1871 ; GFX900-NEXT: ; def s[8:11]
1872 ; GFX900-NEXT: ;;#ASMEND
1873 ; GFX900-NEXT: ;;#ASMSTART
1874 ; GFX900-NEXT: ; def s[4:7]
1875 ; GFX900-NEXT: ;;#ASMEND
1876 ; GFX900-NEXT: s_mov_b32 s8, s6
1877 ; GFX900-NEXT: s_mov_b32 s9, s7
1878 ; GFX900-NEXT: ;;#ASMSTART
1879 ; GFX900-NEXT: ; use s[8:11]
1880 ; GFX900-NEXT: ;;#ASMEND
1881 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1883 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__1_3:
1885 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1886 ; GFX90A-NEXT: ;;#ASMSTART
1887 ; GFX90A-NEXT: ; def s[8:11]
1888 ; GFX90A-NEXT: ;;#ASMEND
1889 ; GFX90A-NEXT: ;;#ASMSTART
1890 ; GFX90A-NEXT: ; def s[4:7]
1891 ; GFX90A-NEXT: ;;#ASMEND
1892 ; GFX90A-NEXT: s_mov_b32 s8, s6
1893 ; GFX90A-NEXT: s_mov_b32 s9, s7
1894 ; GFX90A-NEXT: ;;#ASMSTART
1895 ; GFX90A-NEXT: ; use s[8:11]
1896 ; GFX90A-NEXT: ;;#ASMEND
1897 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1899 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__1_3:
1901 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1902 ; GFX940-NEXT: ;;#ASMSTART
1903 ; GFX940-NEXT: ; def s[8:11]
1904 ; GFX940-NEXT: ;;#ASMEND
1905 ; GFX940-NEXT: ;;#ASMSTART
1906 ; GFX940-NEXT: ; def s[0:3]
1907 ; GFX940-NEXT: ;;#ASMEND
1908 ; GFX940-NEXT: s_mov_b32 s8, s2
1909 ; GFX940-NEXT: s_mov_b32 s9, s3
1910 ; GFX940-NEXT: ;;#ASMSTART
1911 ; GFX940-NEXT: ; use s[8:11]
1912 ; GFX940-NEXT: ;;#ASMEND
1913 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1914 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1915 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1916 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 1, i32 3>
1917 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1921 define void @s_shuffle_v2i64_v2i64__2_3() {
1922 ; GFX900-LABEL: s_shuffle_v2i64_v2i64__2_3:
1924 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1925 ; GFX900-NEXT: ;;#ASMSTART
1926 ; GFX900-NEXT: ; def s[8:11]
1927 ; GFX900-NEXT: ;;#ASMEND
1928 ; GFX900-NEXT: ;;#ASMSTART
1929 ; GFX900-NEXT: ; use s[8:11]
1930 ; GFX900-NEXT: ;;#ASMEND
1931 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1933 ; GFX90A-LABEL: s_shuffle_v2i64_v2i64__2_3:
1935 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1936 ; GFX90A-NEXT: ;;#ASMSTART
1937 ; GFX90A-NEXT: ; def s[8:11]
1938 ; GFX90A-NEXT: ;;#ASMEND
1939 ; GFX90A-NEXT: ;;#ASMSTART
1940 ; GFX90A-NEXT: ; use s[8:11]
1941 ; GFX90A-NEXT: ;;#ASMEND
1942 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1944 ; GFX940-LABEL: s_shuffle_v2i64_v2i64__2_3:
1946 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1947 ; GFX940-NEXT: ;;#ASMSTART
1948 ; GFX940-NEXT: ; def s[8:11]
1949 ; GFX940-NEXT: ;;#ASMEND
1950 ; GFX940-NEXT: s_nop 0
1951 ; GFX940-NEXT: ;;#ASMSTART
1952 ; GFX940-NEXT: ; use s[8:11]
1953 ; GFX940-NEXT: ;;#ASMEND
1954 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1955 %vec0 = call <2 x i64> asm "; def $0", "=s"()
1956 %vec1 = call <2 x i64> asm "; def $0", "=s"()
1957 %shuf = shufflevector <2 x i64> %vec0, <2 x i64> %vec1, <2 x i32> <i32 2, i32 3>
1958 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x i64> %shuf)
1961 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
1962 ; GFX90APLUS: {{.*}}