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_v4p3__u_u_u(ptr addrspace(1) inreg %ptr) {
8 ; GFX9-LABEL: v_shuffle_v3p3_v4p3__u_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 <4 x ptr addrspace(3)> asm "; def $0", "=v"()
13 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> poison
14 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
18 define void @v_shuffle_v3p3_v4p3__0_u_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_u_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_dwordx3 v4, 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_v4p3__0_u_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_dwordx3 v4, 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_v4p3__0_u_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_dwordx3 v4, 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 <4 x ptr addrspace(3)> asm "; def $0", "=v"()
52 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 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
57 define void @v_shuffle_v3p3_v4p3__1_u_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_u_u:
60 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
62 ; GFX900-NEXT: ;;#ASMSTART
63 ; GFX900-NEXT: ; def v[0:3]
64 ; GFX900-NEXT: ;;#ASMEND
65 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
66 ; GFX900-NEXT: s_waitcnt vmcnt(0)
67 ; GFX900-NEXT: s_setpc_b64 s[30:31]
69 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_u_u:
71 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72 ; GFX90A-NEXT: ;;#ASMSTART
73 ; GFX90A-NEXT: ; def v[0:3]
74 ; GFX90A-NEXT: ;;#ASMEND
75 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
76 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
77 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
78 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
79 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
81 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_u_u:
83 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
84 ; GFX940-NEXT: ;;#ASMSTART
85 ; GFX940-NEXT: ; def v[0:3]
86 ; GFX940-NEXT: ;;#ASMEND
87 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
88 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
89 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
90 ; GFX940-NEXT: s_waitcnt vmcnt(0)
91 ; GFX940-NEXT: s_setpc_b64 s[30:31]
92 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
93 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
94 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
98 define void @v_shuffle_v3p3_v4p3__2_u_u(ptr addrspace(1) inreg %ptr) {
99 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_u_u:
101 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
102 ; GFX900-NEXT: ;;#ASMSTART
103 ; GFX900-NEXT: ; def v[0:3]
104 ; GFX900-NEXT: ;;#ASMEND
105 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
106 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
107 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
108 ; GFX900-NEXT: s_waitcnt vmcnt(0)
109 ; GFX900-NEXT: s_setpc_b64 s[30:31]
111 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_u_u:
113 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
114 ; GFX90A-NEXT: ;;#ASMSTART
115 ; GFX90A-NEXT: ; def v[0:3]
116 ; GFX90A-NEXT: ;;#ASMEND
117 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
118 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
119 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
120 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
121 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
123 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_u_u:
125 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
126 ; GFX940-NEXT: ;;#ASMSTART
127 ; GFX940-NEXT: ; def v[0:3]
128 ; GFX940-NEXT: ;;#ASMEND
129 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
130 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
131 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
132 ; GFX940-NEXT: s_waitcnt vmcnt(0)
133 ; GFX940-NEXT: s_setpc_b64 s[30:31]
134 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
135 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
136 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
140 define void @v_shuffle_v3p3_v4p3__3_u_u(ptr addrspace(1) inreg %ptr) {
141 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_u_u:
143 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
144 ; GFX900-NEXT: ;;#ASMSTART
145 ; GFX900-NEXT: ; def v[0:3]
146 ; GFX900-NEXT: ;;#ASMEND
147 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
148 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
149 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
150 ; GFX900-NEXT: s_waitcnt vmcnt(0)
151 ; GFX900-NEXT: s_setpc_b64 s[30:31]
153 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_u_u:
155 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
156 ; GFX90A-NEXT: ;;#ASMSTART
157 ; GFX90A-NEXT: ; def v[0:3]
158 ; GFX90A-NEXT: ;;#ASMEND
159 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
160 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
161 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
162 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
163 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
165 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_u_u:
167 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
168 ; GFX940-NEXT: ;;#ASMSTART
169 ; GFX940-NEXT: ; def v[0:3]
170 ; GFX940-NEXT: ;;#ASMEND
171 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
172 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
173 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
174 ; GFX940-NEXT: s_waitcnt vmcnt(0)
175 ; GFX940-NEXT: s_setpc_b64 s[30:31]
176 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
177 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 poison, i32 poison>
178 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
182 define void @v_shuffle_v3p3_v4p3__4_u_u(ptr addrspace(1) inreg %ptr) {
183 ; GFX9-LABEL: v_shuffle_v3p3_v4p3__4_u_u:
185 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
186 ; GFX9-NEXT: s_setpc_b64 s[30:31]
187 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
188 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 poison, i32 poison>
189 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
193 define void @v_shuffle_v3p3_v4p3__5_u_u(ptr addrspace(1) inreg %ptr) {
194 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_u_u:
196 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
197 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
198 ; GFX900-NEXT: ;;#ASMSTART
199 ; GFX900-NEXT: ; def v[0:3]
200 ; GFX900-NEXT: ;;#ASMEND
201 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
202 ; GFX900-NEXT: s_waitcnt vmcnt(0)
203 ; GFX900-NEXT: s_setpc_b64 s[30:31]
205 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_u_u:
207 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
208 ; GFX90A-NEXT: ;;#ASMSTART
209 ; GFX90A-NEXT: ; def v[0:3]
210 ; GFX90A-NEXT: ;;#ASMEND
211 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
212 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
213 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
214 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
215 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
217 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_u_u:
219 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
220 ; GFX940-NEXT: ;;#ASMSTART
221 ; GFX940-NEXT: ; def v[0:3]
222 ; GFX940-NEXT: ;;#ASMEND
223 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
224 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
225 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
226 ; GFX940-NEXT: s_waitcnt vmcnt(0)
227 ; GFX940-NEXT: s_setpc_b64 s[30:31]
228 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
229 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
230 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>
231 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
235 define void @v_shuffle_v3p3_v4p3__6_u_u(ptr addrspace(1) inreg %ptr) {
236 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_u_u:
238 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
239 ; GFX900-NEXT: ;;#ASMSTART
240 ; GFX900-NEXT: ; def v[0:3]
241 ; GFX900-NEXT: ;;#ASMEND
242 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
243 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
244 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
245 ; GFX900-NEXT: s_waitcnt vmcnt(0)
246 ; GFX900-NEXT: s_setpc_b64 s[30:31]
248 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_u_u:
250 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
251 ; GFX90A-NEXT: ;;#ASMSTART
252 ; GFX90A-NEXT: ; def v[0:3]
253 ; GFX90A-NEXT: ;;#ASMEND
254 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
255 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
256 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
257 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
258 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
260 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_u_u:
262 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
263 ; GFX940-NEXT: ;;#ASMSTART
264 ; GFX940-NEXT: ; def v[0:3]
265 ; GFX940-NEXT: ;;#ASMEND
266 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
267 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
268 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
269 ; GFX940-NEXT: s_waitcnt vmcnt(0)
270 ; GFX940-NEXT: s_setpc_b64 s[30:31]
271 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
272 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
273 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 poison, i32 poison>
274 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
278 define void @v_shuffle_v3p3_v4p3__7_u_u(ptr addrspace(1) inreg %ptr) {
279 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_u:
281 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
282 ; GFX900-NEXT: ;;#ASMSTART
283 ; GFX900-NEXT: ; def v[0:3]
284 ; GFX900-NEXT: ;;#ASMEND
285 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
286 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
287 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
288 ; GFX900-NEXT: s_waitcnt vmcnt(0)
289 ; GFX900-NEXT: s_setpc_b64 s[30:31]
291 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_u:
293 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
294 ; GFX90A-NEXT: ;;#ASMSTART
295 ; GFX90A-NEXT: ; def v[0:3]
296 ; GFX90A-NEXT: ;;#ASMEND
297 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
298 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
299 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
300 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
301 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
303 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_u:
305 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
306 ; GFX940-NEXT: ;;#ASMSTART
307 ; GFX940-NEXT: ; def v[0:3]
308 ; GFX940-NEXT: ;;#ASMEND
309 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
310 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
311 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
312 ; GFX940-NEXT: s_waitcnt vmcnt(0)
313 ; GFX940-NEXT: s_setpc_b64 s[30:31]
314 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
315 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
316 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 poison>
317 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
321 define void @v_shuffle_v3p3_v4p3__7_0_u(ptr addrspace(1) inreg %ptr) {
322 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_u:
324 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
325 ; GFX900-NEXT: ;;#ASMSTART
326 ; GFX900-NEXT: ; def v[0:3]
327 ; GFX900-NEXT: ;;#ASMEND
328 ; GFX900-NEXT: ;;#ASMSTART
329 ; GFX900-NEXT: ; def v[1:4]
330 ; GFX900-NEXT: ;;#ASMEND
331 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
332 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
333 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
334 ; GFX900-NEXT: global_store_dwordx3 v5, v[1: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_v3p3_v4p3__7_0_u:
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: ;;#ASMSTART
345 ; GFX90A-NEXT: ; def v[2:5]
346 ; GFX90A-NEXT: ;;#ASMEND
347 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
348 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
349 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
350 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
351 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
352 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
354 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_u:
356 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
357 ; GFX940-NEXT: ;;#ASMSTART
358 ; GFX940-NEXT: ; def v[0:3]
359 ; GFX940-NEXT: ;;#ASMEND
360 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
361 ; GFX940-NEXT: ;;#ASMSTART
362 ; GFX940-NEXT: ; def v[2:5]
363 ; GFX940-NEXT: ;;#ASMEND
364 ; GFX940-NEXT: s_nop 0
365 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
366 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
367 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
368 ; GFX940-NEXT: s_waitcnt vmcnt(0)
369 ; GFX940-NEXT: s_setpc_b64 s[30:31]
370 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
371 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
372 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 poison>
373 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
377 define void @v_shuffle_v3p3_v4p3__7_1_u(ptr addrspace(1) inreg %ptr) {
378 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_u:
380 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
381 ; GFX900-NEXT: ;;#ASMSTART
382 ; GFX900-NEXT: ; def v[0:3]
383 ; GFX900-NEXT: ;;#ASMEND
384 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
385 ; GFX900-NEXT: ;;#ASMSTART
386 ; GFX900-NEXT: ; def v[2:5]
387 ; GFX900-NEXT: ;;#ASMEND
388 ; GFX900-NEXT: v_mov_b32_e32 v0, v5
389 ; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
390 ; GFX900-NEXT: s_waitcnt vmcnt(0)
391 ; GFX900-NEXT: s_setpc_b64 s[30:31]
393 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_u:
395 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
396 ; GFX90A-NEXT: ;;#ASMSTART
397 ; GFX90A-NEXT: ; def v[0:3]
398 ; GFX90A-NEXT: ;;#ASMEND
399 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
400 ; GFX90A-NEXT: ;;#ASMSTART
401 ; GFX90A-NEXT: ; def v[2:5]
402 ; GFX90A-NEXT: ;;#ASMEND
403 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
404 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
405 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
406 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
408 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_u:
410 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
411 ; GFX940-NEXT: ;;#ASMSTART
412 ; GFX940-NEXT: ; def v[0:3]
413 ; GFX940-NEXT: ;;#ASMEND
414 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
415 ; GFX940-NEXT: ;;#ASMSTART
416 ; GFX940-NEXT: ; def v[2:5]
417 ; GFX940-NEXT: ;;#ASMEND
418 ; GFX940-NEXT: s_nop 0
419 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
420 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
421 ; GFX940-NEXT: s_waitcnt vmcnt(0)
422 ; GFX940-NEXT: s_setpc_b64 s[30:31]
423 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
424 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
425 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 poison>
426 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
430 define void @v_shuffle_v3p3_v4p3__7_2_u(ptr addrspace(1) inreg %ptr) {
431 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_u:
433 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
434 ; GFX900-NEXT: ;;#ASMSTART
435 ; GFX900-NEXT: ; def v[0:3]
436 ; GFX900-NEXT: ;;#ASMEND
437 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
438 ; GFX900-NEXT: ;;#ASMSTART
439 ; GFX900-NEXT: ; def v[3:6]
440 ; GFX900-NEXT: ;;#ASMEND
441 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
442 ; GFX900-NEXT: global_store_dwordx3 v7, v[1:3], s[16:17]
443 ; GFX900-NEXT: s_waitcnt vmcnt(0)
444 ; GFX900-NEXT: s_setpc_b64 s[30:31]
446 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_u:
448 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
449 ; GFX90A-NEXT: ;;#ASMSTART
450 ; GFX90A-NEXT: ; def v[0:3]
451 ; GFX90A-NEXT: ;;#ASMEND
452 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
453 ; GFX90A-NEXT: ;;#ASMSTART
454 ; GFX90A-NEXT: ; def v[4:7]
455 ; GFX90A-NEXT: ;;#ASMEND
456 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
457 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
458 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
459 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
460 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
462 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_u:
464 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
465 ; GFX940-NEXT: ;;#ASMSTART
466 ; GFX940-NEXT: ; def v[0:3]
467 ; GFX940-NEXT: ;;#ASMEND
468 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
469 ; GFX940-NEXT: ;;#ASMSTART
470 ; GFX940-NEXT: ; def v[4:7]
471 ; GFX940-NEXT: ;;#ASMEND
472 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
473 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
474 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
475 ; GFX940-NEXT: s_waitcnt vmcnt(0)
476 ; GFX940-NEXT: s_setpc_b64 s[30:31]
477 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
478 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
479 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 poison>
480 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
484 define void @v_shuffle_v3p3_v4p3__7_3_u(ptr addrspace(1) inreg %ptr) {
485 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_u:
487 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
488 ; GFX900-NEXT: ;;#ASMSTART
489 ; GFX900-NEXT: ; def v[0:3]
490 ; GFX900-NEXT: ;;#ASMEND
491 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
492 ; GFX900-NEXT: ;;#ASMSTART
493 ; GFX900-NEXT: ; def v[4:7]
494 ; GFX900-NEXT: ;;#ASMEND
495 ; GFX900-NEXT: v_mov_b32_e32 v0, v7
496 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
497 ; GFX900-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
498 ; GFX900-NEXT: s_waitcnt vmcnt(0)
499 ; GFX900-NEXT: s_setpc_b64 s[30:31]
501 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_u:
503 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
504 ; GFX90A-NEXT: ;;#ASMSTART
505 ; GFX90A-NEXT: ; def v[0:3]
506 ; GFX90A-NEXT: ;;#ASMEND
507 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
508 ; GFX90A-NEXT: ;;#ASMSTART
509 ; GFX90A-NEXT: ; def v[4:7]
510 ; GFX90A-NEXT: ;;#ASMEND
511 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
512 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
513 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
514 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
515 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
517 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_u:
519 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
520 ; GFX940-NEXT: ;;#ASMSTART
521 ; GFX940-NEXT: ; def v[0:3]
522 ; GFX940-NEXT: ;;#ASMEND
523 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
524 ; GFX940-NEXT: ;;#ASMSTART
525 ; GFX940-NEXT: ; def v[4:7]
526 ; GFX940-NEXT: ;;#ASMEND
527 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
528 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
529 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
530 ; GFX940-NEXT: s_waitcnt vmcnt(0)
531 ; GFX940-NEXT: s_setpc_b64 s[30:31]
532 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
533 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
534 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 poison>
535 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
539 define void @v_shuffle_v3p3_v4p3__7_4_u(ptr addrspace(1) inreg %ptr) {
540 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_u:
542 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
543 ; GFX900-NEXT: ;;#ASMSTART
544 ; GFX900-NEXT: ; def v[0:3]
545 ; GFX900-NEXT: ;;#ASMEND
546 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
547 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
548 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
549 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
550 ; GFX900-NEXT: s_waitcnt vmcnt(0)
551 ; GFX900-NEXT: s_setpc_b64 s[30:31]
553 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_u:
555 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
556 ; GFX90A-NEXT: ;;#ASMSTART
557 ; GFX90A-NEXT: ; def v[0:3]
558 ; GFX90A-NEXT: ;;#ASMEND
559 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
560 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
561 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
562 ; GFX90A-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]
563 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
564 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
566 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_u:
568 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
569 ; GFX940-NEXT: ;;#ASMSTART
570 ; GFX940-NEXT: ; def v[0:3]
571 ; GFX940-NEXT: ;;#ASMEND
572 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
573 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
574 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
575 ; GFX940-NEXT: global_store_dwordx3 v4, v[2:4], s[0:1] sc0 sc1
576 ; GFX940-NEXT: s_waitcnt vmcnt(0)
577 ; GFX940-NEXT: s_setpc_b64 s[30:31]
578 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
579 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
580 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 poison>
581 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
585 define void @v_shuffle_v3p3_v4p3__7_5_u(ptr addrspace(1) inreg %ptr) {
586 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_u:
588 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
589 ; GFX900-NEXT: ;;#ASMSTART
590 ; GFX900-NEXT: ; def v[0:3]
591 ; GFX900-NEXT: ;;#ASMEND
592 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
593 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
594 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
595 ; GFX900-NEXT: s_waitcnt vmcnt(0)
596 ; GFX900-NEXT: s_setpc_b64 s[30:31]
598 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_u:
600 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
601 ; GFX90A-NEXT: ;;#ASMSTART
602 ; GFX90A-NEXT: ; def v[0:3]
603 ; GFX90A-NEXT: ;;#ASMEND
604 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
605 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
606 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
607 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
608 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
610 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_u:
612 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
613 ; GFX940-NEXT: ;;#ASMSTART
614 ; GFX940-NEXT: ; def v[0:3]
615 ; GFX940-NEXT: ;;#ASMEND
616 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
617 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
618 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
619 ; GFX940-NEXT: s_waitcnt vmcnt(0)
620 ; GFX940-NEXT: s_setpc_b64 s[30:31]
621 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
622 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
623 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 poison>
624 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
628 define void @v_shuffle_v3p3_v4p3__7_6_u(ptr addrspace(1) inreg %ptr) {
629 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_u:
631 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
632 ; GFX900-NEXT: ;;#ASMSTART
633 ; GFX900-NEXT: ; def v[0:3]
634 ; GFX900-NEXT: ;;#ASMEND
635 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
636 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
637 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
638 ; GFX900-NEXT: s_waitcnt vmcnt(0)
639 ; GFX900-NEXT: s_setpc_b64 s[30:31]
641 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_u:
643 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
644 ; GFX90A-NEXT: ;;#ASMSTART
645 ; GFX90A-NEXT: ; def v[0:3]
646 ; GFX90A-NEXT: ;;#ASMEND
647 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
648 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
649 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
650 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
651 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
652 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
654 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_u:
656 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
657 ; GFX940-NEXT: ;;#ASMSTART
658 ; GFX940-NEXT: ; def v[0:3]
659 ; GFX940-NEXT: ;;#ASMEND
660 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
661 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
662 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
663 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
664 ; GFX940-NEXT: s_waitcnt vmcnt(0)
665 ; GFX940-NEXT: s_setpc_b64 s[30:31]
666 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
667 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
668 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 poison>
669 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
673 define void @v_shuffle_v3p3_v4p3__7_7_u(ptr addrspace(1) inreg %ptr) {
674 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_u:
676 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
677 ; GFX900-NEXT: ;;#ASMSTART
678 ; GFX900-NEXT: ; def v[0:3]
679 ; GFX900-NEXT: ;;#ASMEND
680 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
681 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
682 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
683 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
684 ; GFX900-NEXT: s_waitcnt vmcnt(0)
685 ; GFX900-NEXT: s_setpc_b64 s[30:31]
687 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_u:
689 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
690 ; GFX90A-NEXT: ;;#ASMSTART
691 ; GFX90A-NEXT: ; def v[0:3]
692 ; GFX90A-NEXT: ;;#ASMEND
693 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
694 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
695 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
696 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
697 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
698 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
700 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_u:
702 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
703 ; GFX940-NEXT: ;;#ASMSTART
704 ; GFX940-NEXT: ; def v[0:3]
705 ; GFX940-NEXT: ;;#ASMEND
706 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
707 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
708 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
709 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
710 ; GFX940-NEXT: s_waitcnt vmcnt(0)
711 ; GFX940-NEXT: s_setpc_b64 s[30:31]
712 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
713 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
714 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 poison>
715 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
719 define void @v_shuffle_v3p3_v4p3__7_7_0(ptr addrspace(1) inreg %ptr) {
720 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_0:
722 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
723 ; GFX900-NEXT: ;;#ASMSTART
724 ; GFX900-NEXT: ; def v[0:3]
725 ; GFX900-NEXT: ;;#ASMEND
726 ; GFX900-NEXT: ;;#ASMSTART
727 ; GFX900-NEXT: ; def v[1:4]
728 ; GFX900-NEXT: ;;#ASMEND
729 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
730 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
731 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
732 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
733 ; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]
734 ; GFX900-NEXT: s_waitcnt vmcnt(0)
735 ; GFX900-NEXT: s_setpc_b64 s[30:31]
737 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_0:
739 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
740 ; GFX90A-NEXT: ;;#ASMSTART
741 ; GFX90A-NEXT: ; def v[0:3]
742 ; GFX90A-NEXT: ;;#ASMEND
743 ; GFX90A-NEXT: ;;#ASMSTART
744 ; GFX90A-NEXT: ; def v[2:5]
745 ; GFX90A-NEXT: ;;#ASMEND
746 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
747 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
748 ; GFX90A-NEXT: v_mov_b32_e32 v3, v5
749 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
750 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
751 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
752 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
754 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_0:
756 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
757 ; GFX940-NEXT: ;;#ASMSTART
758 ; GFX940-NEXT: ; def v[0:3]
759 ; GFX940-NEXT: ;;#ASMEND
760 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
761 ; GFX940-NEXT: ;;#ASMSTART
762 ; GFX940-NEXT: ; def v[2:5]
763 ; GFX940-NEXT: ;;#ASMEND
764 ; GFX940-NEXT: s_nop 0
765 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
766 ; GFX940-NEXT: v_mov_b32_e32 v3, v5
767 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
768 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
769 ; GFX940-NEXT: s_waitcnt vmcnt(0)
770 ; GFX940-NEXT: s_setpc_b64 s[30:31]
771 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
772 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
773 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 0>
774 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
778 define void @v_shuffle_v3p3_v4p3__7_7_1(ptr addrspace(1) inreg %ptr) {
779 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_1:
781 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
782 ; GFX900-NEXT: ;;#ASMSTART
783 ; GFX900-NEXT: ; def v[0:3]
784 ; GFX900-NEXT: ;;#ASMEND
785 ; GFX900-NEXT: ;;#ASMSTART
786 ; GFX900-NEXT: ; def v[2:5]
787 ; GFX900-NEXT: ;;#ASMEND
788 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
789 ; GFX900-NEXT: v_mov_b32_e32 v2, v5
790 ; GFX900-NEXT: v_mov_b32_e32 v3, v5
791 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
792 ; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
793 ; GFX900-NEXT: s_waitcnt vmcnt(0)
794 ; GFX900-NEXT: s_setpc_b64 s[30:31]
796 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_1:
798 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
799 ; GFX90A-NEXT: ;;#ASMSTART
800 ; GFX90A-NEXT: ; def v[0:3]
801 ; GFX90A-NEXT: ;;#ASMEND
802 ; GFX90A-NEXT: ;;#ASMSTART
803 ; GFX90A-NEXT: ; def v[2:5]
804 ; GFX90A-NEXT: ;;#ASMEND
805 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
806 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
807 ; GFX90A-NEXT: v_mov_b32_e32 v3, v5
808 ; GFX90A-NEXT: v_mov_b32_e32 v4, v1
809 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
810 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
811 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
813 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_1:
815 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
816 ; GFX940-NEXT: ;;#ASMSTART
817 ; GFX940-NEXT: ; def v[0:3]
818 ; GFX940-NEXT: ;;#ASMEND
819 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
820 ; GFX940-NEXT: ;;#ASMSTART
821 ; GFX940-NEXT: ; def v[2:5]
822 ; GFX940-NEXT: ;;#ASMEND
823 ; GFX940-NEXT: s_nop 0
824 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
825 ; GFX940-NEXT: v_mov_b32_e32 v3, v5
826 ; GFX940-NEXT: v_mov_b32_e32 v4, v1
827 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
828 ; GFX940-NEXT: s_waitcnt vmcnt(0)
829 ; GFX940-NEXT: s_setpc_b64 s[30:31]
830 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
831 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
832 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 1>
833 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
837 define void @v_shuffle_v3p3_v4p3__7_7_2(ptr addrspace(1) inreg %ptr) {
838 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_2:
840 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
841 ; GFX900-NEXT: ;;#ASMSTART
842 ; GFX900-NEXT: ; def v[0:3]
843 ; GFX900-NEXT: ;;#ASMEND
844 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
845 ; GFX900-NEXT: ;;#ASMSTART
846 ; GFX900-NEXT: ; def v[3:6]
847 ; GFX900-NEXT: ;;#ASMEND
848 ; GFX900-NEXT: v_mov_b32_e32 v0, v6
849 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
850 ; GFX900-NEXT: global_store_dwordx3 v7, v[0:2], s[16:17]
851 ; GFX900-NEXT: s_waitcnt vmcnt(0)
852 ; GFX900-NEXT: s_setpc_b64 s[30:31]
854 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_2:
856 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857 ; GFX90A-NEXT: ;;#ASMSTART
858 ; GFX90A-NEXT: ; def v[0:3]
859 ; GFX90A-NEXT: ;;#ASMEND
860 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
861 ; GFX90A-NEXT: ;;#ASMSTART
862 ; GFX90A-NEXT: ; def v[4:7]
863 ; GFX90A-NEXT: ;;#ASMEND
864 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
865 ; GFX90A-NEXT: v_mov_b32_e32 v1, v7
866 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
867 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
868 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
870 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_2:
872 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
873 ; GFX940-NEXT: ;;#ASMSTART
874 ; GFX940-NEXT: ; def v[0:3]
875 ; GFX940-NEXT: ;;#ASMEND
876 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
877 ; GFX940-NEXT: ;;#ASMSTART
878 ; GFX940-NEXT: ; def v[4:7]
879 ; GFX940-NEXT: ;;#ASMEND
880 ; GFX940-NEXT: s_nop 0
881 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
882 ; GFX940-NEXT: v_mov_b32_e32 v1, v7
883 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
884 ; GFX940-NEXT: s_waitcnt vmcnt(0)
885 ; GFX940-NEXT: s_setpc_b64 s[30:31]
886 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
887 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
888 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 2>
889 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
893 define void @v_shuffle_v3p3_v4p3__7_7_3(ptr addrspace(1) inreg %ptr) {
894 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_3:
896 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
897 ; GFX900-NEXT: ;;#ASMSTART
898 ; GFX900-NEXT: ; def v[0:3]
899 ; GFX900-NEXT: ;;#ASMEND
900 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
901 ; GFX900-NEXT: ;;#ASMSTART
902 ; GFX900-NEXT: ; def v[4:7]
903 ; GFX900-NEXT: ;;#ASMEND
904 ; GFX900-NEXT: v_mov_b32_e32 v1, v7
905 ; GFX900-NEXT: v_mov_b32_e32 v2, v7
906 ; GFX900-NEXT: global_store_dwordx3 v8, v[1:3], s[16:17]
907 ; GFX900-NEXT: s_waitcnt vmcnt(0)
908 ; GFX900-NEXT: s_setpc_b64 s[30:31]
910 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_3:
912 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
913 ; GFX90A-NEXT: ;;#ASMSTART
914 ; GFX90A-NEXT: ; def v[0:3]
915 ; GFX90A-NEXT: ;;#ASMEND
916 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
917 ; GFX90A-NEXT: ;;#ASMSTART
918 ; GFX90A-NEXT: ; def v[4:7]
919 ; GFX90A-NEXT: ;;#ASMEND
920 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
921 ; GFX90A-NEXT: v_mov_b32_e32 v1, v7
922 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
923 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
924 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
925 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
927 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_3:
929 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
930 ; GFX940-NEXT: ;;#ASMSTART
931 ; GFX940-NEXT: ; def v[0:3]
932 ; GFX940-NEXT: ;;#ASMEND
933 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
934 ; GFX940-NEXT: ;;#ASMSTART
935 ; GFX940-NEXT: ; def v[4:7]
936 ; GFX940-NEXT: ;;#ASMEND
937 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
938 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
939 ; GFX940-NEXT: v_mov_b32_e32 v1, v7
940 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
941 ; GFX940-NEXT: s_waitcnt vmcnt(0)
942 ; GFX940-NEXT: s_setpc_b64 s[30:31]
943 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
944 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
945 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 3>
946 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
950 define void @v_shuffle_v3p3_v4p3__7_7_4(ptr addrspace(1) inreg %ptr) {
951 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_4:
953 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
954 ; GFX900-NEXT: ;;#ASMSTART
955 ; GFX900-NEXT: ; def v[0:3]
956 ; GFX900-NEXT: ;;#ASMEND
957 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
958 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
959 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
960 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
961 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
962 ; GFX900-NEXT: s_waitcnt vmcnt(0)
963 ; GFX900-NEXT: s_setpc_b64 s[30:31]
965 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_4:
967 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
968 ; GFX90A-NEXT: ;;#ASMSTART
969 ; GFX90A-NEXT: ; def v[0:3]
970 ; GFX90A-NEXT: ;;#ASMEND
971 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
972 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
973 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
974 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
975 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
976 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
978 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_4:
980 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
981 ; GFX940-NEXT: ;;#ASMSTART
982 ; GFX940-NEXT: ; def v[0:3]
983 ; GFX940-NEXT: ;;#ASMEND
984 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
985 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
986 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
987 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
988 ; GFX940-NEXT: s_waitcnt vmcnt(0)
989 ; GFX940-NEXT: s_setpc_b64 s[30:31]
990 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
991 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
992 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 4>
993 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
997 define void @v_shuffle_v3p3_v4p3__7_7_5(ptr addrspace(1) inreg %ptr) {
998 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_5:
1000 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1001 ; GFX900-NEXT: ;;#ASMSTART
1002 ; GFX900-NEXT: ; def v[0:3]
1003 ; GFX900-NEXT: ;;#ASMEND
1004 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1005 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
1006 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
1007 ; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
1008 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1009 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1011 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_5:
1013 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1014 ; GFX90A-NEXT: ;;#ASMSTART
1015 ; GFX90A-NEXT: ; def v[0:3]
1016 ; GFX90A-NEXT: ;;#ASMEND
1017 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
1018 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
1019 ; GFX90A-NEXT: v_mov_b32_e32 v4, v1
1020 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
1021 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1022 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1024 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_5:
1026 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1027 ; GFX940-NEXT: ;;#ASMSTART
1028 ; GFX940-NEXT: ; def v[0:3]
1029 ; GFX940-NEXT: ;;#ASMEND
1030 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
1031 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
1032 ; GFX940-NEXT: v_mov_b32_e32 v4, v1
1033 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
1034 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1035 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1036 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1037 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1038 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 5>
1039 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1043 define void @v_shuffle_v3p3_v4p3__7_7_6(ptr addrspace(1) inreg %ptr) {
1044 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_6:
1046 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1047 ; GFX900-NEXT: ;;#ASMSTART
1048 ; GFX900-NEXT: ; def v[0:3]
1049 ; GFX900-NEXT: ;;#ASMEND
1050 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1051 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
1052 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
1053 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1054 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1055 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1057 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_6:
1059 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1060 ; GFX90A-NEXT: ;;#ASMSTART
1061 ; GFX90A-NEXT: ; def v[0:3]
1062 ; GFX90A-NEXT: ;;#ASMEND
1063 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1064 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
1065 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
1066 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1067 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1068 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1070 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_6:
1072 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1073 ; GFX940-NEXT: ;;#ASMSTART
1074 ; GFX940-NEXT: ; def v[0:3]
1075 ; GFX940-NEXT: ;;#ASMEND
1076 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1077 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
1078 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
1079 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1080 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1081 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1082 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1083 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1084 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 6>
1085 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1089 define void @v_shuffle_v3p3_v4p3__7_7_7(ptr addrspace(1) inreg %ptr) {
1090 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_7:
1092 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1093 ; GFX900-NEXT: ;;#ASMSTART
1094 ; GFX900-NEXT: ; def v[0:3]
1095 ; GFX900-NEXT: ;;#ASMEND
1096 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1097 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
1098 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
1099 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
1100 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1101 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1103 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_7:
1105 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1106 ; GFX90A-NEXT: ;;#ASMSTART
1107 ; GFX90A-NEXT: ; def v[0:3]
1108 ; GFX90A-NEXT: ;;#ASMEND
1109 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1110 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
1111 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
1112 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
1113 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1114 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1115 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1117 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_7_7:
1119 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1120 ; GFX940-NEXT: ;;#ASMSTART
1121 ; GFX940-NEXT: ; def v[0:3]
1122 ; GFX940-NEXT: ;;#ASMEND
1123 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1124 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
1125 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
1126 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
1127 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1128 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1129 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1130 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1131 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1132 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 7>
1133 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1137 define void @v_shuffle_v3p3_v4p3__u_0_0(ptr addrspace(1) inreg %ptr) {
1138 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_0_0:
1140 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1141 ; GFX900-NEXT: ;;#ASMSTART
1142 ; GFX900-NEXT: ; def v[0:3]
1143 ; GFX900-NEXT: ;;#ASMEND
1144 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1145 ; GFX900-NEXT: v_mov_b32_e32 v1, v0
1146 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
1147 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1148 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1149 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1151 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_0_0:
1153 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1154 ; GFX90A-NEXT: ;;#ASMSTART
1155 ; GFX90A-NEXT: ; def v[0:3]
1156 ; GFX90A-NEXT: ;;#ASMEND
1157 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1158 ; GFX90A-NEXT: v_mov_b32_e32 v1, v0
1159 ; GFX90A-NEXT: v_mov_b32_e32 v2, v0
1160 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1161 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1162 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1164 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__u_0_0:
1166 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1167 ; GFX940-NEXT: ;;#ASMSTART
1168 ; GFX940-NEXT: ; def v[0:3]
1169 ; GFX940-NEXT: ;;#ASMEND
1170 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1171 ; GFX940-NEXT: v_mov_b32_e32 v1, v0
1172 ; GFX940-NEXT: v_mov_b32_e32 v2, v0
1173 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1174 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1175 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1176 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1177 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 0, i32 0>
1178 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1182 define void @v_shuffle_v3p3_v4p3__0_0_0(ptr addrspace(1) inreg %ptr) {
1183 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_0_0:
1185 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1186 ; GFX900-NEXT: ;;#ASMSTART
1187 ; GFX900-NEXT: ; def v[0:3]
1188 ; GFX900-NEXT: ;;#ASMEND
1189 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1190 ; GFX900-NEXT: v_mov_b32_e32 v1, v0
1191 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
1192 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1193 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1194 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1196 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_0_0:
1198 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1199 ; GFX90A-NEXT: ;;#ASMSTART
1200 ; GFX90A-NEXT: ; def v[0:3]
1201 ; GFX90A-NEXT: ;;#ASMEND
1202 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1203 ; GFX90A-NEXT: v_mov_b32_e32 v1, v0
1204 ; GFX90A-NEXT: v_mov_b32_e32 v2, v0
1205 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1206 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1207 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1209 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__0_0_0:
1211 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1212 ; GFX940-NEXT: ;;#ASMSTART
1213 ; GFX940-NEXT: ; def v[0:3]
1214 ; GFX940-NEXT: ;;#ASMEND
1215 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1216 ; GFX940-NEXT: v_mov_b32_e32 v1, v0
1217 ; GFX940-NEXT: v_mov_b32_e32 v2, v0
1218 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1219 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1220 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1221 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1222 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> zeroinitializer
1223 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1227 define void @v_shuffle_v3p3_v4p3__1_0_0(ptr addrspace(1) inreg %ptr) {
1228 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_0_0:
1230 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1231 ; GFX900-NEXT: ;;#ASMSTART
1232 ; GFX900-NEXT: ; def v[0:3]
1233 ; GFX900-NEXT: ;;#ASMEND
1234 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1235 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
1236 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1237 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
1238 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1239 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1241 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_0_0:
1243 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1244 ; GFX90A-NEXT: ;;#ASMSTART
1245 ; GFX90A-NEXT: ; def v[0:3]
1246 ; GFX90A-NEXT: ;;#ASMEND
1247 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
1248 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
1249 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
1250 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1251 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
1252 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1253 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1255 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_0_0:
1257 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1258 ; GFX940-NEXT: ;;#ASMSTART
1259 ; GFX940-NEXT: ; def v[0:3]
1260 ; GFX940-NEXT: ;;#ASMEND
1261 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
1262 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
1263 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
1264 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1265 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
1266 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1267 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1268 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1269 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 0, i32 0>
1270 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1274 define void @v_shuffle_v3p3_v4p3__2_0_0(ptr addrspace(1) inreg %ptr) {
1275 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_0_0:
1277 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1278 ; GFX900-NEXT: ;;#ASMSTART
1279 ; GFX900-NEXT: ; def v[0:3]
1280 ; GFX900-NEXT: ;;#ASMEND
1281 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1282 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
1283 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
1284 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1285 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
1286 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1287 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1289 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_0_0:
1291 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1292 ; GFX90A-NEXT: ;;#ASMSTART
1293 ; GFX90A-NEXT: ; def v[0:3]
1294 ; GFX90A-NEXT: ;;#ASMEND
1295 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
1296 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
1297 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1298 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
1299 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1300 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1302 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_0_0:
1304 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1305 ; GFX940-NEXT: ;;#ASMSTART
1306 ; GFX940-NEXT: ; def v[0:3]
1307 ; GFX940-NEXT: ;;#ASMEND
1308 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
1309 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
1310 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1311 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
1312 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1313 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1314 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1315 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 0, i32 0>
1316 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1320 define void @v_shuffle_v3p3_v4p3__3_0_0(ptr addrspace(1) inreg %ptr) {
1321 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_0_0:
1323 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1324 ; GFX900-NEXT: ;;#ASMSTART
1325 ; GFX900-NEXT: ; def v[0:3]
1326 ; GFX900-NEXT: ;;#ASMEND
1327 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1328 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
1329 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
1330 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1331 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
1332 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1333 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1335 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_0_0:
1337 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1338 ; GFX90A-NEXT: ;;#ASMSTART
1339 ; GFX90A-NEXT: ; def v[0:3]
1340 ; GFX90A-NEXT: ;;#ASMEND
1341 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
1342 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
1343 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
1344 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1345 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
1346 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1347 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1349 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_0_0:
1351 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1352 ; GFX940-NEXT: ;;#ASMSTART
1353 ; GFX940-NEXT: ; def v[0:3]
1354 ; GFX940-NEXT: ;;#ASMEND
1355 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
1356 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
1357 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
1358 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1359 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
1360 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1361 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1362 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1363 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 0, i32 0>
1364 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1368 define void @v_shuffle_v3p3_v4p3__4_0_0(ptr addrspace(1) inreg %ptr) {
1369 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_0_0:
1371 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1372 ; GFX900-NEXT: ;;#ASMSTART
1373 ; GFX900-NEXT: ; def v[0:3]
1374 ; GFX900-NEXT: ;;#ASMEND
1375 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1376 ; GFX900-NEXT: v_mov_b32_e32 v1, v0
1377 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
1378 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1379 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1380 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1382 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_0_0:
1384 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1385 ; GFX90A-NEXT: ;;#ASMSTART
1386 ; GFX90A-NEXT: ; def v[0:3]
1387 ; GFX90A-NEXT: ;;#ASMEND
1388 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
1389 ; GFX90A-NEXT: v_mov_b32_e32 v1, v0
1390 ; GFX90A-NEXT: v_mov_b32_e32 v2, v0
1391 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1392 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1393 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1395 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__4_0_0:
1397 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1398 ; GFX940-NEXT: ;;#ASMSTART
1399 ; GFX940-NEXT: ; def v[0:3]
1400 ; GFX940-NEXT: ;;#ASMEND
1401 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
1402 ; GFX940-NEXT: v_mov_b32_e32 v1, v0
1403 ; GFX940-NEXT: v_mov_b32_e32 v2, v0
1404 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1405 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1406 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1407 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1408 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 0, i32 0>
1409 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1413 define void @v_shuffle_v3p3_v4p3__5_0_0(ptr addrspace(1) inreg %ptr) {
1414 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_0_0:
1416 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1417 ; GFX900-NEXT: ;;#ASMSTART
1418 ; GFX900-NEXT: ; def v[0:3]
1419 ; GFX900-NEXT: ;;#ASMEND
1420 ; GFX900-NEXT: ;;#ASMSTART
1421 ; GFX900-NEXT: ; def v[1:4]
1422 ; GFX900-NEXT: ;;#ASMEND
1423 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1424 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1425 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
1426 ; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
1427 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1428 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1430 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_0_0:
1432 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1433 ; GFX90A-NEXT: ;;#ASMSTART
1434 ; GFX90A-NEXT: ; def v[0:3]
1435 ; GFX90A-NEXT: ;;#ASMEND
1436 ; GFX90A-NEXT: ;;#ASMSTART
1437 ; GFX90A-NEXT: ; def v[2:5]
1438 ; GFX90A-NEXT: ;;#ASMEND
1439 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1440 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
1441 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
1442 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1443 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
1444 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1445 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1447 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_0_0:
1449 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1450 ; GFX940-NEXT: ;;#ASMSTART
1451 ; GFX940-NEXT: ; def v[0:3]
1452 ; GFX940-NEXT: ;;#ASMEND
1453 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1454 ; GFX940-NEXT: ;;#ASMSTART
1455 ; GFX940-NEXT: ; def v[2:5]
1456 ; GFX940-NEXT: ;;#ASMEND
1457 ; GFX940-NEXT: s_nop 0
1458 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
1459 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
1460 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1461 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
1462 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1463 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1464 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1465 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1466 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 0, i32 0>
1467 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1471 define void @v_shuffle_v3p3_v4p3__6_0_0(ptr addrspace(1) inreg %ptr) {
1472 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_0_0:
1474 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1475 ; GFX900-NEXT: ;;#ASMSTART
1476 ; GFX900-NEXT: ; def v[0:3]
1477 ; GFX900-NEXT: ;;#ASMEND
1478 ; GFX900-NEXT: ;;#ASMSTART
1479 ; GFX900-NEXT: ; def v[1:4]
1480 ; GFX900-NEXT: ;;#ASMEND
1481 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1482 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
1483 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
1484 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1485 ; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]
1486 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1487 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1489 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_0_0:
1491 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1492 ; GFX90A-NEXT: ;;#ASMSTART
1493 ; GFX90A-NEXT: ; def v[0:3]
1494 ; GFX90A-NEXT: ;;#ASMEND
1495 ; GFX90A-NEXT: ;;#ASMSTART
1496 ; GFX90A-NEXT: ; def v[2:5]
1497 ; GFX90A-NEXT: ;;#ASMEND
1498 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1499 ; GFX90A-NEXT: v_mov_b32_e32 v2, v4
1500 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
1501 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1502 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
1503 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1504 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1506 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_0_0:
1508 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1509 ; GFX940-NEXT: ;;#ASMSTART
1510 ; GFX940-NEXT: ; def v[0:3]
1511 ; GFX940-NEXT: ;;#ASMEND
1512 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1513 ; GFX940-NEXT: ;;#ASMSTART
1514 ; GFX940-NEXT: ; def v[2:5]
1515 ; GFX940-NEXT: ;;#ASMEND
1516 ; GFX940-NEXT: s_nop 0
1517 ; GFX940-NEXT: v_mov_b32_e32 v2, v4
1518 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
1519 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1520 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
1521 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1522 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1523 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1524 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1525 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 0, i32 0>
1526 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1530 define void @v_shuffle_v3p3_v4p3__7_0_0(ptr addrspace(1) inreg %ptr) {
1531 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_0:
1533 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1534 ; GFX900-NEXT: ;;#ASMSTART
1535 ; GFX900-NEXT: ; def v[0:3]
1536 ; GFX900-NEXT: ;;#ASMEND
1537 ; GFX900-NEXT: ;;#ASMSTART
1538 ; GFX900-NEXT: ; def v[1:4]
1539 ; GFX900-NEXT: ;;#ASMEND
1540 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1541 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
1542 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
1543 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1544 ; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]
1545 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1546 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1548 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_0:
1550 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1551 ; GFX90A-NEXT: ;;#ASMSTART
1552 ; GFX90A-NEXT: ; def v[0:3]
1553 ; GFX90A-NEXT: ;;#ASMEND
1554 ; GFX90A-NEXT: ;;#ASMSTART
1555 ; GFX90A-NEXT: ; def v[2:5]
1556 ; GFX90A-NEXT: ;;#ASMEND
1557 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1558 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
1559 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
1560 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1561 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
1562 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1563 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1565 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_0:
1567 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1568 ; GFX940-NEXT: ;;#ASMSTART
1569 ; GFX940-NEXT: ; def v[0:3]
1570 ; GFX940-NEXT: ;;#ASMEND
1571 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1572 ; GFX940-NEXT: ;;#ASMSTART
1573 ; GFX940-NEXT: ; def v[2:5]
1574 ; GFX940-NEXT: ;;#ASMEND
1575 ; GFX940-NEXT: s_nop 0
1576 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
1577 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
1578 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1579 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
1580 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1581 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1582 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1583 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1584 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 0>
1585 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1589 define void @v_shuffle_v3p3_v4p3__7_u_0(ptr addrspace(1) inreg %ptr) {
1590 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_0:
1592 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1593 ; GFX900-NEXT: ;;#ASMSTART
1594 ; GFX900-NEXT: ; def v[0:3]
1595 ; GFX900-NEXT: ;;#ASMEND
1596 ; GFX900-NEXT: ;;#ASMSTART
1597 ; GFX900-NEXT: ; def v[1:4]
1598 ; GFX900-NEXT: ;;#ASMEND
1599 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1600 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
1601 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1602 ; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]
1603 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1604 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1606 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_0:
1608 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1609 ; GFX90A-NEXT: ;;#ASMSTART
1610 ; GFX90A-NEXT: ; def v[0:3]
1611 ; GFX90A-NEXT: ;;#ASMEND
1612 ; GFX90A-NEXT: ;;#ASMSTART
1613 ; GFX90A-NEXT: ; def v[2:5]
1614 ; GFX90A-NEXT: ;;#ASMEND
1615 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1616 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
1617 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1618 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
1619 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1620 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1622 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_0:
1624 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1625 ; GFX940-NEXT: ;;#ASMSTART
1626 ; GFX940-NEXT: ; def v[0:3]
1627 ; GFX940-NEXT: ;;#ASMEND
1628 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1629 ; GFX940-NEXT: ;;#ASMSTART
1630 ; GFX940-NEXT: ; def v[2:5]
1631 ; GFX940-NEXT: ;;#ASMEND
1632 ; GFX940-NEXT: s_nop 0
1633 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
1634 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1635 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
1636 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1637 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1638 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1639 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1640 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 0>
1641 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1645 define void @v_shuffle_v3p3_v4p3__7_1_0(ptr addrspace(1) inreg %ptr) {
1646 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_0:
1648 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1649 ; GFX900-NEXT: ;;#ASMSTART
1650 ; GFX900-NEXT: ; def v[0:3]
1651 ; GFX900-NEXT: ;;#ASMEND
1652 ; GFX900-NEXT: ;;#ASMSTART
1653 ; GFX900-NEXT: ; def v[2:5]
1654 ; GFX900-NEXT: ;;#ASMEND
1655 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
1656 ; GFX900-NEXT: v_mov_b32_e32 v2, v5
1657 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
1658 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
1659 ; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
1660 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1661 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1663 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_0:
1665 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1666 ; GFX90A-NEXT: ;;#ASMSTART
1667 ; GFX90A-NEXT: ; def v[0:3]
1668 ; GFX90A-NEXT: ;;#ASMEND
1669 ; GFX90A-NEXT: ;;#ASMSTART
1670 ; GFX90A-NEXT: ; def v[2:5]
1671 ; GFX90A-NEXT: ;;#ASMEND
1672 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1673 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
1674 ; GFX90A-NEXT: v_mov_b32_e32 v3, v1
1675 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1676 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
1677 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1678 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1680 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_0:
1682 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1683 ; GFX940-NEXT: ;;#ASMSTART
1684 ; GFX940-NEXT: ; def v[0:3]
1685 ; GFX940-NEXT: ;;#ASMEND
1686 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1687 ; GFX940-NEXT: ;;#ASMSTART
1688 ; GFX940-NEXT: ; def v[2:5]
1689 ; GFX940-NEXT: ;;#ASMEND
1690 ; GFX940-NEXT: s_nop 0
1691 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
1692 ; GFX940-NEXT: v_mov_b32_e32 v3, v1
1693 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1694 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
1695 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1696 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1697 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1698 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1699 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 0>
1700 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1704 define void @v_shuffle_v3p3_v4p3__7_2_0(ptr addrspace(1) inreg %ptr) {
1705 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_0:
1707 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1708 ; GFX900-NEXT: ;;#ASMSTART
1709 ; GFX900-NEXT: ; def v[0:3]
1710 ; GFX900-NEXT: ;;#ASMEND
1711 ; GFX900-NEXT: ;;#ASMSTART
1712 ; GFX900-NEXT: ; def v[3:6]
1713 ; GFX900-NEXT: ;;#ASMEND
1714 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
1715 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
1716 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1717 ; GFX900-NEXT: global_store_dwordx3 v7, v[1:3], s[16:17]
1718 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1719 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1721 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_0:
1723 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1724 ; GFX90A-NEXT: ;;#ASMSTART
1725 ; GFX90A-NEXT: ; def v[4:7]
1726 ; GFX90A-NEXT: ;;#ASMEND
1727 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
1728 ; GFX90A-NEXT: ;;#ASMSTART
1729 ; GFX90A-NEXT: ; def v[0:3]
1730 ; GFX90A-NEXT: ;;#ASMEND
1731 ; GFX90A-NEXT: v_mov_b32_e32 v4, v7
1732 ; GFX90A-NEXT: v_mov_b32_e32 v5, v2
1733 ; GFX90A-NEXT: v_mov_b32_e32 v6, v0
1734 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
1735 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1736 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1738 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_0:
1740 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1741 ; GFX940-NEXT: ;;#ASMSTART
1742 ; GFX940-NEXT: ; def v[4:7]
1743 ; GFX940-NEXT: ;;#ASMEND
1744 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
1745 ; GFX940-NEXT: ;;#ASMSTART
1746 ; GFX940-NEXT: ; def v[0:3]
1747 ; GFX940-NEXT: ;;#ASMEND
1748 ; GFX940-NEXT: v_mov_b32_e32 v4, v7
1749 ; GFX940-NEXT: v_mov_b32_e32 v5, v2
1750 ; GFX940-NEXT: v_mov_b32_e32 v6, v0
1751 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
1752 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1753 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1754 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1755 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1756 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 0>
1757 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1761 define void @v_shuffle_v3p3_v4p3__7_3_0(ptr addrspace(1) inreg %ptr) {
1762 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_0:
1764 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1765 ; GFX900-NEXT: ;;#ASMSTART
1766 ; GFX900-NEXT: ; def v[0:3]
1767 ; GFX900-NEXT: ;;#ASMEND
1768 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
1769 ; GFX900-NEXT: ;;#ASMSTART
1770 ; GFX900-NEXT: ; def v[4:7]
1771 ; GFX900-NEXT: ;;#ASMEND
1772 ; GFX900-NEXT: v_mov_b32_e32 v1, v7
1773 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
1774 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1775 ; GFX900-NEXT: global_store_dwordx3 v8, v[1:3], s[16:17]
1776 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1777 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1779 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_0:
1781 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1782 ; GFX90A-NEXT: ;;#ASMSTART
1783 ; GFX90A-NEXT: ; def v[0:3]
1784 ; GFX90A-NEXT: ;;#ASMEND
1785 ; GFX90A-NEXT: ;;#ASMSTART
1786 ; GFX90A-NEXT: ; def v[4:7]
1787 ; GFX90A-NEXT: ;;#ASMEND
1788 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
1789 ; GFX90A-NEXT: v_mov_b32_e32 v2, v7
1790 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1791 ; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]
1792 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1793 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1795 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_0:
1797 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1798 ; GFX940-NEXT: ;;#ASMSTART
1799 ; GFX940-NEXT: ; def v[0:3]
1800 ; GFX940-NEXT: ;;#ASMEND
1801 ; GFX940-NEXT: ;;#ASMSTART
1802 ; GFX940-NEXT: ; def v[4:7]
1803 ; GFX940-NEXT: ;;#ASMEND
1804 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
1805 ; GFX940-NEXT: v_mov_b32_e32 v2, v7
1806 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1807 ; GFX940-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1] sc0 sc1
1808 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1809 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1810 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1811 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1812 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 0>
1813 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1817 define void @v_shuffle_v3p3_v4p3__7_4_0(ptr addrspace(1) inreg %ptr) {
1818 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_0:
1820 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1821 ; GFX900-NEXT: ;;#ASMSTART
1822 ; GFX900-NEXT: ; def v[0:3]
1823 ; GFX900-NEXT: ;;#ASMEND
1824 ; GFX900-NEXT: ;;#ASMSTART
1825 ; GFX900-NEXT: ; def v[1:4]
1826 ; GFX900-NEXT: ;;#ASMEND
1827 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1828 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
1829 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
1830 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
1831 ; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
1832 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1833 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1835 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_0:
1837 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1838 ; GFX90A-NEXT: ;;#ASMSTART
1839 ; GFX90A-NEXT: ; def v[0:3]
1840 ; GFX90A-NEXT: ;;#ASMEND
1841 ; GFX90A-NEXT: ;;#ASMSTART
1842 ; GFX90A-NEXT: ; def v[2:5]
1843 ; GFX90A-NEXT: ;;#ASMEND
1844 ; GFX90A-NEXT: v_mov_b32_e32 v7, 0
1845 ; GFX90A-NEXT: v_mov_b32_e32 v4, v5
1846 ; GFX90A-NEXT: v_mov_b32_e32 v5, v2
1847 ; GFX90A-NEXT: v_mov_b32_e32 v6, v0
1848 ; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
1849 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1850 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1852 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_0:
1854 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1855 ; GFX940-NEXT: ;;#ASMSTART
1856 ; GFX940-NEXT: ; def v[0:3]
1857 ; GFX940-NEXT: ;;#ASMEND
1858 ; GFX940-NEXT: v_mov_b32_e32 v7, 0
1859 ; GFX940-NEXT: ;;#ASMSTART
1860 ; GFX940-NEXT: ; def v[2:5]
1861 ; GFX940-NEXT: ;;#ASMEND
1862 ; GFX940-NEXT: v_mov_b32_e32 v6, v0
1863 ; GFX940-NEXT: v_mov_b32_e32 v4, v5
1864 ; GFX940-NEXT: v_mov_b32_e32 v5, v2
1865 ; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
1866 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1867 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1868 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1869 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1870 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 0>
1871 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1875 define void @v_shuffle_v3p3_v4p3__7_5_0(ptr addrspace(1) inreg %ptr) {
1876 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_0:
1878 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1879 ; GFX900-NEXT: ;;#ASMSTART
1880 ; GFX900-NEXT: ; def v[0:3]
1881 ; GFX900-NEXT: ;;#ASMEND
1882 ; GFX900-NEXT: ;;#ASMSTART
1883 ; GFX900-NEXT: ; def v[1:4]
1884 ; GFX900-NEXT: ;;#ASMEND
1885 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1886 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
1887 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
1888 ; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]
1889 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1890 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1892 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_0:
1894 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1895 ; GFX90A-NEXT: ;;#ASMSTART
1896 ; GFX90A-NEXT: ; def v[0:3]
1897 ; GFX90A-NEXT: ;;#ASMEND
1898 ; GFX90A-NEXT: ;;#ASMSTART
1899 ; GFX90A-NEXT: ; def v[2:5]
1900 ; GFX90A-NEXT: ;;#ASMEND
1901 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1902 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
1903 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1904 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
1905 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1906 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1908 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_0:
1910 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1911 ; GFX940-NEXT: ;;#ASMSTART
1912 ; GFX940-NEXT: ; def v[0:3]
1913 ; GFX940-NEXT: ;;#ASMEND
1914 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1915 ; GFX940-NEXT: ;;#ASMSTART
1916 ; GFX940-NEXT: ; def v[2:5]
1917 ; GFX940-NEXT: ;;#ASMEND
1918 ; GFX940-NEXT: s_nop 0
1919 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
1920 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1921 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
1922 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1923 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1924 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1925 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1926 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 0>
1927 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1931 define void @v_shuffle_v3p3_v4p3__7_6_0(ptr addrspace(1) inreg %ptr) {
1932 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_0:
1934 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1935 ; GFX900-NEXT: ;;#ASMSTART
1936 ; GFX900-NEXT: ; def v[0:3]
1937 ; GFX900-NEXT: ;;#ASMEND
1938 ; GFX900-NEXT: ;;#ASMSTART
1939 ; GFX900-NEXT: ; def v[1:4]
1940 ; GFX900-NEXT: ;;#ASMEND
1941 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
1942 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
1943 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
1944 ; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
1945 ; GFX900-NEXT: s_waitcnt vmcnt(0)
1946 ; GFX900-NEXT: s_setpc_b64 s[30:31]
1948 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_0:
1950 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1951 ; GFX90A-NEXT: ;;#ASMSTART
1952 ; GFX90A-NEXT: ; def v[0:3]
1953 ; GFX90A-NEXT: ;;#ASMEND
1954 ; GFX90A-NEXT: ;;#ASMSTART
1955 ; GFX90A-NEXT: ; def v[2:5]
1956 ; GFX90A-NEXT: ;;#ASMEND
1957 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
1958 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
1959 ; GFX90A-NEXT: v_mov_b32_e32 v3, v4
1960 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
1961 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
1962 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
1963 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
1965 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_0:
1967 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1968 ; GFX940-NEXT: ;;#ASMSTART
1969 ; GFX940-NEXT: ; def v[0:3]
1970 ; GFX940-NEXT: ;;#ASMEND
1971 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
1972 ; GFX940-NEXT: ;;#ASMSTART
1973 ; GFX940-NEXT: ; def v[2:5]
1974 ; GFX940-NEXT: ;;#ASMEND
1975 ; GFX940-NEXT: s_nop 0
1976 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
1977 ; GFX940-NEXT: v_mov_b32_e32 v3, v4
1978 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
1979 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
1980 ; GFX940-NEXT: s_waitcnt vmcnt(0)
1981 ; GFX940-NEXT: s_setpc_b64 s[30:31]
1982 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1983 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
1984 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 0>
1985 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
1989 define void @v_shuffle_v3p3_v4p3__u_1_1(ptr addrspace(1) inreg %ptr) {
1990 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_1_1:
1992 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1993 ; GFX900-NEXT: ;;#ASMSTART
1994 ; GFX900-NEXT: ; def v[0:3]
1995 ; GFX900-NEXT: ;;#ASMEND
1996 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
1997 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
1998 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
1999 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2000 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2002 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_1_1:
2004 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2005 ; GFX90A-NEXT: ;;#ASMSTART
2006 ; GFX90A-NEXT: ; def v[0:3]
2007 ; GFX90A-NEXT: ;;#ASMEND
2008 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2009 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2010 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2011 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2012 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2014 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__u_1_1:
2016 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2017 ; GFX940-NEXT: ;;#ASMSTART
2018 ; GFX940-NEXT: ; def v[0:3]
2019 ; GFX940-NEXT: ;;#ASMEND
2020 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2021 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2022 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2023 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2024 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2025 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2026 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 1, i32 1>
2027 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2031 define void @v_shuffle_v3p3_v4p3__0_1_1(ptr addrspace(1) inreg %ptr) {
2032 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_1_1:
2034 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2035 ; GFX900-NEXT: ;;#ASMSTART
2036 ; GFX900-NEXT: ; def v[0:3]
2037 ; GFX900-NEXT: ;;#ASMEND
2038 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2039 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2040 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2041 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2042 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2044 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_1_1:
2046 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2047 ; GFX90A-NEXT: ;;#ASMSTART
2048 ; GFX90A-NEXT: ; def v[0:3]
2049 ; GFX90A-NEXT: ;;#ASMEND
2050 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2051 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2052 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2053 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2054 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2056 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__0_1_1:
2058 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2059 ; GFX940-NEXT: ;;#ASMSTART
2060 ; GFX940-NEXT: ; def v[0:3]
2061 ; GFX940-NEXT: ;;#ASMEND
2062 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2063 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2064 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2065 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2066 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2067 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2068 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 1, i32 1>
2069 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2073 define void @v_shuffle_v3p3_v4p3__1_1_1(ptr addrspace(1) inreg %ptr) {
2074 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_1_1:
2076 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2077 ; GFX900-NEXT: ;;#ASMSTART
2078 ; GFX900-NEXT: ; def v[0:3]
2079 ; GFX900-NEXT: ;;#ASMEND
2080 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2081 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2082 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
2083 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
2084 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2085 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2087 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_1_1:
2089 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2090 ; GFX90A-NEXT: ;;#ASMSTART
2091 ; GFX90A-NEXT: ; def v[0:3]
2092 ; GFX90A-NEXT: ;;#ASMEND
2093 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2094 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
2095 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2096 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2097 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2098 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2100 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_1_1:
2102 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2103 ; GFX940-NEXT: ;;#ASMSTART
2104 ; GFX940-NEXT: ; def v[0:3]
2105 ; GFX940-NEXT: ;;#ASMEND
2106 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2107 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
2108 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2109 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2110 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2111 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2112 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2113 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 1, i32 1>
2114 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2118 define void @v_shuffle_v3p3_v4p3__2_1_1(ptr addrspace(1) inreg %ptr) {
2119 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_1_1:
2121 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2122 ; GFX900-NEXT: ;;#ASMSTART
2123 ; GFX900-NEXT: ; def v[0:3]
2124 ; GFX900-NEXT: ;;#ASMEND
2125 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2126 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
2127 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2128 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2129 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2130 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2132 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_1_1:
2134 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2135 ; GFX90A-NEXT: ;;#ASMSTART
2136 ; GFX90A-NEXT: ; def v[0:3]
2137 ; GFX90A-NEXT: ;;#ASMEND
2138 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2139 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
2140 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2141 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2142 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2143 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2145 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_1_1:
2147 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2148 ; GFX940-NEXT: ;;#ASMSTART
2149 ; GFX940-NEXT: ; def v[0:3]
2150 ; GFX940-NEXT: ;;#ASMEND
2151 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2152 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
2153 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2154 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2155 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2156 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2157 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2158 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 1, i32 1>
2159 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2163 define void @v_shuffle_v3p3_v4p3__3_1_1(ptr addrspace(1) inreg %ptr) {
2164 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_1_1:
2166 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2167 ; GFX900-NEXT: ;;#ASMSTART
2168 ; GFX900-NEXT: ; def v[0:3]
2169 ; GFX900-NEXT: ;;#ASMEND
2170 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2171 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
2172 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2173 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2174 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2175 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2177 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_1_1:
2179 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2180 ; GFX90A-NEXT: ;;#ASMSTART
2181 ; GFX90A-NEXT: ; def v[0:3]
2182 ; GFX90A-NEXT: ;;#ASMEND
2183 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2184 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
2185 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2186 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2187 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2188 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2190 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_1_1:
2192 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2193 ; GFX940-NEXT: ;;#ASMSTART
2194 ; GFX940-NEXT: ; def v[0:3]
2195 ; GFX940-NEXT: ;;#ASMEND
2196 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2197 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
2198 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2199 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2200 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2201 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2202 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2203 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 1, i32 1>
2204 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2208 define void @v_shuffle_v3p3_v4p3__4_1_1(ptr addrspace(1) inreg %ptr) {
2209 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_1_1:
2211 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2212 ; GFX900-NEXT: ;;#ASMSTART
2213 ; GFX900-NEXT: ; def v[0:3]
2214 ; GFX900-NEXT: ;;#ASMEND
2215 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2216 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2217 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2218 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2219 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2221 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_1_1:
2223 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2224 ; GFX90A-NEXT: ;;#ASMSTART
2225 ; GFX90A-NEXT: ; def v[0:3]
2226 ; GFX90A-NEXT: ;;#ASMEND
2227 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2228 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2229 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2230 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2231 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2233 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__4_1_1:
2235 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2236 ; GFX940-NEXT: ;;#ASMSTART
2237 ; GFX940-NEXT: ; def v[0:3]
2238 ; GFX940-NEXT: ;;#ASMEND
2239 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2240 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2241 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2242 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2243 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2244 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2245 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 1, i32 1>
2246 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2250 define void @v_shuffle_v3p3_v4p3__5_1_1(ptr addrspace(1) inreg %ptr) {
2251 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_1_1:
2253 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2254 ; GFX900-NEXT: ;;#ASMSTART
2255 ; GFX900-NEXT: ; def v[0:3]
2256 ; GFX900-NEXT: ;;#ASMEND
2257 ; GFX900-NEXT: ;;#ASMSTART
2258 ; GFX900-NEXT: ; def v[2:5]
2259 ; GFX900-NEXT: ;;#ASMEND
2260 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2261 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
2262 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
2263 ; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]
2264 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2265 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2267 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_1_1:
2269 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2270 ; GFX90A-NEXT: ;;#ASMSTART
2271 ; GFX90A-NEXT: ; def v[0:3]
2272 ; GFX90A-NEXT: ;;#ASMEND
2273 ; GFX90A-NEXT: ;;#ASMSTART
2274 ; GFX90A-NEXT: ; def v[2:5]
2275 ; GFX90A-NEXT: ;;#ASMEND
2276 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2277 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
2278 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2279 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
2280 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2281 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2283 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_1_1:
2285 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2286 ; GFX940-NEXT: ;;#ASMSTART
2287 ; GFX940-NEXT: ; def v[0:3]
2288 ; GFX940-NEXT: ;;#ASMEND
2289 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2290 ; GFX940-NEXT: ;;#ASMSTART
2291 ; GFX940-NEXT: ; def v[2:5]
2292 ; GFX940-NEXT: ;;#ASMEND
2293 ; GFX940-NEXT: s_nop 0
2294 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
2295 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2296 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
2297 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2298 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2299 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2300 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2301 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 1, i32 1>
2302 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2306 define void @v_shuffle_v3p3_v4p3__6_1_1(ptr addrspace(1) inreg %ptr) {
2307 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_1_1:
2309 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2310 ; GFX900-NEXT: ;;#ASMSTART
2311 ; GFX900-NEXT: ; def v[0:3]
2312 ; GFX900-NEXT: ;;#ASMEND
2313 ; GFX900-NEXT: ;;#ASMSTART
2314 ; GFX900-NEXT: ; def v[2:5]
2315 ; GFX900-NEXT: ;;#ASMEND
2316 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2317 ; GFX900-NEXT: v_mov_b32_e32 v0, v4
2318 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2319 ; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
2320 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2321 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2323 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_1_1:
2325 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2326 ; GFX90A-NEXT: ;;#ASMSTART
2327 ; GFX90A-NEXT: ; def v[0:3]
2328 ; GFX90A-NEXT: ;;#ASMEND
2329 ; GFX90A-NEXT: ;;#ASMSTART
2330 ; GFX90A-NEXT: ; def v[2:5]
2331 ; GFX90A-NEXT: ;;#ASMEND
2332 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2333 ; GFX90A-NEXT: v_mov_b32_e32 v0, v4
2334 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2335 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
2336 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2337 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2339 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_1_1:
2341 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2342 ; GFX940-NEXT: ;;#ASMSTART
2343 ; GFX940-NEXT: ; def v[0:3]
2344 ; GFX940-NEXT: ;;#ASMEND
2345 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2346 ; GFX940-NEXT: ;;#ASMSTART
2347 ; GFX940-NEXT: ; def v[2:5]
2348 ; GFX940-NEXT: ;;#ASMEND
2349 ; GFX940-NEXT: s_nop 0
2350 ; GFX940-NEXT: v_mov_b32_e32 v0, v4
2351 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2352 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
2353 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2354 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2355 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2356 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2357 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 1, i32 1>
2358 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2362 define void @v_shuffle_v3p3_v4p3__7_1_1(ptr addrspace(1) inreg %ptr) {
2363 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_1:
2365 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2366 ; GFX900-NEXT: ;;#ASMSTART
2367 ; GFX900-NEXT: ; def v[0:3]
2368 ; GFX900-NEXT: ;;#ASMEND
2369 ; GFX900-NEXT: ;;#ASMSTART
2370 ; GFX900-NEXT: ; def v[2:5]
2371 ; GFX900-NEXT: ;;#ASMEND
2372 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2373 ; GFX900-NEXT: v_mov_b32_e32 v0, v5
2374 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2375 ; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
2376 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2377 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2379 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_1:
2381 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2382 ; GFX90A-NEXT: ;;#ASMSTART
2383 ; GFX90A-NEXT: ; def v[0:3]
2384 ; GFX90A-NEXT: ;;#ASMEND
2385 ; GFX90A-NEXT: ;;#ASMSTART
2386 ; GFX90A-NEXT: ; def v[2:5]
2387 ; GFX90A-NEXT: ;;#ASMEND
2388 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2389 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
2390 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2391 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
2392 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2393 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2395 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_1:
2397 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2398 ; GFX940-NEXT: ;;#ASMSTART
2399 ; GFX940-NEXT: ; def v[0:3]
2400 ; GFX940-NEXT: ;;#ASMEND
2401 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2402 ; GFX940-NEXT: ;;#ASMSTART
2403 ; GFX940-NEXT: ; def v[2:5]
2404 ; GFX940-NEXT: ;;#ASMEND
2405 ; GFX940-NEXT: s_nop 0
2406 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
2407 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2408 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
2409 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2410 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2411 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2412 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2413 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 1>
2414 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2418 define void @v_shuffle_v3p3_v4p3__7_u_1(ptr addrspace(1) inreg %ptr) {
2419 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_1:
2421 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2422 ; GFX900-NEXT: ;;#ASMSTART
2423 ; GFX900-NEXT: ; def v[0:3]
2424 ; GFX900-NEXT: ;;#ASMEND
2425 ; GFX900-NEXT: ;;#ASMSTART
2426 ; GFX900-NEXT: ; def v[2:5]
2427 ; GFX900-NEXT: ;;#ASMEND
2428 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2429 ; GFX900-NEXT: v_mov_b32_e32 v0, v5
2430 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
2431 ; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
2432 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2433 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2435 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_1:
2437 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2438 ; GFX90A-NEXT: ;;#ASMSTART
2439 ; GFX90A-NEXT: ; def v[0:3]
2440 ; GFX90A-NEXT: ;;#ASMEND
2441 ; GFX90A-NEXT: ;;#ASMSTART
2442 ; GFX90A-NEXT: ; def v[2:5]
2443 ; GFX90A-NEXT: ;;#ASMEND
2444 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2445 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
2446 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
2447 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
2448 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2449 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2451 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_1:
2453 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2454 ; GFX940-NEXT: ;;#ASMSTART
2455 ; GFX940-NEXT: ; def v[0:3]
2456 ; GFX940-NEXT: ;;#ASMEND
2457 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2458 ; GFX940-NEXT: ;;#ASMSTART
2459 ; GFX940-NEXT: ; def v[2:5]
2460 ; GFX940-NEXT: ;;#ASMEND
2461 ; GFX940-NEXT: s_nop 0
2462 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
2463 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
2464 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
2465 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2466 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2467 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2468 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2469 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 1>
2470 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2474 define void @v_shuffle_v3p3_v4p3__7_0_1(ptr addrspace(1) inreg %ptr) {
2475 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_1:
2477 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2478 ; GFX900-NEXT: ;;#ASMSTART
2479 ; GFX900-NEXT: ; def v[0:3]
2480 ; GFX900-NEXT: ;;#ASMEND
2481 ; GFX900-NEXT: ;;#ASMSTART
2482 ; GFX900-NEXT: ; def v[2:5]
2483 ; GFX900-NEXT: ;;#ASMEND
2484 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2485 ; GFX900-NEXT: v_mov_b32_e32 v2, v5
2486 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
2487 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
2488 ; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
2489 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2490 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2492 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_1:
2494 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2495 ; GFX90A-NEXT: ;;#ASMSTART
2496 ; GFX90A-NEXT: ; def v[0:3]
2497 ; GFX90A-NEXT: ;;#ASMEND
2498 ; GFX90A-NEXT: ;;#ASMSTART
2499 ; GFX90A-NEXT: ; def v[2:5]
2500 ; GFX90A-NEXT: ;;#ASMEND
2501 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2502 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
2503 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
2504 ; GFX90A-NEXT: v_mov_b32_e32 v4, v1
2505 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
2506 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2507 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2509 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_1:
2511 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2512 ; GFX940-NEXT: ;;#ASMSTART
2513 ; GFX940-NEXT: ; def v[0:3]
2514 ; GFX940-NEXT: ;;#ASMEND
2515 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2516 ; GFX940-NEXT: ;;#ASMSTART
2517 ; GFX940-NEXT: ; def v[2:5]
2518 ; GFX940-NEXT: ;;#ASMEND
2519 ; GFX940-NEXT: s_nop 0
2520 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
2521 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
2522 ; GFX940-NEXT: v_mov_b32_e32 v4, v1
2523 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
2524 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2525 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2526 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2527 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2528 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 1>
2529 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2533 define void @v_shuffle_v3p3_v4p3__7_2_1(ptr addrspace(1) inreg %ptr) {
2534 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_1:
2536 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2537 ; GFX900-NEXT: ;;#ASMSTART
2538 ; GFX900-NEXT: ; def v[0:3]
2539 ; GFX900-NEXT: ;;#ASMEND
2540 ; GFX900-NEXT: ;;#ASMSTART
2541 ; GFX900-NEXT: ; def v[3:6]
2542 ; GFX900-NEXT: ;;#ASMEND
2543 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
2544 ; GFX900-NEXT: v_mov_b32_e32 v3, v6
2545 ; GFX900-NEXT: v_mov_b32_e32 v4, v2
2546 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
2547 ; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]
2548 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2549 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2551 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_1:
2553 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2554 ; GFX90A-NEXT: ;;#ASMSTART
2555 ; GFX90A-NEXT: ; def v[4:7]
2556 ; GFX90A-NEXT: ;;#ASMEND
2557 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
2558 ; GFX90A-NEXT: ;;#ASMSTART
2559 ; GFX90A-NEXT: ; def v[0:3]
2560 ; GFX90A-NEXT: ;;#ASMEND
2561 ; GFX90A-NEXT: v_mov_b32_e32 v4, v7
2562 ; GFX90A-NEXT: v_mov_b32_e32 v5, v2
2563 ; GFX90A-NEXT: v_mov_b32_e32 v6, v1
2564 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
2565 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2566 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2568 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_1:
2570 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2571 ; GFX940-NEXT: ;;#ASMSTART
2572 ; GFX940-NEXT: ; def v[4:7]
2573 ; GFX940-NEXT: ;;#ASMEND
2574 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
2575 ; GFX940-NEXT: ;;#ASMSTART
2576 ; GFX940-NEXT: ; def v[0:3]
2577 ; GFX940-NEXT: ;;#ASMEND
2578 ; GFX940-NEXT: v_mov_b32_e32 v4, v7
2579 ; GFX940-NEXT: v_mov_b32_e32 v5, v2
2580 ; GFX940-NEXT: v_mov_b32_e32 v6, v1
2581 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
2582 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2583 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2584 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2585 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2586 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 1>
2587 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2591 define void @v_shuffle_v3p3_v4p3__7_3_1(ptr addrspace(1) inreg %ptr) {
2592 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_1:
2594 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2595 ; GFX900-NEXT: ;;#ASMSTART
2596 ; GFX900-NEXT: ; def v[0:3]
2597 ; GFX900-NEXT: ;;#ASMEND
2598 ; GFX900-NEXT: ;;#ASMSTART
2599 ; GFX900-NEXT: ; def v[4:7]
2600 ; GFX900-NEXT: ;;#ASMEND
2601 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
2602 ; GFX900-NEXT: v_mov_b32_e32 v2, v7
2603 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
2604 ; GFX900-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]
2605 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2606 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2608 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_1:
2610 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2611 ; GFX90A-NEXT: ;;#ASMSTART
2612 ; GFX90A-NEXT: ; def v[0:3]
2613 ; GFX90A-NEXT: ;;#ASMEND
2614 ; GFX90A-NEXT: ;;#ASMSTART
2615 ; GFX90A-NEXT: ; def v[4:7]
2616 ; GFX90A-NEXT: ;;#ASMEND
2617 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
2618 ; GFX90A-NEXT: v_mov_b32_e32 v2, v7
2619 ; GFX90A-NEXT: v_mov_b32_e32 v4, v1
2620 ; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]
2621 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2622 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2624 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_1:
2626 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2627 ; GFX940-NEXT: ;;#ASMSTART
2628 ; GFX940-NEXT: ; def v[0:3]
2629 ; GFX940-NEXT: ;;#ASMEND
2630 ; GFX940-NEXT: ;;#ASMSTART
2631 ; GFX940-NEXT: ; def v[4:7]
2632 ; GFX940-NEXT: ;;#ASMEND
2633 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
2634 ; GFX940-NEXT: v_mov_b32_e32 v2, v7
2635 ; GFX940-NEXT: v_mov_b32_e32 v4, v1
2636 ; GFX940-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1] sc0 sc1
2637 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2638 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2639 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2640 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2641 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 1>
2642 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2646 define void @v_shuffle_v3p3_v4p3__7_4_1(ptr addrspace(1) inreg %ptr) {
2647 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_1:
2649 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2650 ; GFX900-NEXT: ;;#ASMSTART
2651 ; GFX900-NEXT: ; def v[0:3]
2652 ; GFX900-NEXT: ;;#ASMEND
2653 ; GFX900-NEXT: ;;#ASMSTART
2654 ; GFX900-NEXT: ; def v[2:5]
2655 ; GFX900-NEXT: ;;#ASMEND
2656 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2657 ; GFX900-NEXT: v_mov_b32_e32 v3, v5
2658 ; GFX900-NEXT: v_mov_b32_e32 v4, v2
2659 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
2660 ; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]
2661 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2662 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2664 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_1:
2666 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2667 ; GFX90A-NEXT: ;;#ASMSTART
2668 ; GFX90A-NEXT: ; def v[0:3]
2669 ; GFX90A-NEXT: ;;#ASMEND
2670 ; GFX90A-NEXT: ;;#ASMSTART
2671 ; GFX90A-NEXT: ; def v[2:5]
2672 ; GFX90A-NEXT: ;;#ASMEND
2673 ; GFX90A-NEXT: v_mov_b32_e32 v7, 0
2674 ; GFX90A-NEXT: v_mov_b32_e32 v4, v5
2675 ; GFX90A-NEXT: v_mov_b32_e32 v5, v2
2676 ; GFX90A-NEXT: v_mov_b32_e32 v6, v1
2677 ; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
2678 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2679 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2681 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_1:
2683 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2684 ; GFX940-NEXT: ;;#ASMSTART
2685 ; GFX940-NEXT: ; def v[0:3]
2686 ; GFX940-NEXT: ;;#ASMEND
2687 ; GFX940-NEXT: v_mov_b32_e32 v7, 0
2688 ; GFX940-NEXT: ;;#ASMSTART
2689 ; GFX940-NEXT: ; def v[2:5]
2690 ; GFX940-NEXT: ;;#ASMEND
2691 ; GFX940-NEXT: v_mov_b32_e32 v6, v1
2692 ; GFX940-NEXT: v_mov_b32_e32 v4, v5
2693 ; GFX940-NEXT: v_mov_b32_e32 v5, v2
2694 ; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
2695 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2696 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2697 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2698 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2699 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 1>
2700 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2704 define void @v_shuffle_v3p3_v4p3__7_5_1(ptr addrspace(1) inreg %ptr) {
2705 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_1:
2707 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2708 ; GFX900-NEXT: ;;#ASMSTART
2709 ; GFX900-NEXT: ; def v[0:3]
2710 ; GFX900-NEXT: ;;#ASMEND
2711 ; GFX900-NEXT: ;;#ASMSTART
2712 ; GFX900-NEXT: ; def v[2:5]
2713 ; GFX900-NEXT: ;;#ASMEND
2714 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2715 ; GFX900-NEXT: v_mov_b32_e32 v2, v5
2716 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
2717 ; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
2718 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2719 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2721 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_1:
2723 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2724 ; GFX90A-NEXT: ;;#ASMSTART
2725 ; GFX90A-NEXT: ; def v[0:3]
2726 ; GFX90A-NEXT: ;;#ASMEND
2727 ; GFX90A-NEXT: ;;#ASMSTART
2728 ; GFX90A-NEXT: ; def v[2:5]
2729 ; GFX90A-NEXT: ;;#ASMEND
2730 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2731 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
2732 ; GFX90A-NEXT: v_mov_b32_e32 v4, v1
2733 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
2734 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2735 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2737 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_1:
2739 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2740 ; GFX940-NEXT: ;;#ASMSTART
2741 ; GFX940-NEXT: ; def v[0:3]
2742 ; GFX940-NEXT: ;;#ASMEND
2743 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2744 ; GFX940-NEXT: ;;#ASMSTART
2745 ; GFX940-NEXT: ; def v[2:5]
2746 ; GFX940-NEXT: ;;#ASMEND
2747 ; GFX940-NEXT: s_nop 0
2748 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
2749 ; GFX940-NEXT: v_mov_b32_e32 v4, v1
2750 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
2751 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2752 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2753 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2754 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2755 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 1>
2756 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2760 define void @v_shuffle_v3p3_v4p3__7_6_1(ptr addrspace(1) inreg %ptr) {
2761 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_1:
2763 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2764 ; GFX900-NEXT: ;;#ASMSTART
2765 ; GFX900-NEXT: ; def v[0:3]
2766 ; GFX900-NEXT: ;;#ASMEND
2767 ; GFX900-NEXT: ;;#ASMSTART
2768 ; GFX900-NEXT: ; def v[2:5]
2769 ; GFX900-NEXT: ;;#ASMEND
2770 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
2771 ; GFX900-NEXT: v_mov_b32_e32 v3, v5
2772 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
2773 ; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]
2774 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2775 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2777 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_1:
2779 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2780 ; GFX90A-NEXT: ;;#ASMSTART
2781 ; GFX90A-NEXT: ; def v[0:3]
2782 ; GFX90A-NEXT: ;;#ASMEND
2783 ; GFX90A-NEXT: ;;#ASMSTART
2784 ; GFX90A-NEXT: ; def v[2:5]
2785 ; GFX90A-NEXT: ;;#ASMEND
2786 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
2787 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
2788 ; GFX90A-NEXT: v_mov_b32_e32 v3, v4
2789 ; GFX90A-NEXT: v_mov_b32_e32 v4, v1
2790 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
2791 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2792 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2794 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_1:
2796 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2797 ; GFX940-NEXT: ;;#ASMSTART
2798 ; GFX940-NEXT: ; def v[0:3]
2799 ; GFX940-NEXT: ;;#ASMEND
2800 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
2801 ; GFX940-NEXT: ;;#ASMSTART
2802 ; GFX940-NEXT: ; def v[2:5]
2803 ; GFX940-NEXT: ;;#ASMEND
2804 ; GFX940-NEXT: s_nop 0
2805 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
2806 ; GFX940-NEXT: v_mov_b32_e32 v3, v4
2807 ; GFX940-NEXT: v_mov_b32_e32 v4, v1
2808 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
2809 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2810 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2811 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2812 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2813 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 1>
2814 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2818 define void @v_shuffle_v3p3_v4p3__u_2_2(ptr addrspace(1) inreg %ptr) {
2819 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_2_2:
2821 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2822 ; GFX900-NEXT: ;;#ASMSTART
2823 ; GFX900-NEXT: ; def v[0:3]
2824 ; GFX900-NEXT: ;;#ASMEND
2825 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2826 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
2827 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
2828 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2829 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2831 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_2_2:
2833 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2834 ; GFX90A-NEXT: ;;#ASMSTART
2835 ; GFX90A-NEXT: ; def v[0:3]
2836 ; GFX90A-NEXT: ;;#ASMEND
2837 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2838 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
2839 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2840 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2841 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2843 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__u_2_2:
2845 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2846 ; GFX940-NEXT: ;;#ASMSTART
2847 ; GFX940-NEXT: ; def v[0:3]
2848 ; GFX940-NEXT: ;;#ASMEND
2849 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2850 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
2851 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2852 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2853 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2854 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2855 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 2, i32 2>
2856 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2860 define void @v_shuffle_v3p3_v4p3__0_2_2(ptr addrspace(1) inreg %ptr) {
2861 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_2_2:
2863 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2864 ; GFX900-NEXT: ;;#ASMSTART
2865 ; GFX900-NEXT: ; def v[0:3]
2866 ; GFX900-NEXT: ;;#ASMEND
2867 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2868 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
2869 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2870 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2871 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2873 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_2_2:
2875 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2876 ; GFX90A-NEXT: ;;#ASMSTART
2877 ; GFX90A-NEXT: ; def v[0:3]
2878 ; GFX90A-NEXT: ;;#ASMEND
2879 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2880 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
2881 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2882 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2883 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2885 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__0_2_2:
2887 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2888 ; GFX940-NEXT: ;;#ASMSTART
2889 ; GFX940-NEXT: ; def v[0:3]
2890 ; GFX940-NEXT: ;;#ASMEND
2891 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2892 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
2893 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2894 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2895 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2896 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2897 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 2, i32 2>
2898 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2902 define void @v_shuffle_v3p3_v4p3__1_2_2(ptr addrspace(1) inreg %ptr) {
2903 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_2_2:
2905 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2906 ; GFX900-NEXT: ;;#ASMSTART
2907 ; GFX900-NEXT: ; def v[0:3]
2908 ; GFX900-NEXT: ;;#ASMEND
2909 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2910 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
2911 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
2912 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2913 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2915 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_2_2:
2917 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2918 ; GFX90A-NEXT: ;;#ASMSTART
2919 ; GFX90A-NEXT: ; def v[0:3]
2920 ; GFX90A-NEXT: ;;#ASMEND
2921 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2922 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
2923 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
2924 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2925 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2926 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2928 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_2_2:
2930 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2931 ; GFX940-NEXT: ;;#ASMSTART
2932 ; GFX940-NEXT: ; def v[0:3]
2933 ; GFX940-NEXT: ;;#ASMEND
2934 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2935 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
2936 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
2937 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2938 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2939 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2940 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2941 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 2, i32 2>
2942 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2946 define void @v_shuffle_v3p3_v4p3__2_2_2(ptr addrspace(1) inreg %ptr) {
2947 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_2_2:
2949 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2950 ; GFX900-NEXT: ;;#ASMSTART
2951 ; GFX900-NEXT: ; def v[0:3]
2952 ; GFX900-NEXT: ;;#ASMEND
2953 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2954 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
2955 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
2956 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
2957 ; GFX900-NEXT: s_waitcnt vmcnt(0)
2958 ; GFX900-NEXT: s_setpc_b64 s[30:31]
2960 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_2_2:
2962 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2963 ; GFX90A-NEXT: ;;#ASMSTART
2964 ; GFX90A-NEXT: ; def v[0:3]
2965 ; GFX90A-NEXT: ;;#ASMEND
2966 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
2967 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
2968 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
2969 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
2970 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
2971 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
2973 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_2_2:
2975 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2976 ; GFX940-NEXT: ;;#ASMSTART
2977 ; GFX940-NEXT: ; def v[0:3]
2978 ; GFX940-NEXT: ;;#ASMEND
2979 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
2980 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
2981 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
2982 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2983 ; GFX940-NEXT: s_waitcnt vmcnt(0)
2984 ; GFX940-NEXT: s_setpc_b64 s[30:31]
2985 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
2986 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 2, i32 2>
2987 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
2991 define void @v_shuffle_v3p3_v4p3__3_2_2(ptr addrspace(1) inreg %ptr) {
2992 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_2_2:
2994 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2995 ; GFX900-NEXT: ;;#ASMSTART
2996 ; GFX900-NEXT: ; def v[0:3]
2997 ; GFX900-NEXT: ;;#ASMEND
2998 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
2999 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
3000 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
3001 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
3002 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3003 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3005 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_2_2:
3007 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3008 ; GFX90A-NEXT: ;;#ASMSTART
3009 ; GFX90A-NEXT: ; def v[0:3]
3010 ; GFX90A-NEXT: ;;#ASMEND
3011 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3012 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
3013 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
3014 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3015 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3016 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3018 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_2_2:
3020 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3021 ; GFX940-NEXT: ;;#ASMSTART
3022 ; GFX940-NEXT: ; def v[0:3]
3023 ; GFX940-NEXT: ;;#ASMEND
3024 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3025 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
3026 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
3027 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3028 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3029 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3030 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3031 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 2, i32 2>
3032 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3036 define void @v_shuffle_v3p3_v4p3__4_2_2(ptr addrspace(1) inreg %ptr) {
3037 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_2_2:
3039 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3040 ; GFX900-NEXT: ;;#ASMSTART
3041 ; GFX900-NEXT: ; def v[0:3]
3042 ; GFX900-NEXT: ;;#ASMEND
3043 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3044 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
3045 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
3046 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3047 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3049 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_2_2:
3051 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3052 ; GFX90A-NEXT: ;;#ASMSTART
3053 ; GFX90A-NEXT: ; def v[0:3]
3054 ; GFX90A-NEXT: ;;#ASMEND
3055 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3056 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
3057 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3058 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3059 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3061 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__4_2_2:
3063 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3064 ; GFX940-NEXT: ;;#ASMSTART
3065 ; GFX940-NEXT: ; def v[0:3]
3066 ; GFX940-NEXT: ;;#ASMEND
3067 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3068 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
3069 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3070 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3071 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3072 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3073 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 2, i32 2>
3074 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3078 define void @v_shuffle_v3p3_v4p3__5_2_2(ptr addrspace(1) inreg %ptr) {
3079 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_2_2:
3081 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3082 ; GFX900-NEXT: ;;#ASMSTART
3083 ; GFX900-NEXT: ; def v[0:3]
3084 ; GFX900-NEXT: ;;#ASMEND
3085 ; GFX900-NEXT: ;;#ASMSTART
3086 ; GFX900-NEXT: ; def v[3:6]
3087 ; GFX900-NEXT: ;;#ASMEND
3088 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3089 ; GFX900-NEXT: v_mov_b32_e32 v5, v2
3090 ; GFX900-NEXT: v_mov_b32_e32 v6, v2
3091 ; GFX900-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
3092 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3093 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3095 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_2_2:
3097 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3098 ; GFX90A-NEXT: ;;#ASMSTART
3099 ; GFX90A-NEXT: ; def v[0:3]
3100 ; GFX90A-NEXT: ;;#ASMEND
3101 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3102 ; GFX90A-NEXT: ;;#ASMSTART
3103 ; GFX90A-NEXT: ; def v[4:7]
3104 ; GFX90A-NEXT: ;;#ASMEND
3105 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
3106 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
3107 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3108 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3109 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3111 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_2_2:
3113 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3114 ; GFX940-NEXT: ;;#ASMSTART
3115 ; GFX940-NEXT: ; def v[0:3]
3116 ; GFX940-NEXT: ;;#ASMEND
3117 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3118 ; GFX940-NEXT: ;;#ASMSTART
3119 ; GFX940-NEXT: ; def v[4:7]
3120 ; GFX940-NEXT: ;;#ASMEND
3121 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
3122 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
3123 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3124 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3125 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3126 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3127 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3128 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 2, i32 2>
3129 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3133 define void @v_shuffle_v3p3_v4p3__6_2_2(ptr addrspace(1) inreg %ptr) {
3134 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_2_2:
3136 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3137 ; GFX900-NEXT: ;;#ASMSTART
3138 ; GFX900-NEXT: ; def v[0:3]
3139 ; GFX900-NEXT: ;;#ASMEND
3140 ; GFX900-NEXT: ;;#ASMSTART
3141 ; GFX900-NEXT: ; def v[3:6]
3142 ; GFX900-NEXT: ;;#ASMEND
3143 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3144 ; GFX900-NEXT: v_mov_b32_e32 v1, v5
3145 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
3146 ; GFX900-NEXT: global_store_dwordx3 v7, v[1:3], s[16:17]
3147 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3148 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3150 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_2_2:
3152 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3153 ; GFX90A-NEXT: ;;#ASMSTART
3154 ; GFX90A-NEXT: ; def v[0:3]
3155 ; GFX90A-NEXT: ;;#ASMEND
3156 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3157 ; GFX90A-NEXT: ;;#ASMSTART
3158 ; GFX90A-NEXT: ; def v[4:7]
3159 ; GFX90A-NEXT: ;;#ASMEND
3160 ; GFX90A-NEXT: v_mov_b32_e32 v0, v6
3161 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
3162 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3163 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3164 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3166 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_2_2:
3168 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3169 ; GFX940-NEXT: ;;#ASMSTART
3170 ; GFX940-NEXT: ; def v[0:3]
3171 ; GFX940-NEXT: ;;#ASMEND
3172 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3173 ; GFX940-NEXT: ;;#ASMSTART
3174 ; GFX940-NEXT: ; def v[4:7]
3175 ; GFX940-NEXT: ;;#ASMEND
3176 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
3177 ; GFX940-NEXT: v_mov_b32_e32 v0, v6
3178 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3179 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3180 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3181 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3182 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3183 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 2, i32 2>
3184 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3188 define void @v_shuffle_v3p3_v4p3__7_2_2(ptr addrspace(1) inreg %ptr) {
3189 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_2:
3191 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3192 ; GFX900-NEXT: ;;#ASMSTART
3193 ; GFX900-NEXT: ; def v[0:3]
3194 ; GFX900-NEXT: ;;#ASMEND
3195 ; GFX900-NEXT: ;;#ASMSTART
3196 ; GFX900-NEXT: ; def v[3:6]
3197 ; GFX900-NEXT: ;;#ASMEND
3198 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3199 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
3200 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
3201 ; GFX900-NEXT: global_store_dwordx3 v7, v[1:3], s[16:17]
3202 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3203 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3205 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_2:
3207 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3208 ; GFX90A-NEXT: ;;#ASMSTART
3209 ; GFX90A-NEXT: ; def v[0:3]
3210 ; GFX90A-NEXT: ;;#ASMEND
3211 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3212 ; GFX90A-NEXT: ;;#ASMSTART
3213 ; GFX90A-NEXT: ; def v[4:7]
3214 ; GFX90A-NEXT: ;;#ASMEND
3215 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
3216 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
3217 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3218 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3219 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3221 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_2:
3223 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3224 ; GFX940-NEXT: ;;#ASMSTART
3225 ; GFX940-NEXT: ; def v[0:3]
3226 ; GFX940-NEXT: ;;#ASMEND
3227 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3228 ; GFX940-NEXT: ;;#ASMSTART
3229 ; GFX940-NEXT: ; def v[4:7]
3230 ; GFX940-NEXT: ;;#ASMEND
3231 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
3232 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
3233 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3234 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3235 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3236 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3237 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3238 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 2>
3239 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3243 define void @v_shuffle_v3p3_v4p3__7_u_2(ptr addrspace(1) inreg %ptr) {
3244 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_2:
3246 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3247 ; GFX900-NEXT: ;;#ASMSTART
3248 ; GFX900-NEXT: ; def v[0:3]
3249 ; GFX900-NEXT: ;;#ASMEND
3250 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3251 ; GFX900-NEXT: ;;#ASMSTART
3252 ; GFX900-NEXT: ; def v[3:6]
3253 ; GFX900-NEXT: ;;#ASMEND
3254 ; GFX900-NEXT: v_mov_b32_e32 v0, v6
3255 ; GFX900-NEXT: global_store_dwordx3 v7, v[0:2], s[16:17]
3256 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3257 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3259 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_2:
3261 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3262 ; GFX90A-NEXT: ;;#ASMSTART
3263 ; GFX90A-NEXT: ; def v[0:3]
3264 ; GFX90A-NEXT: ;;#ASMEND
3265 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3266 ; GFX90A-NEXT: ;;#ASMSTART
3267 ; GFX90A-NEXT: ; def v[4:7]
3268 ; GFX90A-NEXT: ;;#ASMEND
3269 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
3270 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3271 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3272 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3274 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_2:
3276 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3277 ; GFX940-NEXT: ;;#ASMSTART
3278 ; GFX940-NEXT: ; def v[0:3]
3279 ; GFX940-NEXT: ;;#ASMEND
3280 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3281 ; GFX940-NEXT: ;;#ASMSTART
3282 ; GFX940-NEXT: ; def v[4:7]
3283 ; GFX940-NEXT: ;;#ASMEND
3284 ; GFX940-NEXT: s_nop 0
3285 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
3286 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3287 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3288 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3289 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3290 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3291 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 2>
3292 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3296 define void @v_shuffle_v3p3_v4p3__7_0_2(ptr addrspace(1) inreg %ptr) {
3297 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_2:
3299 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3300 ; GFX900-NEXT: ;;#ASMSTART
3301 ; GFX900-NEXT: ; def v[0:3]
3302 ; GFX900-NEXT: ;;#ASMEND
3303 ; GFX900-NEXT: ;;#ASMSTART
3304 ; GFX900-NEXT: ; def v[3:6]
3305 ; GFX900-NEXT: ;;#ASMEND
3306 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3307 ; GFX900-NEXT: v_mov_b32_e32 v3, v6
3308 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
3309 ; GFX900-NEXT: v_mov_b32_e32 v5, v2
3310 ; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]
3311 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3312 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3314 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_2:
3316 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3317 ; GFX90A-NEXT: ;;#ASMSTART
3318 ; GFX90A-NEXT: ; def v[4:7]
3319 ; GFX90A-NEXT: ;;#ASMEND
3320 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3321 ; GFX90A-NEXT: ;;#ASMSTART
3322 ; GFX90A-NEXT: ; def v[0:3]
3323 ; GFX90A-NEXT: ;;#ASMEND
3324 ; GFX90A-NEXT: v_mov_b32_e32 v4, v7
3325 ; GFX90A-NEXT: v_mov_b32_e32 v5, v0
3326 ; GFX90A-NEXT: v_mov_b32_e32 v6, v2
3327 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
3328 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3329 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3331 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_2:
3333 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3334 ; GFX940-NEXT: ;;#ASMSTART
3335 ; GFX940-NEXT: ; def v[4:7]
3336 ; GFX940-NEXT: ;;#ASMEND
3337 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3338 ; GFX940-NEXT: ;;#ASMSTART
3339 ; GFX940-NEXT: ; def v[0:3]
3340 ; GFX940-NEXT: ;;#ASMEND
3341 ; GFX940-NEXT: v_mov_b32_e32 v4, v7
3342 ; GFX940-NEXT: v_mov_b32_e32 v5, v0
3343 ; GFX940-NEXT: v_mov_b32_e32 v6, v2
3344 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
3345 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3346 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3347 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3348 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3349 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 2>
3350 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3354 define void @v_shuffle_v3p3_v4p3__7_1_2(ptr addrspace(1) inreg %ptr) {
3355 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_2:
3357 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3358 ; GFX900-NEXT: ;;#ASMSTART
3359 ; GFX900-NEXT: ; def v[0:3]
3360 ; GFX900-NEXT: ;;#ASMEND
3361 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3362 ; GFX900-NEXT: ;;#ASMSTART
3363 ; GFX900-NEXT: ; def v[3:6]
3364 ; GFX900-NEXT: ;;#ASMEND
3365 ; GFX900-NEXT: v_mov_b32_e32 v0, v6
3366 ; GFX900-NEXT: global_store_dwordx3 v7, v[0:2], s[16:17]
3367 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3368 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3370 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_2:
3372 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3373 ; GFX90A-NEXT: ;;#ASMSTART
3374 ; GFX90A-NEXT: ; def v[0:3]
3375 ; GFX90A-NEXT: ;;#ASMEND
3376 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3377 ; GFX90A-NEXT: ;;#ASMSTART
3378 ; GFX90A-NEXT: ; def v[4:7]
3379 ; GFX90A-NEXT: ;;#ASMEND
3380 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
3381 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3382 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3383 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3385 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_2:
3387 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3388 ; GFX940-NEXT: ;;#ASMSTART
3389 ; GFX940-NEXT: ; def v[0:3]
3390 ; GFX940-NEXT: ;;#ASMEND
3391 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3392 ; GFX940-NEXT: ;;#ASMSTART
3393 ; GFX940-NEXT: ; def v[4:7]
3394 ; GFX940-NEXT: ;;#ASMEND
3395 ; GFX940-NEXT: s_nop 0
3396 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
3397 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3398 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3399 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3400 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3401 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3402 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 2>
3403 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3407 define void @v_shuffle_v3p3_v4p3__7_3_2(ptr addrspace(1) inreg %ptr) {
3408 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_2:
3410 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3411 ; GFX900-NEXT: ;;#ASMSTART
3412 ; GFX900-NEXT: ; def v[0:3]
3413 ; GFX900-NEXT: ;;#ASMEND
3414 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
3415 ; GFX900-NEXT: ;;#ASMSTART
3416 ; GFX900-NEXT: ; def v[4:7]
3417 ; GFX900-NEXT: ;;#ASMEND
3418 ; GFX900-NEXT: v_mov_b32_e32 v0, v7
3419 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
3420 ; GFX900-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3421 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3422 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3424 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_2:
3426 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3427 ; GFX90A-NEXT: ;;#ASMSTART
3428 ; GFX90A-NEXT: ; def v[0:3]
3429 ; GFX90A-NEXT: ;;#ASMEND
3430 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3431 ; GFX90A-NEXT: ;;#ASMSTART
3432 ; GFX90A-NEXT: ; def v[4:7]
3433 ; GFX90A-NEXT: ;;#ASMEND
3434 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
3435 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3436 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3437 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3438 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3440 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_2:
3442 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3443 ; GFX940-NEXT: ;;#ASMSTART
3444 ; GFX940-NEXT: ; def v[0:3]
3445 ; GFX940-NEXT: ;;#ASMEND
3446 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3447 ; GFX940-NEXT: ;;#ASMSTART
3448 ; GFX940-NEXT: ; def v[4:7]
3449 ; GFX940-NEXT: ;;#ASMEND
3450 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3451 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
3452 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3453 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3454 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3455 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3456 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3457 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 2>
3458 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3462 define void @v_shuffle_v3p3_v4p3__7_4_2(ptr addrspace(1) inreg %ptr) {
3463 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_2:
3465 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3466 ; GFX900-NEXT: ;;#ASMSTART
3467 ; GFX900-NEXT: ; def v[0:3]
3468 ; GFX900-NEXT: ;;#ASMEND
3469 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3470 ; GFX900-NEXT: ;;#ASMSTART
3471 ; GFX900-NEXT: ; def v[3:6]
3472 ; GFX900-NEXT: ;;#ASMEND
3473 ; GFX900-NEXT: v_mov_b32_e32 v0, v6
3474 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
3475 ; GFX900-NEXT: global_store_dwordx3 v7, v[0:2], s[16:17]
3476 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3477 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3479 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_2:
3481 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3482 ; GFX90A-NEXT: ;;#ASMSTART
3483 ; GFX90A-NEXT: ; def v[0:3]
3484 ; GFX90A-NEXT: ;;#ASMEND
3485 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3486 ; GFX90A-NEXT: ;;#ASMSTART
3487 ; GFX90A-NEXT: ; def v[4:7]
3488 ; GFX90A-NEXT: ;;#ASMEND
3489 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
3490 ; GFX90A-NEXT: v_mov_b32_e32 v1, v4
3491 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3492 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3493 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3495 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_2:
3497 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3498 ; GFX940-NEXT: ;;#ASMSTART
3499 ; GFX940-NEXT: ; def v[0:3]
3500 ; GFX940-NEXT: ;;#ASMEND
3501 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3502 ; GFX940-NEXT: ;;#ASMSTART
3503 ; GFX940-NEXT: ; def v[4:7]
3504 ; GFX940-NEXT: ;;#ASMEND
3505 ; GFX940-NEXT: s_nop 0
3506 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
3507 ; GFX940-NEXT: v_mov_b32_e32 v1, v4
3508 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3509 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3510 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3511 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3512 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3513 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 2>
3514 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3518 define void @v_shuffle_v3p3_v4p3__7_5_2(ptr addrspace(1) inreg %ptr) {
3519 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_2:
3521 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3522 ; GFX900-NEXT: ;;#ASMSTART
3523 ; GFX900-NEXT: ; def v[0:3]
3524 ; GFX900-NEXT: ;;#ASMEND
3525 ; GFX900-NEXT: ;;#ASMSTART
3526 ; GFX900-NEXT: ; def v[3:6]
3527 ; GFX900-NEXT: ;;#ASMEND
3528 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3529 ; GFX900-NEXT: v_mov_b32_e32 v3, v6
3530 ; GFX900-NEXT: v_mov_b32_e32 v5, v2
3531 ; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]
3532 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3533 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3535 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_2:
3537 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3538 ; GFX90A-NEXT: ;;#ASMSTART
3539 ; GFX90A-NEXT: ; def v[4:7]
3540 ; GFX90A-NEXT: ;;#ASMEND
3541 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3542 ; GFX90A-NEXT: ;;#ASMSTART
3543 ; GFX90A-NEXT: ; def v[0:3]
3544 ; GFX90A-NEXT: ;;#ASMEND
3545 ; GFX90A-NEXT: v_mov_b32_e32 v4, v7
3546 ; GFX90A-NEXT: v_mov_b32_e32 v6, v2
3547 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
3548 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3549 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3551 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_2:
3553 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3554 ; GFX940-NEXT: ;;#ASMSTART
3555 ; GFX940-NEXT: ; def v[4:7]
3556 ; GFX940-NEXT: ;;#ASMEND
3557 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3558 ; GFX940-NEXT: ;;#ASMSTART
3559 ; GFX940-NEXT: ; def v[0:3]
3560 ; GFX940-NEXT: ;;#ASMEND
3561 ; GFX940-NEXT: v_mov_b32_e32 v4, v7
3562 ; GFX940-NEXT: v_mov_b32_e32 v6, v2
3563 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
3564 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3565 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3566 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3567 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3568 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 2>
3569 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3573 define void @v_shuffle_v3p3_v4p3__7_6_2(ptr addrspace(1) inreg %ptr) {
3574 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_2:
3576 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3577 ; GFX900-NEXT: ;;#ASMSTART
3578 ; GFX900-NEXT: ; def v[0:3]
3579 ; GFX900-NEXT: ;;#ASMEND
3580 ; GFX900-NEXT: ;;#ASMSTART
3581 ; GFX900-NEXT: ; def v[3:6]
3582 ; GFX900-NEXT: ;;#ASMEND
3583 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
3584 ; GFX900-NEXT: v_mov_b32_e32 v4, v6
3585 ; GFX900-NEXT: v_mov_b32_e32 v6, v2
3586 ; GFX900-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
3587 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3588 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3590 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_2:
3592 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3593 ; GFX90A-NEXT: ;;#ASMSTART
3594 ; GFX90A-NEXT: ; def v[0:3]
3595 ; GFX90A-NEXT: ;;#ASMEND
3596 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3597 ; GFX90A-NEXT: ;;#ASMSTART
3598 ; GFX90A-NEXT: ; def v[4:7]
3599 ; GFX90A-NEXT: ;;#ASMEND
3600 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
3601 ; GFX90A-NEXT: v_mov_b32_e32 v1, v6
3602 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3603 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3604 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3606 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_2:
3608 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3609 ; GFX940-NEXT: ;;#ASMSTART
3610 ; GFX940-NEXT: ; def v[0:3]
3611 ; GFX940-NEXT: ;;#ASMEND
3612 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3613 ; GFX940-NEXT: ;;#ASMSTART
3614 ; GFX940-NEXT: ; def v[4:7]
3615 ; GFX940-NEXT: ;;#ASMEND
3616 ; GFX940-NEXT: s_nop 0
3617 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
3618 ; GFX940-NEXT: v_mov_b32_e32 v1, v6
3619 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3620 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3621 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3622 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3623 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3624 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 2>
3625 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3629 define void @v_shuffle_v3p3_v4p3__u_3_3(ptr addrspace(1) inreg %ptr) {
3630 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_3_3:
3632 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3633 ; GFX900-NEXT: ;;#ASMSTART
3634 ; GFX900-NEXT: ; def v[0:3]
3635 ; GFX900-NEXT: ;;#ASMEND
3636 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3637 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
3638 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
3639 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3640 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3642 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_3_3:
3644 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3645 ; GFX90A-NEXT: ;;#ASMSTART
3646 ; GFX90A-NEXT: ; def v[0:3]
3647 ; GFX90A-NEXT: ;;#ASMEND
3648 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3649 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3650 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
3651 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3652 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3653 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3655 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__u_3_3:
3657 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3658 ; GFX940-NEXT: ;;#ASMSTART
3659 ; GFX940-NEXT: ; def v[0:3]
3660 ; GFX940-NEXT: ;;#ASMEND
3661 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3662 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3663 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
3664 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3665 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3666 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3667 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3668 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 3, i32 3>
3669 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3673 define void @v_shuffle_v3p3_v4p3__0_3_3(ptr addrspace(1) inreg %ptr) {
3674 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_3_3:
3676 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3677 ; GFX900-NEXT: ;;#ASMSTART
3678 ; GFX900-NEXT: ; def v[0:3]
3679 ; GFX900-NEXT: ;;#ASMEND
3680 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3681 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
3682 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
3683 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3684 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3685 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3687 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_3_3:
3689 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3690 ; GFX90A-NEXT: ;;#ASMSTART
3691 ; GFX90A-NEXT: ; def v[0:3]
3692 ; GFX90A-NEXT: ;;#ASMEND
3693 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3694 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3695 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
3696 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3697 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3698 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3700 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__0_3_3:
3702 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3703 ; GFX940-NEXT: ;;#ASMSTART
3704 ; GFX940-NEXT: ; def v[0:3]
3705 ; GFX940-NEXT: ;;#ASMEND
3706 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3707 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3708 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
3709 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3710 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3711 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3712 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3713 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 3, i32 3>
3714 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3718 define void @v_shuffle_v3p3_v4p3__1_3_3(ptr addrspace(1) inreg %ptr) {
3719 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_3_3:
3721 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3722 ; GFX900-NEXT: ;;#ASMSTART
3723 ; GFX900-NEXT: ; def v[0:3]
3724 ; GFX900-NEXT: ;;#ASMEND
3725 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3726 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
3727 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
3728 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3729 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3731 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_3_3:
3733 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3734 ; GFX90A-NEXT: ;;#ASMSTART
3735 ; GFX90A-NEXT: ; def v[0:3]
3736 ; GFX90A-NEXT: ;;#ASMEND
3737 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3738 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
3739 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3740 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
3741 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3742 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3743 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3745 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_3_3:
3747 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3748 ; GFX940-NEXT: ;;#ASMSTART
3749 ; GFX940-NEXT: ; def v[0:3]
3750 ; GFX940-NEXT: ;;#ASMEND
3751 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3752 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
3753 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3754 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
3755 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3756 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3757 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3758 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3759 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 3, i32 3>
3760 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3764 define void @v_shuffle_v3p3_v4p3__2_3_3(ptr addrspace(1) inreg %ptr) {
3765 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_3_3:
3767 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3768 ; GFX900-NEXT: ;;#ASMSTART
3769 ; GFX900-NEXT: ; def v[0:3]
3770 ; GFX900-NEXT: ;;#ASMEND
3771 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3772 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
3773 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
3774 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
3775 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3776 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3778 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_3_3:
3780 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3781 ; GFX90A-NEXT: ;;#ASMSTART
3782 ; GFX90A-NEXT: ; def v[0:3]
3783 ; GFX90A-NEXT: ;;#ASMEND
3784 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3785 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
3786 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3787 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
3788 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3789 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3790 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3792 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_3_3:
3794 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3795 ; GFX940-NEXT: ;;#ASMSTART
3796 ; GFX940-NEXT: ; def v[0:3]
3797 ; GFX940-NEXT: ;;#ASMEND
3798 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3799 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
3800 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3801 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
3802 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3803 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3804 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3805 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3806 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 3, i32 3>
3807 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3811 define void @v_shuffle_v3p3_v4p3__3_3_3(ptr addrspace(1) inreg %ptr) {
3812 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_3_3:
3814 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3815 ; GFX900-NEXT: ;;#ASMSTART
3816 ; GFX900-NEXT: ; def v[0:3]
3817 ; GFX900-NEXT: ;;#ASMEND
3818 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3819 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
3820 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
3821 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
3822 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3823 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3825 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_3_3:
3827 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3828 ; GFX90A-NEXT: ;;#ASMSTART
3829 ; GFX90A-NEXT: ; def v[0:3]
3830 ; GFX90A-NEXT: ;;#ASMEND
3831 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3832 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
3833 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3834 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
3835 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3836 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3837 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3839 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_3_3:
3841 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3842 ; GFX940-NEXT: ;;#ASMSTART
3843 ; GFX940-NEXT: ; def v[0:3]
3844 ; GFX940-NEXT: ;;#ASMEND
3845 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3846 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
3847 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3848 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
3849 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3850 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3851 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3852 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3853 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 3, i32 3>
3854 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3858 define void @v_shuffle_v3p3_v4p3__4_3_3(ptr addrspace(1) inreg %ptr) {
3859 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_3_3:
3861 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3862 ; GFX900-NEXT: ;;#ASMSTART
3863 ; GFX900-NEXT: ; def v[0:3]
3864 ; GFX900-NEXT: ;;#ASMEND
3865 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
3866 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
3867 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
3868 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3869 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3871 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_3_3:
3873 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3874 ; GFX90A-NEXT: ;;#ASMSTART
3875 ; GFX90A-NEXT: ; def v[0:3]
3876 ; GFX90A-NEXT: ;;#ASMEND
3877 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
3878 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3879 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
3880 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
3881 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3882 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3884 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__4_3_3:
3886 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3887 ; GFX940-NEXT: ;;#ASMSTART
3888 ; GFX940-NEXT: ; def v[0:3]
3889 ; GFX940-NEXT: ;;#ASMEND
3890 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
3891 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3892 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
3893 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3894 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3895 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3896 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3897 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 3, i32 3>
3898 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3902 define void @v_shuffle_v3p3_v4p3__5_3_3(ptr addrspace(1) inreg %ptr) {
3903 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_3_3:
3905 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3906 ; GFX900-NEXT: ;;#ASMSTART
3907 ; GFX900-NEXT: ; def v[4:7]
3908 ; GFX900-NEXT: ;;#ASMEND
3909 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
3910 ; GFX900-NEXT: ;;#ASMSTART
3911 ; GFX900-NEXT: ; def v[0:3]
3912 ; GFX900-NEXT: ;;#ASMEND
3913 ; GFX900-NEXT: v_mov_b32_e32 v6, v3
3914 ; GFX900-NEXT: v_mov_b32_e32 v7, v3
3915 ; GFX900-NEXT: global_store_dwordx3 v8, v[5:7], s[16:17]
3916 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3917 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3919 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_3_3:
3921 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3922 ; GFX90A-NEXT: ;;#ASMSTART
3923 ; GFX90A-NEXT: ; def v[0:3]
3924 ; GFX90A-NEXT: ;;#ASMEND
3925 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3926 ; GFX90A-NEXT: ;;#ASMSTART
3927 ; GFX90A-NEXT: ; def v[4:7]
3928 ; GFX90A-NEXT: ;;#ASMEND
3929 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
3930 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3931 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
3932 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3933 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3934 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3936 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_3_3:
3938 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3939 ; GFX940-NEXT: ;;#ASMSTART
3940 ; GFX940-NEXT: ; def v[0:3]
3941 ; GFX940-NEXT: ;;#ASMEND
3942 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
3943 ; GFX940-NEXT: ;;#ASMSTART
3944 ; GFX940-NEXT: ; def v[4:7]
3945 ; GFX940-NEXT: ;;#ASMEND
3946 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
3947 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
3948 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
3949 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
3950 ; GFX940-NEXT: s_waitcnt vmcnt(0)
3951 ; GFX940-NEXT: s_setpc_b64 s[30:31]
3952 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3953 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
3954 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 3, i32 3>
3955 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
3959 define void @v_shuffle_v3p3_v4p3__6_3_3(ptr addrspace(1) inreg %ptr) {
3960 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_3_3:
3962 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3963 ; GFX900-NEXT: ;;#ASMSTART
3964 ; GFX900-NEXT: ; def v[0:3]
3965 ; GFX900-NEXT: ;;#ASMEND
3966 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
3967 ; GFX900-NEXT: ;;#ASMSTART
3968 ; GFX900-NEXT: ; def v[4:7]
3969 ; GFX900-NEXT: ;;#ASMEND
3970 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
3971 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
3972 ; GFX900-NEXT: global_store_dwordx3 v8, v[1:3], s[16:17]
3973 ; GFX900-NEXT: s_waitcnt vmcnt(0)
3974 ; GFX900-NEXT: s_setpc_b64 s[30:31]
3976 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_3_3:
3978 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3979 ; GFX90A-NEXT: ;;#ASMSTART
3980 ; GFX90A-NEXT: ; def v[0:3]
3981 ; GFX90A-NEXT: ;;#ASMEND
3982 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
3983 ; GFX90A-NEXT: ;;#ASMSTART
3984 ; GFX90A-NEXT: ; def v[4:7]
3985 ; GFX90A-NEXT: ;;#ASMEND
3986 ; GFX90A-NEXT: v_mov_b32_e32 v0, v6
3987 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
3988 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
3989 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
3990 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
3991 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
3993 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_3_3:
3995 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3996 ; GFX940-NEXT: ;;#ASMSTART
3997 ; GFX940-NEXT: ; def v[0:3]
3998 ; GFX940-NEXT: ;;#ASMEND
3999 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4000 ; GFX940-NEXT: ;;#ASMSTART
4001 ; GFX940-NEXT: ; def v[4:7]
4002 ; GFX940-NEXT: ;;#ASMEND
4003 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
4004 ; GFX940-NEXT: v_mov_b32_e32 v0, v6
4005 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4006 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
4007 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4008 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4009 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4010 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4011 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 3, i32 3>
4012 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4016 define void @v_shuffle_v3p3_v4p3__7_3_3(ptr addrspace(1) inreg %ptr) {
4017 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_3:
4019 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4020 ; GFX900-NEXT: ;;#ASMSTART
4021 ; GFX900-NEXT: ; def v[0:3]
4022 ; GFX900-NEXT: ;;#ASMEND
4023 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
4024 ; GFX900-NEXT: ;;#ASMSTART
4025 ; GFX900-NEXT: ; def v[4:7]
4026 ; GFX900-NEXT: ;;#ASMEND
4027 ; GFX900-NEXT: v_mov_b32_e32 v1, v7
4028 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
4029 ; GFX900-NEXT: global_store_dwordx3 v8, v[1:3], s[16:17]
4030 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4031 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4033 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_3:
4035 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4036 ; GFX90A-NEXT: ;;#ASMSTART
4037 ; GFX90A-NEXT: ; def v[0:3]
4038 ; GFX90A-NEXT: ;;#ASMEND
4039 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4040 ; GFX90A-NEXT: ;;#ASMSTART
4041 ; GFX90A-NEXT: ; def v[4:7]
4042 ; GFX90A-NEXT: ;;#ASMEND
4043 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
4044 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
4045 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
4046 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
4047 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4048 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4050 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_3:
4052 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4053 ; GFX940-NEXT: ;;#ASMSTART
4054 ; GFX940-NEXT: ; def v[0:3]
4055 ; GFX940-NEXT: ;;#ASMEND
4056 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4057 ; GFX940-NEXT: ;;#ASMSTART
4058 ; GFX940-NEXT: ; def v[4:7]
4059 ; GFX940-NEXT: ;;#ASMEND
4060 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
4061 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
4062 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4063 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
4064 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4065 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4066 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4067 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4068 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 3>
4069 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4073 define void @v_shuffle_v3p3_v4p3__7_u_3(ptr addrspace(1) inreg %ptr) {
4074 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_3:
4076 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4077 ; GFX900-NEXT: ;;#ASMSTART
4078 ; GFX900-NEXT: ; def v[0:3]
4079 ; GFX900-NEXT: ;;#ASMEND
4080 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
4081 ; GFX900-NEXT: ;;#ASMSTART
4082 ; GFX900-NEXT: ; def v[4:7]
4083 ; GFX900-NEXT: ;;#ASMEND
4084 ; GFX900-NEXT: v_mov_b32_e32 v1, v7
4085 ; GFX900-NEXT: global_store_dwordx3 v8, v[1:3], s[16:17]
4086 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4087 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4089 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_3:
4091 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4092 ; GFX90A-NEXT: ;;#ASMSTART
4093 ; GFX90A-NEXT: ; def v[0:3]
4094 ; GFX90A-NEXT: ;;#ASMEND
4095 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4096 ; GFX90A-NEXT: ;;#ASMSTART
4097 ; GFX90A-NEXT: ; def v[4:7]
4098 ; GFX90A-NEXT: ;;#ASMEND
4099 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
4100 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
4101 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
4102 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4103 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4105 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_3:
4107 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4108 ; GFX940-NEXT: ;;#ASMSTART
4109 ; GFX940-NEXT: ; def v[0:3]
4110 ; GFX940-NEXT: ;;#ASMEND
4111 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4112 ; GFX940-NEXT: ;;#ASMSTART
4113 ; GFX940-NEXT: ; def v[4:7]
4114 ; GFX940-NEXT: ;;#ASMEND
4115 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4116 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
4117 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
4118 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4119 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4120 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4121 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4122 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 3>
4123 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4127 define void @v_shuffle_v3p3_v4p3__7_0_3(ptr addrspace(1) inreg %ptr) {
4128 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_3:
4130 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4131 ; GFX900-NEXT: ;;#ASMSTART
4132 ; GFX900-NEXT: ; def v[0:3]
4133 ; GFX900-NEXT: ;;#ASMEND
4134 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
4135 ; GFX900-NEXT: ;;#ASMSTART
4136 ; GFX900-NEXT: ; def v[4:7]
4137 ; GFX900-NEXT: ;;#ASMEND
4138 ; GFX900-NEXT: v_mov_b32_e32 v1, v7
4139 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
4140 ; GFX900-NEXT: global_store_dwordx3 v8, v[1:3], s[16:17]
4141 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4142 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4144 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_3:
4146 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4147 ; GFX90A-NEXT: ;;#ASMSTART
4148 ; GFX90A-NEXT: ; def v[4:7]
4149 ; GFX90A-NEXT: ;;#ASMEND
4150 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4151 ; GFX90A-NEXT: ;;#ASMSTART
4152 ; GFX90A-NEXT: ; def v[0:3]
4153 ; GFX90A-NEXT: ;;#ASMEND
4154 ; GFX90A-NEXT: v_mov_b32_e32 v4, v7
4155 ; GFX90A-NEXT: v_mov_b32_e32 v5, v0
4156 ; GFX90A-NEXT: v_mov_b32_e32 v6, v3
4157 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
4158 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4159 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4161 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_3:
4163 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4164 ; GFX940-NEXT: ;;#ASMSTART
4165 ; GFX940-NEXT: ; def v[4:7]
4166 ; GFX940-NEXT: ;;#ASMEND
4167 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4168 ; GFX940-NEXT: ;;#ASMSTART
4169 ; GFX940-NEXT: ; def v[0:3]
4170 ; GFX940-NEXT: ;;#ASMEND
4171 ; GFX940-NEXT: v_mov_b32_e32 v4, v7
4172 ; GFX940-NEXT: v_mov_b32_e32 v5, v0
4173 ; GFX940-NEXT: v_mov_b32_e32 v6, v3
4174 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
4175 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4176 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4177 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4178 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4179 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 3>
4180 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4184 define void @v_shuffle_v3p3_v4p3__7_1_3(ptr addrspace(1) inreg %ptr) {
4185 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_3:
4187 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4188 ; GFX900-NEXT: ;;#ASMSTART
4189 ; GFX900-NEXT: ; def v[0:3]
4190 ; GFX900-NEXT: ;;#ASMEND
4191 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
4192 ; GFX900-NEXT: ;;#ASMSTART
4193 ; GFX900-NEXT: ; def v[4:7]
4194 ; GFX900-NEXT: ;;#ASMEND
4195 ; GFX900-NEXT: v_mov_b32_e32 v0, v7
4196 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
4197 ; GFX900-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
4198 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4199 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4201 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_3:
4203 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4204 ; GFX90A-NEXT: ;;#ASMSTART
4205 ; GFX90A-NEXT: ; def v[0:3]
4206 ; GFX90A-NEXT: ;;#ASMEND
4207 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4208 ; GFX90A-NEXT: ;;#ASMSTART
4209 ; GFX90A-NEXT: ; def v[4:7]
4210 ; GFX90A-NEXT: ;;#ASMEND
4211 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
4212 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
4213 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
4214 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4215 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4217 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_3:
4219 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4220 ; GFX940-NEXT: ;;#ASMSTART
4221 ; GFX940-NEXT: ; def v[0:3]
4222 ; GFX940-NEXT: ;;#ASMEND
4223 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4224 ; GFX940-NEXT: ;;#ASMSTART
4225 ; GFX940-NEXT: ; def v[4:7]
4226 ; GFX940-NEXT: ;;#ASMEND
4227 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4228 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
4229 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
4230 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4231 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4232 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4233 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4234 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 3>
4235 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4239 define void @v_shuffle_v3p3_v4p3__7_2_3(ptr addrspace(1) inreg %ptr) {
4240 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_3:
4242 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4243 ; GFX900-NEXT: ;;#ASMSTART
4244 ; GFX900-NEXT: ; def v[0:3]
4245 ; GFX900-NEXT: ;;#ASMEND
4246 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
4247 ; GFX900-NEXT: ;;#ASMSTART
4248 ; GFX900-NEXT: ; def v[4:7]
4249 ; GFX900-NEXT: ;;#ASMEND
4250 ; GFX900-NEXT: v_mov_b32_e32 v1, v7
4251 ; GFX900-NEXT: global_store_dwordx3 v8, v[1:3], s[16:17]
4252 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4253 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4255 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_3:
4257 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4258 ; GFX90A-NEXT: ;;#ASMSTART
4259 ; GFX90A-NEXT: ; def v[0:3]
4260 ; GFX90A-NEXT: ;;#ASMEND
4261 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4262 ; GFX90A-NEXT: ;;#ASMSTART
4263 ; GFX90A-NEXT: ; def v[4:7]
4264 ; GFX90A-NEXT: ;;#ASMEND
4265 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
4266 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
4267 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
4268 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
4269 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4270 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4272 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_3:
4274 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4275 ; GFX940-NEXT: ;;#ASMSTART
4276 ; GFX940-NEXT: ; def v[0:3]
4277 ; GFX940-NEXT: ;;#ASMEND
4278 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4279 ; GFX940-NEXT: ;;#ASMSTART
4280 ; GFX940-NEXT: ; def v[4:7]
4281 ; GFX940-NEXT: ;;#ASMEND
4282 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
4283 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
4284 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4285 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
4286 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4287 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4288 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4289 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4290 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 3>
4291 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4295 define void @v_shuffle_v3p3_v4p3__7_4_3(ptr addrspace(1) inreg %ptr) {
4296 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_3:
4298 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4299 ; GFX900-NEXT: ;;#ASMSTART
4300 ; GFX900-NEXT: ; def v[0:3]
4301 ; GFX900-NEXT: ;;#ASMEND
4302 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
4303 ; GFX900-NEXT: ;;#ASMSTART
4304 ; GFX900-NEXT: ; def v[4:7]
4305 ; GFX900-NEXT: ;;#ASMEND
4306 ; GFX900-NEXT: v_mov_b32_e32 v1, v7
4307 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
4308 ; GFX900-NEXT: global_store_dwordx3 v8, v[1:3], s[16:17]
4309 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4310 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4312 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_3:
4314 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4315 ; GFX90A-NEXT: ;;#ASMSTART
4316 ; GFX90A-NEXT: ; def v[0:3]
4317 ; GFX90A-NEXT: ;;#ASMEND
4318 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4319 ; GFX90A-NEXT: ;;#ASMSTART
4320 ; GFX90A-NEXT: ; def v[4:7]
4321 ; GFX90A-NEXT: ;;#ASMEND
4322 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
4323 ; GFX90A-NEXT: v_mov_b32_e32 v1, v4
4324 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
4325 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
4326 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4327 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4329 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_3:
4331 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4332 ; GFX940-NEXT: ;;#ASMSTART
4333 ; GFX940-NEXT: ; def v[0:3]
4334 ; GFX940-NEXT: ;;#ASMEND
4335 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4336 ; GFX940-NEXT: ;;#ASMSTART
4337 ; GFX940-NEXT: ; def v[4:7]
4338 ; GFX940-NEXT: ;;#ASMEND
4339 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4340 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
4341 ; GFX940-NEXT: v_mov_b32_e32 v1, v4
4342 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
4343 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4344 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4345 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4346 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4347 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 3>
4348 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4352 define void @v_shuffle_v3p3_v4p3__7_5_3(ptr addrspace(1) inreg %ptr) {
4353 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_3:
4355 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4356 ; GFX900-NEXT: ;;#ASMSTART
4357 ; GFX900-NEXT: ; def v[4:7]
4358 ; GFX900-NEXT: ;;#ASMEND
4359 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
4360 ; GFX900-NEXT: ;;#ASMSTART
4361 ; GFX900-NEXT: ; def v[0:3]
4362 ; GFX900-NEXT: ;;#ASMEND
4363 ; GFX900-NEXT: v_mov_b32_e32 v4, v7
4364 ; GFX900-NEXT: v_mov_b32_e32 v6, v3
4365 ; GFX900-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
4366 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4367 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4369 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_3:
4371 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4372 ; GFX90A-NEXT: ;;#ASMSTART
4373 ; GFX90A-NEXT: ; def v[4:7]
4374 ; GFX90A-NEXT: ;;#ASMEND
4375 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4376 ; GFX90A-NEXT: ;;#ASMSTART
4377 ; GFX90A-NEXT: ; def v[0:3]
4378 ; GFX90A-NEXT: ;;#ASMEND
4379 ; GFX90A-NEXT: v_mov_b32_e32 v4, v7
4380 ; GFX90A-NEXT: v_mov_b32_e32 v6, v3
4381 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
4382 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4383 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4385 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_3:
4387 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4388 ; GFX940-NEXT: ;;#ASMSTART
4389 ; GFX940-NEXT: ; def v[4:7]
4390 ; GFX940-NEXT: ;;#ASMEND
4391 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4392 ; GFX940-NEXT: ;;#ASMSTART
4393 ; GFX940-NEXT: ; def v[0:3]
4394 ; GFX940-NEXT: ;;#ASMEND
4395 ; GFX940-NEXT: v_mov_b32_e32 v4, v7
4396 ; GFX940-NEXT: v_mov_b32_e32 v6, v3
4397 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
4398 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4399 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4400 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4401 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4402 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 3>
4403 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4407 define void @v_shuffle_v3p3_v4p3__7_6_3(ptr addrspace(1) inreg %ptr) {
4408 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_3:
4410 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4411 ; GFX900-NEXT: ;;#ASMSTART
4412 ; GFX900-NEXT: ; def v[4:7]
4413 ; GFX900-NEXT: ;;#ASMEND
4414 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
4415 ; GFX900-NEXT: ;;#ASMSTART
4416 ; GFX900-NEXT: ; def v[0:3]
4417 ; GFX900-NEXT: ;;#ASMEND
4418 ; GFX900-NEXT: v_mov_b32_e32 v5, v7
4419 ; GFX900-NEXT: v_mov_b32_e32 v7, v3
4420 ; GFX900-NEXT: global_store_dwordx3 v8, v[5:7], s[16:17]
4421 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4422 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4424 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_3:
4426 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4427 ; GFX90A-NEXT: ;;#ASMSTART
4428 ; GFX90A-NEXT: ; def v[0:3]
4429 ; GFX90A-NEXT: ;;#ASMEND
4430 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4431 ; GFX90A-NEXT: ;;#ASMSTART
4432 ; GFX90A-NEXT: ; def v[4:7]
4433 ; GFX90A-NEXT: ;;#ASMEND
4434 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
4435 ; GFX90A-NEXT: v_mov_b32_e32 v1, v6
4436 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
4437 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
4438 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4439 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4441 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_3:
4443 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4444 ; GFX940-NEXT: ;;#ASMSTART
4445 ; GFX940-NEXT: ; def v[0:3]
4446 ; GFX940-NEXT: ;;#ASMEND
4447 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4448 ; GFX940-NEXT: ;;#ASMSTART
4449 ; GFX940-NEXT: ; def v[4:7]
4450 ; GFX940-NEXT: ;;#ASMEND
4451 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4452 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
4453 ; GFX940-NEXT: v_mov_b32_e32 v1, v6
4454 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
4455 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4456 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4457 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4458 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4459 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 3>
4460 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4464 define void @v_shuffle_v3p3_v4p3__u_4_4(ptr addrspace(1) inreg %ptr) {
4465 ; GFX9-LABEL: v_shuffle_v3p3_v4p3__u_4_4:
4467 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4468 ; GFX9-NEXT: s_setpc_b64 s[30:31]
4469 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4470 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 4, i32 4>
4471 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4475 define void @v_shuffle_v3p3_v4p3__0_4_4(ptr addrspace(1) inreg %ptr) {
4476 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_4_4:
4478 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4479 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
4480 ; GFX900-NEXT: ;;#ASMSTART
4481 ; GFX900-NEXT: ; def v[0:3]
4482 ; GFX900-NEXT: ;;#ASMEND
4483 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
4484 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4485 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4487 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_4_4:
4489 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4490 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
4491 ; GFX90A-NEXT: ;;#ASMSTART
4492 ; GFX90A-NEXT: ; def v[0:3]
4493 ; GFX90A-NEXT: ;;#ASMEND
4494 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
4495 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4496 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4498 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__0_4_4:
4500 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4501 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
4502 ; GFX940-NEXT: ;;#ASMSTART
4503 ; GFX940-NEXT: ; def v[0:3]
4504 ; GFX940-NEXT: ;;#ASMEND
4505 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
4506 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4507 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4508 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4509 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 4, i32 4>
4510 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4514 define void @v_shuffle_v3p3_v4p3__1_4_4(ptr addrspace(1) inreg %ptr) {
4515 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_4_4:
4517 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4518 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
4519 ; GFX900-NEXT: ;;#ASMSTART
4520 ; GFX900-NEXT: ; def v[0:3]
4521 ; GFX900-NEXT: ;;#ASMEND
4522 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
4523 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4524 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4526 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_4_4:
4528 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4529 ; GFX90A-NEXT: ;;#ASMSTART
4530 ; GFX90A-NEXT: ; def v[0:3]
4531 ; GFX90A-NEXT: ;;#ASMEND
4532 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
4533 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
4534 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
4535 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4536 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4538 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_4_4:
4540 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4541 ; GFX940-NEXT: ;;#ASMSTART
4542 ; GFX940-NEXT: ; def v[0:3]
4543 ; GFX940-NEXT: ;;#ASMEND
4544 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
4545 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
4546 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
4547 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4548 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4549 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4550 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 4, i32 4>
4551 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4555 define void @v_shuffle_v3p3_v4p3__2_4_4(ptr addrspace(1) inreg %ptr) {
4556 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_4_4:
4558 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4559 ; GFX900-NEXT: ;;#ASMSTART
4560 ; GFX900-NEXT: ; def v[0:3]
4561 ; GFX900-NEXT: ;;#ASMEND
4562 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
4563 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
4564 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
4565 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4566 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4568 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_4_4:
4570 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4571 ; GFX90A-NEXT: ;;#ASMSTART
4572 ; GFX90A-NEXT: ; def v[0:3]
4573 ; GFX90A-NEXT: ;;#ASMEND
4574 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
4575 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
4576 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
4577 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4578 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4580 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_4_4:
4582 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4583 ; GFX940-NEXT: ;;#ASMSTART
4584 ; GFX940-NEXT: ; def v[0:3]
4585 ; GFX940-NEXT: ;;#ASMEND
4586 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
4587 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
4588 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
4589 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4590 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4591 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4592 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 4, i32 4>
4593 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4597 define void @v_shuffle_v3p3_v4p3__3_4_4(ptr addrspace(1) inreg %ptr) {
4598 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_4_4:
4600 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4601 ; GFX900-NEXT: ;;#ASMSTART
4602 ; GFX900-NEXT: ; def v[0:3]
4603 ; GFX900-NEXT: ;;#ASMEND
4604 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
4605 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
4606 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
4607 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4608 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4610 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_4_4:
4612 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4613 ; GFX90A-NEXT: ;;#ASMSTART
4614 ; GFX90A-NEXT: ; def v[0:3]
4615 ; GFX90A-NEXT: ;;#ASMEND
4616 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
4617 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
4618 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
4619 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4620 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4622 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_4_4:
4624 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4625 ; GFX940-NEXT: ;;#ASMSTART
4626 ; GFX940-NEXT: ; def v[0:3]
4627 ; GFX940-NEXT: ;;#ASMEND
4628 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
4629 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
4630 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
4631 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4632 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4633 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4634 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 4, i32 4>
4635 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4639 define void @v_shuffle_v3p3_v4p3__4_4_4(ptr addrspace(1) inreg %ptr) {
4640 ; GFX9-LABEL: v_shuffle_v3p3_v4p3__4_4_4:
4642 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4643 ; GFX9-NEXT: s_setpc_b64 s[30:31]
4644 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4645 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 4, i32 4>
4646 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4650 define void @v_shuffle_v3p3_v4p3__5_4_4(ptr addrspace(1) inreg %ptr) {
4651 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_4_4:
4653 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4654 ; GFX900-NEXT: ;;#ASMSTART
4655 ; GFX900-NEXT: ; def v[0:3]
4656 ; GFX900-NEXT: ;;#ASMEND
4657 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
4658 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
4659 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
4660 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
4661 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4662 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4664 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_4_4:
4666 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4667 ; GFX90A-NEXT: ;;#ASMSTART
4668 ; GFX90A-NEXT: ; def v[0:3]
4669 ; GFX90A-NEXT: ;;#ASMEND
4670 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
4671 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
4672 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
4673 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
4674 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
4675 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4676 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4678 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_4_4:
4680 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4681 ; GFX940-NEXT: ;;#ASMSTART
4682 ; GFX940-NEXT: ; def v[0:3]
4683 ; GFX940-NEXT: ;;#ASMEND
4684 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
4685 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
4686 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
4687 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
4688 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
4689 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4690 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4691 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4692 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4693 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 4, i32 4>
4694 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4698 define void @v_shuffle_v3p3_v4p3__6_4_4(ptr addrspace(1) inreg %ptr) {
4699 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_4_4:
4701 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4702 ; GFX900-NEXT: ;;#ASMSTART
4703 ; GFX900-NEXT: ; def v[0:3]
4704 ; GFX900-NEXT: ;;#ASMEND
4705 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
4706 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
4707 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
4708 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
4709 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
4710 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4711 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4713 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_4_4:
4715 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4716 ; GFX90A-NEXT: ;;#ASMSTART
4717 ; GFX90A-NEXT: ; def v[0:3]
4718 ; GFX90A-NEXT: ;;#ASMEND
4719 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
4720 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
4721 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
4722 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
4723 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4724 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4726 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_4_4:
4728 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4729 ; GFX940-NEXT: ;;#ASMSTART
4730 ; GFX940-NEXT: ; def v[0:3]
4731 ; GFX940-NEXT: ;;#ASMEND
4732 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
4733 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
4734 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
4735 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
4736 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4737 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4738 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4739 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4740 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 4, i32 4>
4741 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4745 define void @v_shuffle_v3p3_v4p3__7_4_4(ptr addrspace(1) inreg %ptr) {
4746 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_4:
4748 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4749 ; GFX900-NEXT: ;;#ASMSTART
4750 ; GFX900-NEXT: ; def v[0:3]
4751 ; GFX900-NEXT: ;;#ASMEND
4752 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
4753 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
4754 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
4755 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
4756 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
4757 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4758 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4760 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_4:
4762 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4763 ; GFX90A-NEXT: ;;#ASMSTART
4764 ; GFX90A-NEXT: ; def v[0:3]
4765 ; GFX90A-NEXT: ;;#ASMEND
4766 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
4767 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
4768 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
4769 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
4770 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
4771 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4772 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4774 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_4:
4776 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4777 ; GFX940-NEXT: ;;#ASMSTART
4778 ; GFX940-NEXT: ; def v[0:3]
4779 ; GFX940-NEXT: ;;#ASMEND
4780 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
4781 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4782 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
4783 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
4784 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
4785 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4786 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4787 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4788 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4789 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 4>
4790 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4794 define void @v_shuffle_v3p3_v4p3__7_u_4(ptr addrspace(1) inreg %ptr) {
4795 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_4:
4797 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4798 ; GFX900-NEXT: ;;#ASMSTART
4799 ; GFX900-NEXT: ; def v[0:3]
4800 ; GFX900-NEXT: ;;#ASMEND
4801 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
4802 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
4803 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
4804 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
4805 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4806 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4808 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_4:
4810 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4811 ; GFX90A-NEXT: ;;#ASMSTART
4812 ; GFX90A-NEXT: ; def v[0:3]
4813 ; GFX90A-NEXT: ;;#ASMEND
4814 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
4815 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
4816 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
4817 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
4818 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4819 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4821 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_4:
4823 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4824 ; GFX940-NEXT: ;;#ASMSTART
4825 ; GFX940-NEXT: ; def v[0:3]
4826 ; GFX940-NEXT: ;;#ASMEND
4827 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
4828 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
4829 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
4830 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
4831 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4832 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4833 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4834 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4835 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 4>
4836 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4840 define void @v_shuffle_v3p3_v4p3__7_0_4(ptr addrspace(1) inreg %ptr) {
4841 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_4:
4843 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4844 ; GFX900-NEXT: ;;#ASMSTART
4845 ; GFX900-NEXT: ; def v[0:3]
4846 ; GFX900-NEXT: ;;#ASMEND
4847 ; GFX900-NEXT: ;;#ASMSTART
4848 ; GFX900-NEXT: ; def v[1:4]
4849 ; GFX900-NEXT: ;;#ASMEND
4850 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
4851 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
4852 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
4853 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
4854 ; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
4855 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4856 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4858 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_4:
4860 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4861 ; GFX90A-NEXT: ;;#ASMSTART
4862 ; GFX90A-NEXT: ; def v[0:3]
4863 ; GFX90A-NEXT: ;;#ASMEND
4864 ; GFX90A-NEXT: ;;#ASMSTART
4865 ; GFX90A-NEXT: ; def v[2:5]
4866 ; GFX90A-NEXT: ;;#ASMEND
4867 ; GFX90A-NEXT: v_mov_b32_e32 v7, 0
4868 ; GFX90A-NEXT: v_mov_b32_e32 v4, v5
4869 ; GFX90A-NEXT: v_mov_b32_e32 v5, v0
4870 ; GFX90A-NEXT: v_mov_b32_e32 v6, v2
4871 ; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
4872 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4873 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4875 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_4:
4877 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4878 ; GFX940-NEXT: ;;#ASMSTART
4879 ; GFX940-NEXT: ; def v[0:3]
4880 ; GFX940-NEXT: ;;#ASMEND
4881 ; GFX940-NEXT: v_mov_b32_e32 v7, 0
4882 ; GFX940-NEXT: ;;#ASMSTART
4883 ; GFX940-NEXT: ; def v[2:5]
4884 ; GFX940-NEXT: ;;#ASMEND
4885 ; GFX940-NEXT: s_nop 0
4886 ; GFX940-NEXT: v_mov_b32_e32 v4, v5
4887 ; GFX940-NEXT: v_mov_b32_e32 v5, v0
4888 ; GFX940-NEXT: v_mov_b32_e32 v6, v2
4889 ; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
4890 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4891 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4892 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4893 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4894 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 4>
4895 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4899 define void @v_shuffle_v3p3_v4p3__7_1_4(ptr addrspace(1) inreg %ptr) {
4900 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_4:
4902 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4903 ; GFX900-NEXT: ;;#ASMSTART
4904 ; GFX900-NEXT: ; def v[0:3]
4905 ; GFX900-NEXT: ;;#ASMEND
4906 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
4907 ; GFX900-NEXT: ;;#ASMSTART
4908 ; GFX900-NEXT: ; def v[2:5]
4909 ; GFX900-NEXT: ;;#ASMEND
4910 ; GFX900-NEXT: v_mov_b32_e32 v0, v5
4911 ; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
4912 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4913 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4915 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_4:
4917 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4918 ; GFX90A-NEXT: ;;#ASMSTART
4919 ; GFX90A-NEXT: ; def v[0:3]
4920 ; GFX90A-NEXT: ;;#ASMEND
4921 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
4922 ; GFX90A-NEXT: ;;#ASMSTART
4923 ; GFX90A-NEXT: ; def v[2:5]
4924 ; GFX90A-NEXT: ;;#ASMEND
4925 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
4926 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
4927 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4928 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4930 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_4:
4932 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4933 ; GFX940-NEXT: ;;#ASMSTART
4934 ; GFX940-NEXT: ; def v[0:3]
4935 ; GFX940-NEXT: ;;#ASMEND
4936 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
4937 ; GFX940-NEXT: ;;#ASMSTART
4938 ; GFX940-NEXT: ; def v[2:5]
4939 ; GFX940-NEXT: ;;#ASMEND
4940 ; GFX940-NEXT: s_nop 0
4941 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
4942 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
4943 ; GFX940-NEXT: s_waitcnt vmcnt(0)
4944 ; GFX940-NEXT: s_setpc_b64 s[30:31]
4945 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4946 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
4947 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 4>
4948 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
4952 define void @v_shuffle_v3p3_v4p3__7_2_4(ptr addrspace(1) inreg %ptr) {
4953 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_4:
4955 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4956 ; GFX900-NEXT: ;;#ASMSTART
4957 ; GFX900-NEXT: ; def v[0:3]
4958 ; GFX900-NEXT: ;;#ASMEND
4959 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
4960 ; GFX900-NEXT: ;;#ASMSTART
4961 ; GFX900-NEXT: ; def v[3:6]
4962 ; GFX900-NEXT: ;;#ASMEND
4963 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
4964 ; GFX900-NEXT: global_store_dwordx3 v7, v[1:3], s[16:17]
4965 ; GFX900-NEXT: s_waitcnt vmcnt(0)
4966 ; GFX900-NEXT: s_setpc_b64 s[30:31]
4968 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_4:
4970 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4971 ; GFX90A-NEXT: ;;#ASMSTART
4972 ; GFX90A-NEXT: ; def v[0:3]
4973 ; GFX90A-NEXT: ;;#ASMEND
4974 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
4975 ; GFX90A-NEXT: ;;#ASMSTART
4976 ; GFX90A-NEXT: ; def v[4:7]
4977 ; GFX90A-NEXT: ;;#ASMEND
4978 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
4979 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
4980 ; GFX90A-NEXT: v_mov_b32_e32 v2, v4
4981 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
4982 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
4983 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
4985 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_4:
4987 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4988 ; GFX940-NEXT: ;;#ASMSTART
4989 ; GFX940-NEXT: ; def v[0:3]
4990 ; GFX940-NEXT: ;;#ASMEND
4991 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
4992 ; GFX940-NEXT: ;;#ASMSTART
4993 ; GFX940-NEXT: ; def v[4:7]
4994 ; GFX940-NEXT: ;;#ASMEND
4995 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
4996 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
4997 ; GFX940-NEXT: v_mov_b32_e32 v2, v4
4998 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
4999 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5000 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5001 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5002 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5003 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 4>
5004 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5008 define void @v_shuffle_v3p3_v4p3__7_3_4(ptr addrspace(1) inreg %ptr) {
5009 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_4:
5011 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5012 ; GFX900-NEXT: ;;#ASMSTART
5013 ; GFX900-NEXT: ; def v[0:3]
5014 ; GFX900-NEXT: ;;#ASMEND
5015 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
5016 ; GFX900-NEXT: ;;#ASMSTART
5017 ; GFX900-NEXT: ; def v[4:7]
5018 ; GFX900-NEXT: ;;#ASMEND
5019 ; GFX900-NEXT: v_mov_b32_e32 v0, v7
5020 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
5021 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
5022 ; GFX900-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
5023 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5024 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5026 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_4:
5028 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5029 ; GFX90A-NEXT: ;;#ASMSTART
5030 ; GFX90A-NEXT: ; def v[0:3]
5031 ; GFX90A-NEXT: ;;#ASMEND
5032 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
5033 ; GFX90A-NEXT: ;;#ASMSTART
5034 ; GFX90A-NEXT: ; def v[4:7]
5035 ; GFX90A-NEXT: ;;#ASMEND
5036 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
5037 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
5038 ; GFX90A-NEXT: v_mov_b32_e32 v2, v4
5039 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
5040 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5041 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5043 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_4:
5045 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5046 ; GFX940-NEXT: ;;#ASMSTART
5047 ; GFX940-NEXT: ; def v[0:3]
5048 ; GFX940-NEXT: ;;#ASMEND
5049 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
5050 ; GFX940-NEXT: ;;#ASMSTART
5051 ; GFX940-NEXT: ; def v[4:7]
5052 ; GFX940-NEXT: ;;#ASMEND
5053 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
5054 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
5055 ; GFX940-NEXT: v_mov_b32_e32 v2, v4
5056 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
5057 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5058 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5059 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5060 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5061 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 4>
5062 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5066 define void @v_shuffle_v3p3_v4p3__7_5_4(ptr addrspace(1) inreg %ptr) {
5067 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_4:
5069 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5070 ; GFX900-NEXT: ;;#ASMSTART
5071 ; GFX900-NEXT: ; def v[0:3]
5072 ; GFX900-NEXT: ;;#ASMEND
5073 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
5074 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
5075 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
5076 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
5077 ; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
5078 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5079 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5081 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_4:
5083 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5084 ; GFX90A-NEXT: ;;#ASMSTART
5085 ; GFX90A-NEXT: ; def v[0:3]
5086 ; GFX90A-NEXT: ;;#ASMEND
5087 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
5088 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
5089 ; GFX90A-NEXT: v_mov_b32_e32 v3, v1
5090 ; GFX90A-NEXT: v_mov_b32_e32 v4, v0
5091 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
5092 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5093 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5095 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_4:
5097 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5098 ; GFX940-NEXT: ;;#ASMSTART
5099 ; GFX940-NEXT: ; def v[0:3]
5100 ; GFX940-NEXT: ;;#ASMEND
5101 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
5102 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
5103 ; GFX940-NEXT: v_mov_b32_e32 v3, v1
5104 ; GFX940-NEXT: v_mov_b32_e32 v4, v0
5105 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
5106 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5107 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5108 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5109 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5110 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 4>
5111 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5115 define void @v_shuffle_v3p3_v4p3__7_6_4(ptr addrspace(1) inreg %ptr) {
5116 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_4:
5118 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5119 ; GFX900-NEXT: ;;#ASMSTART
5120 ; GFX900-NEXT: ; def v[0:3]
5121 ; GFX900-NEXT: ;;#ASMEND
5122 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
5123 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
5124 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
5125 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
5126 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5127 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5129 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_4:
5131 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5132 ; GFX90A-NEXT: v_mov_b32_e32 v7, 0
5133 ; GFX90A-NEXT: ;;#ASMSTART
5134 ; GFX90A-NEXT: ; def v[0:3]
5135 ; GFX90A-NEXT: ;;#ASMEND
5136 ; GFX90A-NEXT: v_mov_b32_e32 v4, v3
5137 ; GFX90A-NEXT: v_mov_b32_e32 v5, v2
5138 ; GFX90A-NEXT: v_mov_b32_e32 v6, v0
5139 ; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
5140 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5141 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5143 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_4:
5145 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5146 ; GFX940-NEXT: v_mov_b32_e32 v7, 0
5147 ; GFX940-NEXT: ;;#ASMSTART
5148 ; GFX940-NEXT: ; def v[0:3]
5149 ; GFX940-NEXT: ;;#ASMEND
5150 ; GFX940-NEXT: s_nop 0
5151 ; GFX940-NEXT: v_mov_b32_e32 v4, v3
5152 ; GFX940-NEXT: v_mov_b32_e32 v5, v2
5153 ; GFX940-NEXT: v_mov_b32_e32 v6, v0
5154 ; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
5155 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5156 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5157 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5158 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5159 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 4>
5160 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5164 define void @v_shuffle_v3p3_v4p3__u_5_5(ptr addrspace(1) inreg %ptr) {
5165 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_5_5:
5167 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5168 ; GFX900-NEXT: ;;#ASMSTART
5169 ; GFX900-NEXT: ; def v[0:3]
5170 ; GFX900-NEXT: ;;#ASMEND
5171 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
5172 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
5173 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5174 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5175 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5177 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_5_5:
5179 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5180 ; GFX90A-NEXT: ;;#ASMSTART
5181 ; GFX90A-NEXT: ; def v[0:3]
5182 ; GFX90A-NEXT: ;;#ASMEND
5183 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
5184 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
5185 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5186 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5187 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5189 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__u_5_5:
5191 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5192 ; GFX940-NEXT: ;;#ASMSTART
5193 ; GFX940-NEXT: ; def v[0:3]
5194 ; GFX940-NEXT: ;;#ASMEND
5195 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
5196 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
5197 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
5198 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5199 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5200 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5201 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5202 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>
5203 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5207 define void @v_shuffle_v3p3_v4p3__0_5_5(ptr addrspace(1) inreg %ptr) {
5208 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_5_5:
5210 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5211 ; GFX900-NEXT: ;;#ASMSTART
5212 ; GFX900-NEXT: ; def v[0:3]
5213 ; GFX900-NEXT: ;;#ASMEND
5214 ; GFX900-NEXT: ;;#ASMSTART
5215 ; GFX900-NEXT: ; def v[1:4]
5216 ; GFX900-NEXT: ;;#ASMEND
5217 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
5218 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
5219 ; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]
5220 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5221 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5223 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_5_5:
5225 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5226 ; GFX90A-NEXT: ;;#ASMSTART
5227 ; GFX90A-NEXT: ; def v[0:3]
5228 ; GFX90A-NEXT: ;;#ASMEND
5229 ; GFX90A-NEXT: ;;#ASMSTART
5230 ; GFX90A-NEXT: ; def v[2:5]
5231 ; GFX90A-NEXT: ;;#ASMEND
5232 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
5233 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
5234 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
5235 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
5236 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5237 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5239 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__0_5_5:
5241 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5242 ; GFX940-NEXT: ;;#ASMSTART
5243 ; GFX940-NEXT: ; def v[0:3]
5244 ; GFX940-NEXT: ;;#ASMEND
5245 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
5246 ; GFX940-NEXT: ;;#ASMSTART
5247 ; GFX940-NEXT: ; def v[2:5]
5248 ; GFX940-NEXT: ;;#ASMEND
5249 ; GFX940-NEXT: s_nop 0
5250 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
5251 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
5252 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
5253 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5254 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5255 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5256 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5257 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 5, i32 5>
5258 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5262 define void @v_shuffle_v3p3_v4p3__1_5_5(ptr addrspace(1) inreg %ptr) {
5263 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_5_5:
5265 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5266 ; GFX900-NEXT: ;;#ASMSTART
5267 ; GFX900-NEXT: ; def v[0:3]
5268 ; GFX900-NEXT: ;;#ASMEND
5269 ; GFX900-NEXT: ;;#ASMSTART
5270 ; GFX900-NEXT: ; def v[2:5]
5271 ; GFX900-NEXT: ;;#ASMEND
5272 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
5273 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
5274 ; GFX900-NEXT: global_store_dwordx3 v6, v[1:3], s[16:17]
5275 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5276 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5278 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_5_5:
5280 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5281 ; GFX90A-NEXT: ;;#ASMSTART
5282 ; GFX90A-NEXT: ; def v[0:3]
5283 ; GFX90A-NEXT: ;;#ASMEND
5284 ; GFX90A-NEXT: ;;#ASMSTART
5285 ; GFX90A-NEXT: ; def v[2:5]
5286 ; GFX90A-NEXT: ;;#ASMEND
5287 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
5288 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
5289 ; GFX90A-NEXT: v_mov_b32_e32 v4, v3
5290 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
5291 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5292 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5294 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_5_5:
5296 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5297 ; GFX940-NEXT: ;;#ASMSTART
5298 ; GFX940-NEXT: ; def v[0:3]
5299 ; GFX940-NEXT: ;;#ASMEND
5300 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
5301 ; GFX940-NEXT: ;;#ASMSTART
5302 ; GFX940-NEXT: ; def v[2:5]
5303 ; GFX940-NEXT: ;;#ASMEND
5304 ; GFX940-NEXT: s_nop 0
5305 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
5306 ; GFX940-NEXT: v_mov_b32_e32 v4, v3
5307 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
5308 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5309 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5310 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5311 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5312 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 5, i32 5>
5313 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5317 define void @v_shuffle_v3p3_v4p3__2_5_5(ptr addrspace(1) inreg %ptr) {
5318 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_5_5:
5320 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5321 ; GFX900-NEXT: ;;#ASMSTART
5322 ; GFX900-NEXT: ; def v[0:3]
5323 ; GFX900-NEXT: ;;#ASMEND
5324 ; GFX900-NEXT: ;;#ASMSTART
5325 ; GFX900-NEXT: ; def v[3:6]
5326 ; GFX900-NEXT: ;;#ASMEND
5327 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
5328 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
5329 ; GFX900-NEXT: v_mov_b32_e32 v5, v4
5330 ; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]
5331 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5332 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5334 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_5_5:
5336 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5337 ; GFX90A-NEXT: ;;#ASMSTART
5338 ; GFX90A-NEXT: ; def v[4:7]
5339 ; GFX90A-NEXT: ;;#ASMEND
5340 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
5341 ; GFX90A-NEXT: ;;#ASMSTART
5342 ; GFX90A-NEXT: ; def v[0:3]
5343 ; GFX90A-NEXT: ;;#ASMEND
5344 ; GFX90A-NEXT: v_mov_b32_e32 v4, v2
5345 ; GFX90A-NEXT: v_mov_b32_e32 v6, v5
5346 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
5347 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5348 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5350 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_5_5:
5352 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5353 ; GFX940-NEXT: ;;#ASMSTART
5354 ; GFX940-NEXT: ; def v[4:7]
5355 ; GFX940-NEXT: ;;#ASMEND
5356 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
5357 ; GFX940-NEXT: ;;#ASMSTART
5358 ; GFX940-NEXT: ; def v[0:3]
5359 ; GFX940-NEXT: ;;#ASMEND
5360 ; GFX940-NEXT: v_mov_b32_e32 v6, v5
5361 ; GFX940-NEXT: v_mov_b32_e32 v4, v2
5362 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
5363 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5364 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5365 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5366 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5367 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 5, i32 5>
5368 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5372 define void @v_shuffle_v3p3_v4p3__3_5_5(ptr addrspace(1) inreg %ptr) {
5373 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_5_5:
5375 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5376 ; GFX900-NEXT: ;;#ASMSTART
5377 ; GFX900-NEXT: ; def v[4:7]
5378 ; GFX900-NEXT: ;;#ASMEND
5379 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
5380 ; GFX900-NEXT: ;;#ASMSTART
5381 ; GFX900-NEXT: ; def v[0:3]
5382 ; GFX900-NEXT: ;;#ASMEND
5383 ; GFX900-NEXT: v_mov_b32_e32 v4, v3
5384 ; GFX900-NEXT: v_mov_b32_e32 v6, v5
5385 ; GFX900-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
5386 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5387 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5389 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_5_5:
5391 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5392 ; GFX90A-NEXT: ;;#ASMSTART
5393 ; GFX90A-NEXT: ; def v[4:7]
5394 ; GFX90A-NEXT: ;;#ASMEND
5395 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
5396 ; GFX90A-NEXT: ;;#ASMSTART
5397 ; GFX90A-NEXT: ; def v[0:3]
5398 ; GFX90A-NEXT: ;;#ASMEND
5399 ; GFX90A-NEXT: v_mov_b32_e32 v4, v3
5400 ; GFX90A-NEXT: v_mov_b32_e32 v6, v5
5401 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
5402 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5403 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5405 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_5_5:
5407 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5408 ; GFX940-NEXT: ;;#ASMSTART
5409 ; GFX940-NEXT: ; def v[4:7]
5410 ; GFX940-NEXT: ;;#ASMEND
5411 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
5412 ; GFX940-NEXT: ;;#ASMSTART
5413 ; GFX940-NEXT: ; def v[0:3]
5414 ; GFX940-NEXT: ;;#ASMEND
5415 ; GFX940-NEXT: v_mov_b32_e32 v6, v5
5416 ; GFX940-NEXT: v_mov_b32_e32 v4, v3
5417 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
5418 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5419 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5420 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5421 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5422 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 5, i32 5>
5423 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5427 define void @v_shuffle_v3p3_v4p3__4_5_5(ptr addrspace(1) inreg %ptr) {
5428 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_5_5:
5430 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5431 ; GFX900-NEXT: ;;#ASMSTART
5432 ; GFX900-NEXT: ; def v[0:3]
5433 ; GFX900-NEXT: ;;#ASMEND
5434 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
5435 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
5436 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5437 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5438 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5440 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_5_5:
5442 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5443 ; GFX90A-NEXT: ;;#ASMSTART
5444 ; GFX90A-NEXT: ; def v[0:3]
5445 ; GFX90A-NEXT: ;;#ASMEND
5446 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
5447 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
5448 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5449 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5450 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5452 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__4_5_5:
5454 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5455 ; GFX940-NEXT: ;;#ASMSTART
5456 ; GFX940-NEXT: ; def v[0:3]
5457 ; GFX940-NEXT: ;;#ASMEND
5458 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
5459 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
5460 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
5461 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5462 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5463 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5464 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5465 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 5, i32 5>
5466 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5470 define void @v_shuffle_v3p3_v4p3__5_5_5(ptr addrspace(1) inreg %ptr) {
5471 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_5_5:
5473 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5474 ; GFX900-NEXT: ;;#ASMSTART
5475 ; GFX900-NEXT: ; def v[0:3]
5476 ; GFX900-NEXT: ;;#ASMEND
5477 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
5478 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
5479 ; GFX900-NEXT: v_mov_b32_e32 v3, v1
5480 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
5481 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5482 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5484 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_5_5:
5486 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5487 ; GFX90A-NEXT: ;;#ASMSTART
5488 ; GFX90A-NEXT: ; def v[0:3]
5489 ; GFX90A-NEXT: ;;#ASMEND
5490 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
5491 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
5492 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
5493 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5494 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5495 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5497 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_5_5:
5499 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5500 ; GFX940-NEXT: ;;#ASMSTART
5501 ; GFX940-NEXT: ; def v[0:3]
5502 ; GFX940-NEXT: ;;#ASMEND
5503 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
5504 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
5505 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
5506 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
5507 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5508 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5509 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5510 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5511 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 5, i32 5>
5512 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5516 define void @v_shuffle_v3p3_v4p3__6_5_5(ptr addrspace(1) inreg %ptr) {
5517 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_5_5:
5519 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5520 ; GFX900-NEXT: ;;#ASMSTART
5521 ; GFX900-NEXT: ; def v[0:3]
5522 ; GFX900-NEXT: ;;#ASMEND
5523 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
5524 ; GFX900-NEXT: v_mov_b32_e32 v0, v2
5525 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
5526 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5527 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5528 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5530 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_5_5:
5532 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5533 ; GFX90A-NEXT: ;;#ASMSTART
5534 ; GFX90A-NEXT: ; def v[0:3]
5535 ; GFX90A-NEXT: ;;#ASMEND
5536 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
5537 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
5538 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
5539 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5540 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5541 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5543 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_5_5:
5545 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5546 ; GFX940-NEXT: ;;#ASMSTART
5547 ; GFX940-NEXT: ; def v[0:3]
5548 ; GFX940-NEXT: ;;#ASMEND
5549 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
5550 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
5551 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
5552 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
5553 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5554 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5555 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5556 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5557 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 5, i32 5>
5558 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5562 define void @v_shuffle_v3p3_v4p3__7_5_5(ptr addrspace(1) inreg %ptr) {
5563 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_5:
5565 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5566 ; GFX900-NEXT: ;;#ASMSTART
5567 ; GFX900-NEXT: ; def v[0:3]
5568 ; GFX900-NEXT: ;;#ASMEND
5569 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
5570 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
5571 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
5572 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5573 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5574 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5576 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_5:
5578 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5579 ; GFX90A-NEXT: ;;#ASMSTART
5580 ; GFX90A-NEXT: ; def v[0:3]
5581 ; GFX90A-NEXT: ;;#ASMEND
5582 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
5583 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
5584 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
5585 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5586 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5587 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5589 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_5:
5591 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5592 ; GFX940-NEXT: ;;#ASMSTART
5593 ; GFX940-NEXT: ; def v[0:3]
5594 ; GFX940-NEXT: ;;#ASMEND
5595 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
5596 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
5597 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
5598 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
5599 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5600 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5601 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5602 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5603 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 5>
5604 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5608 define void @v_shuffle_v3p3_v4p3__7_u_5(ptr addrspace(1) inreg %ptr) {
5609 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_5:
5611 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5612 ; GFX900-NEXT: ;;#ASMSTART
5613 ; GFX900-NEXT: ; def v[0:3]
5614 ; GFX900-NEXT: ;;#ASMEND
5615 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
5616 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
5617 ; GFX900-NEXT: v_mov_b32_e32 v2, v1
5618 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5619 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5620 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5622 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_5:
5624 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5625 ; GFX90A-NEXT: ;;#ASMSTART
5626 ; GFX90A-NEXT: ; def v[0:3]
5627 ; GFX90A-NEXT: ;;#ASMEND
5628 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
5629 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
5630 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
5631 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
5632 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5633 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5635 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_5:
5637 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5638 ; GFX940-NEXT: ;;#ASMSTART
5639 ; GFX940-NEXT: ; def v[0:3]
5640 ; GFX940-NEXT: ;;#ASMEND
5641 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
5642 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
5643 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
5644 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
5645 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5646 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5647 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5648 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5649 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 5>
5650 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5654 define void @v_shuffle_v3p3_v4p3__7_0_5(ptr addrspace(1) inreg %ptr) {
5655 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_5:
5657 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5658 ; GFX900-NEXT: ;;#ASMSTART
5659 ; GFX900-NEXT: ; def v[0:3]
5660 ; GFX900-NEXT: ;;#ASMEND
5661 ; GFX900-NEXT: ;;#ASMSTART
5662 ; GFX900-NEXT: ; def v[1:4]
5663 ; GFX900-NEXT: ;;#ASMEND
5664 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
5665 ; GFX900-NEXT: v_mov_b32_e32 v3, v4
5666 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
5667 ; GFX900-NEXT: v_mov_b32_e32 v5, v2
5668 ; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]
5669 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5670 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5672 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_5:
5674 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5675 ; GFX90A-NEXT: ;;#ASMSTART
5676 ; GFX90A-NEXT: ; def v[0:3]
5677 ; GFX90A-NEXT: ;;#ASMEND
5678 ; GFX90A-NEXT: ;;#ASMSTART
5679 ; GFX90A-NEXT: ; def v[2:5]
5680 ; GFX90A-NEXT: ;;#ASMEND
5681 ; GFX90A-NEXT: v_mov_b32_e32 v7, 0
5682 ; GFX90A-NEXT: v_mov_b32_e32 v4, v5
5683 ; GFX90A-NEXT: v_mov_b32_e32 v5, v0
5684 ; GFX90A-NEXT: v_mov_b32_e32 v6, v3
5685 ; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
5686 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5687 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5689 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_5:
5691 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5692 ; GFX940-NEXT: ;;#ASMSTART
5693 ; GFX940-NEXT: ; def v[0:3]
5694 ; GFX940-NEXT: ;;#ASMEND
5695 ; GFX940-NEXT: v_mov_b32_e32 v7, 0
5696 ; GFX940-NEXT: ;;#ASMSTART
5697 ; GFX940-NEXT: ; def v[2:5]
5698 ; GFX940-NEXT: ;;#ASMEND
5699 ; GFX940-NEXT: s_nop 0
5700 ; GFX940-NEXT: v_mov_b32_e32 v4, v5
5701 ; GFX940-NEXT: v_mov_b32_e32 v5, v0
5702 ; GFX940-NEXT: v_mov_b32_e32 v6, v3
5703 ; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
5704 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5705 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5706 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5707 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5708 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 5>
5709 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5713 define void @v_shuffle_v3p3_v4p3__7_1_5(ptr addrspace(1) inreg %ptr) {
5714 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_5:
5716 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5717 ; GFX900-NEXT: ;;#ASMSTART
5718 ; GFX900-NEXT: ; def v[0:3]
5719 ; GFX900-NEXT: ;;#ASMEND
5720 ; GFX900-NEXT: ;;#ASMSTART
5721 ; GFX900-NEXT: ; def v[2:5]
5722 ; GFX900-NEXT: ;;#ASMEND
5723 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
5724 ; GFX900-NEXT: v_mov_b32_e32 v0, v5
5725 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
5726 ; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
5727 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5728 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5730 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_5:
5732 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5733 ; GFX90A-NEXT: ;;#ASMSTART
5734 ; GFX90A-NEXT: ; def v[0:3]
5735 ; GFX90A-NEXT: ;;#ASMEND
5736 ; GFX90A-NEXT: ;;#ASMSTART
5737 ; GFX90A-NEXT: ; def v[2:5]
5738 ; GFX90A-NEXT: ;;#ASMEND
5739 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
5740 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
5741 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
5742 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
5743 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5744 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5746 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_5:
5748 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5749 ; GFX940-NEXT: ;;#ASMSTART
5750 ; GFX940-NEXT: ; def v[0:3]
5751 ; GFX940-NEXT: ;;#ASMEND
5752 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
5753 ; GFX940-NEXT: ;;#ASMSTART
5754 ; GFX940-NEXT: ; def v[2:5]
5755 ; GFX940-NEXT: ;;#ASMEND
5756 ; GFX940-NEXT: s_nop 0
5757 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
5758 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
5759 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
5760 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5761 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5762 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5763 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5764 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 5>
5765 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5769 define void @v_shuffle_v3p3_v4p3__7_2_5(ptr addrspace(1) inreg %ptr) {
5770 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_5:
5772 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5773 ; GFX900-NEXT: ;;#ASMSTART
5774 ; GFX900-NEXT: ; def v[0:3]
5775 ; GFX900-NEXT: ;;#ASMEND
5776 ; GFX900-NEXT: ;;#ASMSTART
5777 ; GFX900-NEXT: ; def v[3:6]
5778 ; GFX900-NEXT: ;;#ASMEND
5779 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
5780 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
5781 ; GFX900-NEXT: v_mov_b32_e32 v3, v4
5782 ; GFX900-NEXT: global_store_dwordx3 v7, v[1:3], s[16:17]
5783 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5784 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5786 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_5:
5788 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5789 ; GFX90A-NEXT: ;;#ASMSTART
5790 ; GFX90A-NEXT: ; def v[0:3]
5791 ; GFX90A-NEXT: ;;#ASMEND
5792 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
5793 ; GFX90A-NEXT: ;;#ASMSTART
5794 ; GFX90A-NEXT: ; def v[4:7]
5795 ; GFX90A-NEXT: ;;#ASMEND
5796 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
5797 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
5798 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
5799 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
5800 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5801 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5803 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_5:
5805 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5806 ; GFX940-NEXT: ;;#ASMSTART
5807 ; GFX940-NEXT: ; def v[0:3]
5808 ; GFX940-NEXT: ;;#ASMEND
5809 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
5810 ; GFX940-NEXT: ;;#ASMSTART
5811 ; GFX940-NEXT: ; def v[4:7]
5812 ; GFX940-NEXT: ;;#ASMEND
5813 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
5814 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
5815 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
5816 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
5817 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5818 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5819 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5820 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5821 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 5>
5822 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5826 define void @v_shuffle_v3p3_v4p3__7_3_5(ptr addrspace(1) inreg %ptr) {
5827 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_5:
5829 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5830 ; GFX900-NEXT: ;;#ASMSTART
5831 ; GFX900-NEXT: ; def v[0:3]
5832 ; GFX900-NEXT: ;;#ASMEND
5833 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
5834 ; GFX900-NEXT: ;;#ASMSTART
5835 ; GFX900-NEXT: ; def v[4:7]
5836 ; GFX900-NEXT: ;;#ASMEND
5837 ; GFX900-NEXT: v_mov_b32_e32 v0, v7
5838 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
5839 ; GFX900-NEXT: v_mov_b32_e32 v2, v5
5840 ; GFX900-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
5841 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5842 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5844 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_5:
5846 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5847 ; GFX90A-NEXT: ;;#ASMSTART
5848 ; GFX90A-NEXT: ; def v[0:3]
5849 ; GFX90A-NEXT: ;;#ASMEND
5850 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
5851 ; GFX90A-NEXT: ;;#ASMSTART
5852 ; GFX90A-NEXT: ; def v[4:7]
5853 ; GFX90A-NEXT: ;;#ASMEND
5854 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
5855 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
5856 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
5857 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
5858 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5859 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5861 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_5:
5863 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5864 ; GFX940-NEXT: ;;#ASMSTART
5865 ; GFX940-NEXT: ; def v[0:3]
5866 ; GFX940-NEXT: ;;#ASMEND
5867 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
5868 ; GFX940-NEXT: ;;#ASMSTART
5869 ; GFX940-NEXT: ; def v[4:7]
5870 ; GFX940-NEXT: ;;#ASMEND
5871 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
5872 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
5873 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
5874 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
5875 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5876 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5877 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5878 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5879 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 5>
5880 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5884 define void @v_shuffle_v3p3_v4p3__7_4_5(ptr addrspace(1) inreg %ptr) {
5885 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_5:
5887 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5888 ; GFX900-NEXT: ;;#ASMSTART
5889 ; GFX900-NEXT: ; def v[0:3]
5890 ; GFX900-NEXT: ;;#ASMEND
5891 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
5892 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
5893 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
5894 ; GFX900-NEXT: v_mov_b32_e32 v4, v1
5895 ; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
5896 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5897 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5899 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_5:
5901 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5902 ; GFX90A-NEXT: ;;#ASMSTART
5903 ; GFX90A-NEXT: ; def v[0:3]
5904 ; GFX90A-NEXT: ;;#ASMEND
5905 ; GFX90A-NEXT: v_mov_b32_e32 v5, 0
5906 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
5907 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
5908 ; GFX90A-NEXT: v_mov_b32_e32 v4, v1
5909 ; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
5910 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5911 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5913 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_5:
5915 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5916 ; GFX940-NEXT: ;;#ASMSTART
5917 ; GFX940-NEXT: ; def v[0:3]
5918 ; GFX940-NEXT: ;;#ASMEND
5919 ; GFX940-NEXT: v_mov_b32_e32 v5, 0
5920 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
5921 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
5922 ; GFX940-NEXT: v_mov_b32_e32 v4, v1
5923 ; GFX940-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
5924 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5925 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5926 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5927 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5928 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 5>
5929 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5933 define void @v_shuffle_v3p3_v4p3__7_6_5(ptr addrspace(1) inreg %ptr) {
5934 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_5:
5936 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5937 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
5938 ; GFX900-NEXT: ;;#ASMSTART
5939 ; GFX900-NEXT: ; def v[0:3]
5940 ; GFX900-NEXT: ;;#ASMEND
5941 ; GFX900-NEXT: v_mov_b32_e32 v4, v2
5942 ; GFX900-NEXT: v_mov_b32_e32 v5, v1
5943 ; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]
5944 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5945 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5947 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_5:
5949 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5950 ; GFX90A-NEXT: v_mov_b32_e32 v7, 0
5951 ; GFX90A-NEXT: ;;#ASMSTART
5952 ; GFX90A-NEXT: ; def v[0:3]
5953 ; GFX90A-NEXT: ;;#ASMEND
5954 ; GFX90A-NEXT: v_mov_b32_e32 v4, v3
5955 ; GFX90A-NEXT: v_mov_b32_e32 v5, v2
5956 ; GFX90A-NEXT: v_mov_b32_e32 v6, v1
5957 ; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
5958 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
5959 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
5961 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_5:
5963 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5964 ; GFX940-NEXT: v_mov_b32_e32 v7, 0
5965 ; GFX940-NEXT: ;;#ASMSTART
5966 ; GFX940-NEXT: ; def v[0:3]
5967 ; GFX940-NEXT: ;;#ASMEND
5968 ; GFX940-NEXT: s_nop 0
5969 ; GFX940-NEXT: v_mov_b32_e32 v4, v3
5970 ; GFX940-NEXT: v_mov_b32_e32 v5, v2
5971 ; GFX940-NEXT: v_mov_b32_e32 v6, v1
5972 ; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
5973 ; GFX940-NEXT: s_waitcnt vmcnt(0)
5974 ; GFX940-NEXT: s_setpc_b64 s[30:31]
5975 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5976 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
5977 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 5>
5978 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
5982 define void @v_shuffle_v3p3_v4p3__u_6_6(ptr addrspace(1) inreg %ptr) {
5983 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_6_6:
5985 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5986 ; GFX900-NEXT: ;;#ASMSTART
5987 ; GFX900-NEXT: ; def v[0:3]
5988 ; GFX900-NEXT: ;;#ASMEND
5989 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
5990 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
5991 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
5992 ; GFX900-NEXT: s_waitcnt vmcnt(0)
5993 ; GFX900-NEXT: s_setpc_b64 s[30:31]
5995 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_6_6:
5997 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5998 ; GFX90A-NEXT: ;;#ASMSTART
5999 ; GFX90A-NEXT: ; def v[0:3]
6000 ; GFX90A-NEXT: ;;#ASMEND
6001 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
6002 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
6003 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6004 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6005 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6007 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__u_6_6:
6009 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6010 ; GFX940-NEXT: ;;#ASMSTART
6011 ; GFX940-NEXT: ; def v[0:3]
6012 ; GFX940-NEXT: ;;#ASMEND
6013 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
6014 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
6015 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6016 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6017 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6018 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6019 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6020 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 6, i32 6>
6021 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6025 define void @v_shuffle_v3p3_v4p3__0_6_6(ptr addrspace(1) inreg %ptr) {
6026 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_6_6:
6028 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6029 ; GFX900-NEXT: ;;#ASMSTART
6030 ; GFX900-NEXT: ; def v[0:3]
6031 ; GFX900-NEXT: ;;#ASMEND
6032 ; GFX900-NEXT: ;;#ASMSTART
6033 ; GFX900-NEXT: ; def v[1:4]
6034 ; GFX900-NEXT: ;;#ASMEND
6035 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
6036 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
6037 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
6038 ; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]
6039 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6040 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6042 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_6_6:
6044 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6045 ; GFX90A-NEXT: ;;#ASMSTART
6046 ; GFX90A-NEXT: ; def v[0:3]
6047 ; GFX90A-NEXT: ;;#ASMEND
6048 ; GFX90A-NEXT: ;;#ASMSTART
6049 ; GFX90A-NEXT: ; def v[2:5]
6050 ; GFX90A-NEXT: ;;#ASMEND
6051 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
6052 ; GFX90A-NEXT: v_mov_b32_e32 v1, v4
6053 ; GFX90A-NEXT: v_mov_b32_e32 v2, v4
6054 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
6055 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6056 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6058 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__0_6_6:
6060 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6061 ; GFX940-NEXT: ;;#ASMSTART
6062 ; GFX940-NEXT: ; def v[0:3]
6063 ; GFX940-NEXT: ;;#ASMEND
6064 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
6065 ; GFX940-NEXT: ;;#ASMSTART
6066 ; GFX940-NEXT: ; def v[2:5]
6067 ; GFX940-NEXT: ;;#ASMEND
6068 ; GFX940-NEXT: s_nop 0
6069 ; GFX940-NEXT: v_mov_b32_e32 v1, v4
6070 ; GFX940-NEXT: v_mov_b32_e32 v2, v4
6071 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
6072 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6073 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6074 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6075 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6076 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 6, i32 6>
6077 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6081 define void @v_shuffle_v3p3_v4p3__1_6_6(ptr addrspace(1) inreg %ptr) {
6082 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_6_6:
6084 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6085 ; GFX900-NEXT: ;;#ASMSTART
6086 ; GFX900-NEXT: ; def v[0:3]
6087 ; GFX900-NEXT: ;;#ASMEND
6088 ; GFX900-NEXT: ;;#ASMSTART
6089 ; GFX900-NEXT: ; def v[2:5]
6090 ; GFX900-NEXT: ;;#ASMEND
6091 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
6092 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
6093 ; GFX900-NEXT: v_mov_b32_e32 v3, v4
6094 ; GFX900-NEXT: global_store_dwordx3 v6, v[1:3], s[16:17]
6095 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6096 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6098 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_6_6:
6100 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6101 ; GFX90A-NEXT: ;;#ASMSTART
6102 ; GFX90A-NEXT: ; def v[0:3]
6103 ; GFX90A-NEXT: ;;#ASMEND
6104 ; GFX90A-NEXT: ;;#ASMSTART
6105 ; GFX90A-NEXT: ; def v[2:5]
6106 ; GFX90A-NEXT: ;;#ASMEND
6107 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
6108 ; GFX90A-NEXT: v_mov_b32_e32 v2, v1
6109 ; GFX90A-NEXT: v_mov_b32_e32 v3, v4
6110 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
6111 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6112 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6114 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_6_6:
6116 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6117 ; GFX940-NEXT: ;;#ASMSTART
6118 ; GFX940-NEXT: ; def v[0:3]
6119 ; GFX940-NEXT: ;;#ASMEND
6120 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
6121 ; GFX940-NEXT: ;;#ASMSTART
6122 ; GFX940-NEXT: ; def v[2:5]
6123 ; GFX940-NEXT: ;;#ASMEND
6124 ; GFX940-NEXT: s_nop 0
6125 ; GFX940-NEXT: v_mov_b32_e32 v2, v1
6126 ; GFX940-NEXT: v_mov_b32_e32 v3, v4
6127 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
6128 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6129 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6130 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6131 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6132 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 6, i32 6>
6133 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6137 define void @v_shuffle_v3p3_v4p3__2_6_6(ptr addrspace(1) inreg %ptr) {
6138 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_6_6:
6140 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6141 ; GFX900-NEXT: ;;#ASMSTART
6142 ; GFX900-NEXT: ; def v[0:3]
6143 ; GFX900-NEXT: ;;#ASMEND
6144 ; GFX900-NEXT: ;;#ASMSTART
6145 ; GFX900-NEXT: ; def v[3:6]
6146 ; GFX900-NEXT: ;;#ASMEND
6147 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
6148 ; GFX900-NEXT: v_mov_b32_e32 v4, v2
6149 ; GFX900-NEXT: v_mov_b32_e32 v6, v5
6150 ; GFX900-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
6151 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6152 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6154 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_6_6:
6156 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6157 ; GFX90A-NEXT: ;;#ASMSTART
6158 ; GFX90A-NEXT: ; def v[4:7]
6159 ; GFX90A-NEXT: ;;#ASMEND
6160 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
6161 ; GFX90A-NEXT: ;;#ASMSTART
6162 ; GFX90A-NEXT: ; def v[0:3]
6163 ; GFX90A-NEXT: ;;#ASMEND
6164 ; GFX90A-NEXT: v_mov_b32_e32 v4, v2
6165 ; GFX90A-NEXT: v_mov_b32_e32 v5, v6
6166 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
6167 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6168 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6170 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_6_6:
6172 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6173 ; GFX940-NEXT: ;;#ASMSTART
6174 ; GFX940-NEXT: ; def v[4:7]
6175 ; GFX940-NEXT: ;;#ASMEND
6176 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
6177 ; GFX940-NEXT: ;;#ASMSTART
6178 ; GFX940-NEXT: ; def v[0:3]
6179 ; GFX940-NEXT: ;;#ASMEND
6180 ; GFX940-NEXT: v_mov_b32_e32 v5, v6
6181 ; GFX940-NEXT: v_mov_b32_e32 v4, v2
6182 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
6183 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6184 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6185 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6186 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6187 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 6, i32 6>
6188 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6192 define void @v_shuffle_v3p3_v4p3__3_6_6(ptr addrspace(1) inreg %ptr) {
6193 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_6_6:
6195 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6196 ; GFX900-NEXT: ;;#ASMSTART
6197 ; GFX900-NEXT: ; def v[4:7]
6198 ; GFX900-NEXT: ;;#ASMEND
6199 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
6200 ; GFX900-NEXT: ;;#ASMSTART
6201 ; GFX900-NEXT: ; def v[0:3]
6202 ; GFX900-NEXT: ;;#ASMEND
6203 ; GFX900-NEXT: v_mov_b32_e32 v5, v3
6204 ; GFX900-NEXT: v_mov_b32_e32 v7, v6
6205 ; GFX900-NEXT: global_store_dwordx3 v8, v[5:7], s[16:17]
6206 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6207 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6209 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_6_6:
6211 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6212 ; GFX90A-NEXT: ;;#ASMSTART
6213 ; GFX90A-NEXT: ; def v[4:7]
6214 ; GFX90A-NEXT: ;;#ASMEND
6215 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
6216 ; GFX90A-NEXT: ;;#ASMSTART
6217 ; GFX90A-NEXT: ; def v[0:3]
6218 ; GFX90A-NEXT: ;;#ASMEND
6219 ; GFX90A-NEXT: v_mov_b32_e32 v4, v3
6220 ; GFX90A-NEXT: v_mov_b32_e32 v5, v6
6221 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
6222 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6223 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6225 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_6_6:
6227 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6228 ; GFX940-NEXT: ;;#ASMSTART
6229 ; GFX940-NEXT: ; def v[4:7]
6230 ; GFX940-NEXT: ;;#ASMEND
6231 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
6232 ; GFX940-NEXT: ;;#ASMSTART
6233 ; GFX940-NEXT: ; def v[0:3]
6234 ; GFX940-NEXT: ;;#ASMEND
6235 ; GFX940-NEXT: v_mov_b32_e32 v5, v6
6236 ; GFX940-NEXT: v_mov_b32_e32 v4, v3
6237 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
6238 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6239 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6240 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6241 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6242 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 6, i32 6>
6243 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6247 define void @v_shuffle_v3p3_v4p3__4_6_6(ptr addrspace(1) inreg %ptr) {
6248 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_6_6:
6250 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6251 ; GFX900-NEXT: ;;#ASMSTART
6252 ; GFX900-NEXT: ; def v[0:3]
6253 ; GFX900-NEXT: ;;#ASMEND
6254 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
6255 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
6256 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6257 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6258 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6260 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_6_6:
6262 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6263 ; GFX90A-NEXT: ;;#ASMSTART
6264 ; GFX90A-NEXT: ; def v[0:3]
6265 ; GFX90A-NEXT: ;;#ASMEND
6266 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
6267 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
6268 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6269 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6270 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6272 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__4_6_6:
6274 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6275 ; GFX940-NEXT: ;;#ASMSTART
6276 ; GFX940-NEXT: ; def v[0:3]
6277 ; GFX940-NEXT: ;;#ASMEND
6278 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
6279 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
6280 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6281 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6282 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6283 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6284 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6285 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 6, i32 6>
6286 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6290 define void @v_shuffle_v3p3_v4p3__5_6_6(ptr addrspace(1) inreg %ptr) {
6291 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_6_6:
6293 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6294 ; GFX900-NEXT: ;;#ASMSTART
6295 ; GFX900-NEXT: ; def v[0:3]
6296 ; GFX900-NEXT: ;;#ASMEND
6297 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
6298 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
6299 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
6300 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6301 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6303 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_6_6:
6305 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6306 ; GFX90A-NEXT: ;;#ASMSTART
6307 ; GFX90A-NEXT: ; def v[0:3]
6308 ; GFX90A-NEXT: ;;#ASMEND
6309 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
6310 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
6311 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
6312 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6313 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6314 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6316 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_6_6:
6318 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6319 ; GFX940-NEXT: ;;#ASMSTART
6320 ; GFX940-NEXT: ; def v[0:3]
6321 ; GFX940-NEXT: ;;#ASMEND
6322 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
6323 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
6324 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
6325 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6326 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6327 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6328 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6329 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6330 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 6, i32 6>
6331 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6335 define void @v_shuffle_v3p3_v4p3__6_6_6(ptr addrspace(1) inreg %ptr) {
6336 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_6_6:
6338 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6339 ; GFX900-NEXT: ;;#ASMSTART
6340 ; GFX900-NEXT: ; def v[0:3]
6341 ; GFX900-NEXT: ;;#ASMEND
6342 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
6343 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
6344 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
6345 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
6346 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6347 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6349 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_6_6:
6351 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6352 ; GFX90A-NEXT: ;;#ASMSTART
6353 ; GFX90A-NEXT: ; def v[0:3]
6354 ; GFX90A-NEXT: ;;#ASMEND
6355 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
6356 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
6357 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
6358 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6359 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6360 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6362 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_6_6:
6364 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6365 ; GFX940-NEXT: ;;#ASMSTART
6366 ; GFX940-NEXT: ; def v[0:3]
6367 ; GFX940-NEXT: ;;#ASMEND
6368 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
6369 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
6370 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
6371 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6372 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6373 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6374 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6375 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6376 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 6, i32 6>
6377 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6381 define void @v_shuffle_v3p3_v4p3__7_6_6(ptr addrspace(1) inreg %ptr) {
6382 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_6:
6384 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6385 ; GFX900-NEXT: ;;#ASMSTART
6386 ; GFX900-NEXT: ; def v[0:3]
6387 ; GFX900-NEXT: ;;#ASMEND
6388 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
6389 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
6390 ; GFX900-NEXT: v_mov_b32_e32 v3, v2
6391 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
6392 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6393 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6395 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_6:
6397 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6398 ; GFX90A-NEXT: ;;#ASMSTART
6399 ; GFX90A-NEXT: ; def v[0:3]
6400 ; GFX90A-NEXT: ;;#ASMEND
6401 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
6402 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
6403 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
6404 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6405 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6406 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6408 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_6:
6410 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6411 ; GFX940-NEXT: ;;#ASMSTART
6412 ; GFX940-NEXT: ; def v[0:3]
6413 ; GFX940-NEXT: ;;#ASMEND
6414 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
6415 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
6416 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
6417 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6418 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6419 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6420 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6421 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6422 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 6>
6423 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6427 define void @v_shuffle_v3p3_v4p3__7_u_6(ptr addrspace(1) inreg %ptr) {
6428 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_6:
6430 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6431 ; GFX900-NEXT: ;;#ASMSTART
6432 ; GFX900-NEXT: ; def v[0:3]
6433 ; GFX900-NEXT: ;;#ASMEND
6434 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
6435 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
6436 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6437 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6438 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6440 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_6:
6442 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6443 ; GFX90A-NEXT: ;;#ASMSTART
6444 ; GFX90A-NEXT: ; def v[0:3]
6445 ; GFX90A-NEXT: ;;#ASMEND
6446 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
6447 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
6448 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6449 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6450 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6452 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_6:
6454 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6455 ; GFX940-NEXT: ;;#ASMSTART
6456 ; GFX940-NEXT: ; def v[0:3]
6457 ; GFX940-NEXT: ;;#ASMEND
6458 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
6459 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
6460 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6461 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6462 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6463 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6464 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6465 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 6>
6466 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6470 define void @v_shuffle_v3p3_v4p3__7_0_6(ptr addrspace(1) inreg %ptr) {
6471 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_6:
6473 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6474 ; GFX900-NEXT: ;;#ASMSTART
6475 ; GFX900-NEXT: ; def v[0:3]
6476 ; GFX900-NEXT: ;;#ASMEND
6477 ; GFX900-NEXT: ;;#ASMSTART
6478 ; GFX900-NEXT: ; def v[1:4]
6479 ; GFX900-NEXT: ;;#ASMEND
6480 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
6481 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
6482 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
6483 ; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]
6484 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6485 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6487 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_6:
6489 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6490 ; GFX90A-NEXT: ;;#ASMSTART
6491 ; GFX90A-NEXT: ; def v[0:3]
6492 ; GFX90A-NEXT: ;;#ASMEND
6493 ; GFX90A-NEXT: ;;#ASMSTART
6494 ; GFX90A-NEXT: ; def v[2:5]
6495 ; GFX90A-NEXT: ;;#ASMEND
6496 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
6497 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
6498 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
6499 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
6500 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6501 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6503 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_6:
6505 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6506 ; GFX940-NEXT: ;;#ASMSTART
6507 ; GFX940-NEXT: ; def v[0:3]
6508 ; GFX940-NEXT: ;;#ASMEND
6509 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
6510 ; GFX940-NEXT: ;;#ASMSTART
6511 ; GFX940-NEXT: ; def v[2:5]
6512 ; GFX940-NEXT: ;;#ASMEND
6513 ; GFX940-NEXT: s_nop 0
6514 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
6515 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
6516 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
6517 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6518 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6519 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6520 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6521 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 6>
6522 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6526 define void @v_shuffle_v3p3_v4p3__7_1_6(ptr addrspace(1) inreg %ptr) {
6527 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_6:
6529 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6530 ; GFX900-NEXT: ;;#ASMSTART
6531 ; GFX900-NEXT: ; def v[0:3]
6532 ; GFX900-NEXT: ;;#ASMEND
6533 ; GFX900-NEXT: ;;#ASMSTART
6534 ; GFX900-NEXT: ; def v[2:5]
6535 ; GFX900-NEXT: ;;#ASMEND
6536 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
6537 ; GFX900-NEXT: v_mov_b32_e32 v0, v5
6538 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
6539 ; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
6540 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6541 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6543 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_6:
6545 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6546 ; GFX90A-NEXT: ;;#ASMSTART
6547 ; GFX90A-NEXT: ; def v[0:3]
6548 ; GFX90A-NEXT: ;;#ASMEND
6549 ; GFX90A-NEXT: ;;#ASMSTART
6550 ; GFX90A-NEXT: ; def v[2:5]
6551 ; GFX90A-NEXT: ;;#ASMEND
6552 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
6553 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
6554 ; GFX90A-NEXT: v_mov_b32_e32 v2, v4
6555 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
6556 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6557 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6559 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_6:
6561 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6562 ; GFX940-NEXT: ;;#ASMSTART
6563 ; GFX940-NEXT: ; def v[0:3]
6564 ; GFX940-NEXT: ;;#ASMEND
6565 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
6566 ; GFX940-NEXT: ;;#ASMSTART
6567 ; GFX940-NEXT: ; def v[2:5]
6568 ; GFX940-NEXT: ;;#ASMEND
6569 ; GFX940-NEXT: s_nop 0
6570 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
6571 ; GFX940-NEXT: v_mov_b32_e32 v2, v4
6572 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
6573 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6574 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6575 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6576 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6577 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 6>
6578 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6582 define void @v_shuffle_v3p3_v4p3__7_2_6(ptr addrspace(1) inreg %ptr) {
6583 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_6:
6585 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6586 ; GFX900-NEXT: ;;#ASMSTART
6587 ; GFX900-NEXT: ; def v[0:3]
6588 ; GFX900-NEXT: ;;#ASMEND
6589 ; GFX900-NEXT: ;;#ASMSTART
6590 ; GFX900-NEXT: ; def v[3:6]
6591 ; GFX900-NEXT: ;;#ASMEND
6592 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
6593 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
6594 ; GFX900-NEXT: v_mov_b32_e32 v3, v5
6595 ; GFX900-NEXT: global_store_dwordx3 v7, v[1:3], s[16:17]
6596 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6597 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6599 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_6:
6601 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6602 ; GFX90A-NEXT: ;;#ASMSTART
6603 ; GFX90A-NEXT: ; def v[4:7]
6604 ; GFX90A-NEXT: ;;#ASMEND
6605 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
6606 ; GFX90A-NEXT: ;;#ASMSTART
6607 ; GFX90A-NEXT: ; def v[0:3]
6608 ; GFX90A-NEXT: ;;#ASMEND
6609 ; GFX90A-NEXT: v_mov_b32_e32 v4, v7
6610 ; GFX90A-NEXT: v_mov_b32_e32 v5, v2
6611 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
6612 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6613 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6615 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_6:
6617 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6618 ; GFX940-NEXT: ;;#ASMSTART
6619 ; GFX940-NEXT: ; def v[4:7]
6620 ; GFX940-NEXT: ;;#ASMEND
6621 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
6622 ; GFX940-NEXT: ;;#ASMSTART
6623 ; GFX940-NEXT: ; def v[0:3]
6624 ; GFX940-NEXT: ;;#ASMEND
6625 ; GFX940-NEXT: v_mov_b32_e32 v4, v7
6626 ; GFX940-NEXT: v_mov_b32_e32 v5, v2
6627 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
6628 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6629 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6630 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6631 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6632 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 6>
6633 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6637 define void @v_shuffle_v3p3_v4p3__7_3_6(ptr addrspace(1) inreg %ptr) {
6638 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_6:
6640 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6641 ; GFX900-NEXT: ;;#ASMSTART
6642 ; GFX900-NEXT: ; def v[4:7]
6643 ; GFX900-NEXT: ;;#ASMEND
6644 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
6645 ; GFX900-NEXT: ;;#ASMSTART
6646 ; GFX900-NEXT: ; def v[0:3]
6647 ; GFX900-NEXT: ;;#ASMEND
6648 ; GFX900-NEXT: v_mov_b32_e32 v4, v7
6649 ; GFX900-NEXT: v_mov_b32_e32 v5, v3
6650 ; GFX900-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
6651 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6652 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6654 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_6:
6656 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6657 ; GFX90A-NEXT: ;;#ASMSTART
6658 ; GFX90A-NEXT: ; def v[4:7]
6659 ; GFX90A-NEXT: ;;#ASMEND
6660 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
6661 ; GFX90A-NEXT: ;;#ASMSTART
6662 ; GFX90A-NEXT: ; def v[0:3]
6663 ; GFX90A-NEXT: ;;#ASMEND
6664 ; GFX90A-NEXT: v_mov_b32_e32 v4, v7
6665 ; GFX90A-NEXT: v_mov_b32_e32 v5, v3
6666 ; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]
6667 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6668 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6670 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_6:
6672 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6673 ; GFX940-NEXT: ;;#ASMSTART
6674 ; GFX940-NEXT: ; def v[4:7]
6675 ; GFX940-NEXT: ;;#ASMEND
6676 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
6677 ; GFX940-NEXT: ;;#ASMSTART
6678 ; GFX940-NEXT: ; def v[0:3]
6679 ; GFX940-NEXT: ;;#ASMEND
6680 ; GFX940-NEXT: v_mov_b32_e32 v4, v7
6681 ; GFX940-NEXT: v_mov_b32_e32 v5, v3
6682 ; GFX940-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1] sc0 sc1
6683 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6684 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6685 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6686 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6687 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 6>
6688 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6692 define void @v_shuffle_v3p3_v4p3__7_4_6(ptr addrspace(1) inreg %ptr) {
6693 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_6:
6695 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6696 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
6697 ; GFX900-NEXT: ;;#ASMSTART
6698 ; GFX900-NEXT: ; def v[0:3]
6699 ; GFX900-NEXT: ;;#ASMEND
6700 ; GFX900-NEXT: v_mov_b32_e32 v4, v0
6701 ; GFX900-NEXT: v_mov_b32_e32 v5, v2
6702 ; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]
6703 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6704 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6706 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_6:
6708 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6709 ; GFX90A-NEXT: v_mov_b32_e32 v7, 0
6710 ; GFX90A-NEXT: ;;#ASMSTART
6711 ; GFX90A-NEXT: ; def v[0:3]
6712 ; GFX90A-NEXT: ;;#ASMEND
6713 ; GFX90A-NEXT: v_mov_b32_e32 v4, v3
6714 ; GFX90A-NEXT: v_mov_b32_e32 v5, v0
6715 ; GFX90A-NEXT: v_mov_b32_e32 v6, v2
6716 ; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
6717 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6718 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6720 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_6:
6722 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6723 ; GFX940-NEXT: v_mov_b32_e32 v7, 0
6724 ; GFX940-NEXT: ;;#ASMSTART
6725 ; GFX940-NEXT: ; def v[0:3]
6726 ; GFX940-NEXT: ;;#ASMEND
6727 ; GFX940-NEXT: s_nop 0
6728 ; GFX940-NEXT: v_mov_b32_e32 v4, v3
6729 ; GFX940-NEXT: v_mov_b32_e32 v5, v0
6730 ; GFX940-NEXT: v_mov_b32_e32 v6, v2
6731 ; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
6732 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6733 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6734 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6735 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6736 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 6>
6737 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6741 define void @v_shuffle_v3p3_v4p3__7_5_6(ptr addrspace(1) inreg %ptr) {
6742 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_6:
6744 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6745 ; GFX900-NEXT: ;;#ASMSTART
6746 ; GFX900-NEXT: ; def v[0:3]
6747 ; GFX900-NEXT: ;;#ASMEND
6748 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
6749 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
6750 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6751 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6752 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6754 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_6:
6756 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6757 ; GFX90A-NEXT: ;;#ASMSTART
6758 ; GFX90A-NEXT: ; def v[0:3]
6759 ; GFX90A-NEXT: ;;#ASMEND
6760 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
6761 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
6762 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6763 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6764 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6766 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_6:
6768 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6769 ; GFX940-NEXT: ;;#ASMSTART
6770 ; GFX940-NEXT: ; def v[0:3]
6771 ; GFX940-NEXT: ;;#ASMEND
6772 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
6773 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
6774 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6775 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6776 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6777 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6778 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6779 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 6>
6780 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6784 define void @v_shuffle_v3p3_v4p3__u_7_7(ptr addrspace(1) inreg %ptr) {
6785 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_7_7:
6787 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6788 ; GFX900-NEXT: ;;#ASMSTART
6789 ; GFX900-NEXT: ; def v[0:3]
6790 ; GFX900-NEXT: ;;#ASMEND
6791 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
6792 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
6793 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
6794 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6795 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6797 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_7_7:
6799 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6800 ; GFX90A-NEXT: ;;#ASMSTART
6801 ; GFX90A-NEXT: ; def v[0:3]
6802 ; GFX90A-NEXT: ;;#ASMEND
6803 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
6804 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
6805 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
6806 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
6807 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6808 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6810 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__u_7_7:
6812 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6813 ; GFX940-NEXT: ;;#ASMSTART
6814 ; GFX940-NEXT: ; def v[0:3]
6815 ; GFX940-NEXT: ;;#ASMEND
6816 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
6817 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
6818 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
6819 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6820 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6821 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6822 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6823 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6824 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 7, i32 7>
6825 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6829 define void @v_shuffle_v3p3_v4p3__0_7_7(ptr addrspace(1) inreg %ptr) {
6830 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_7_7:
6832 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6833 ; GFX900-NEXT: ;;#ASMSTART
6834 ; GFX900-NEXT: ; def v[0:3]
6835 ; GFX900-NEXT: ;;#ASMEND
6836 ; GFX900-NEXT: ;;#ASMSTART
6837 ; GFX900-NEXT: ; def v[1:4]
6838 ; GFX900-NEXT: ;;#ASMEND
6839 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
6840 ; GFX900-NEXT: v_mov_b32_e32 v1, v4
6841 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
6842 ; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]
6843 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6844 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6846 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_7_7:
6848 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6849 ; GFX90A-NEXT: ;;#ASMSTART
6850 ; GFX90A-NEXT: ; def v[0:3]
6851 ; GFX90A-NEXT: ;;#ASMEND
6852 ; GFX90A-NEXT: ;;#ASMSTART
6853 ; GFX90A-NEXT: ; def v[2:5]
6854 ; GFX90A-NEXT: ;;#ASMEND
6855 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
6856 ; GFX90A-NEXT: v_mov_b32_e32 v1, v5
6857 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
6858 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
6859 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6860 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6862 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__0_7_7:
6864 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6865 ; GFX940-NEXT: ;;#ASMSTART
6866 ; GFX940-NEXT: ; def v[0:3]
6867 ; GFX940-NEXT: ;;#ASMEND
6868 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
6869 ; GFX940-NEXT: ;;#ASMSTART
6870 ; GFX940-NEXT: ; def v[2:5]
6871 ; GFX940-NEXT: ;;#ASMEND
6872 ; GFX940-NEXT: s_nop 0
6873 ; GFX940-NEXT: v_mov_b32_e32 v1, v5
6874 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
6875 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
6876 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6877 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6878 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6879 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6880 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 7, i32 7>
6881 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6885 define void @v_shuffle_v3p3_v4p3__1_7_7(ptr addrspace(1) inreg %ptr) {
6886 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_7_7:
6888 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6889 ; GFX900-NEXT: ;;#ASMSTART
6890 ; GFX900-NEXT: ; def v[0:3]
6891 ; GFX900-NEXT: ;;#ASMEND
6892 ; GFX900-NEXT: ;;#ASMSTART
6893 ; GFX900-NEXT: ; def v[2:5]
6894 ; GFX900-NEXT: ;;#ASMEND
6895 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
6896 ; GFX900-NEXT: v_mov_b32_e32 v2, v5
6897 ; GFX900-NEXT: v_mov_b32_e32 v3, v5
6898 ; GFX900-NEXT: global_store_dwordx3 v6, v[1:3], s[16:17]
6899 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6900 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6902 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_7_7:
6904 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6905 ; GFX90A-NEXT: ;;#ASMSTART
6906 ; GFX90A-NEXT: ; def v[0:3]
6907 ; GFX90A-NEXT: ;;#ASMEND
6908 ; GFX90A-NEXT: ;;#ASMSTART
6909 ; GFX90A-NEXT: ; def v[2:5]
6910 ; GFX90A-NEXT: ;;#ASMEND
6911 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
6912 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
6913 ; GFX90A-NEXT: v_mov_b32_e32 v1, v5
6914 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
6915 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
6916 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6917 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6919 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__1_7_7:
6921 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6922 ; GFX940-NEXT: ;;#ASMSTART
6923 ; GFX940-NEXT: ; def v[0:3]
6924 ; GFX940-NEXT: ;;#ASMEND
6925 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
6926 ; GFX940-NEXT: ;;#ASMSTART
6927 ; GFX940-NEXT: ; def v[2:5]
6928 ; GFX940-NEXT: ;;#ASMEND
6929 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
6930 ; GFX940-NEXT: v_mov_b32_e32 v1, v5
6931 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
6932 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
6933 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6934 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6935 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6936 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6937 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 7, i32 7>
6938 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6942 define void @v_shuffle_v3p3_v4p3__2_7_7(ptr addrspace(1) inreg %ptr) {
6943 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_7_7:
6945 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6946 ; GFX900-NEXT: ;;#ASMSTART
6947 ; GFX900-NEXT: ; def v[0:3]
6948 ; GFX900-NEXT: ;;#ASMEND
6949 ; GFX900-NEXT: ;;#ASMSTART
6950 ; GFX900-NEXT: ; def v[3:6]
6951 ; GFX900-NEXT: ;;#ASMEND
6952 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
6953 ; GFX900-NEXT: v_mov_b32_e32 v4, v2
6954 ; GFX900-NEXT: v_mov_b32_e32 v5, v6
6955 ; GFX900-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
6956 ; GFX900-NEXT: s_waitcnt vmcnt(0)
6957 ; GFX900-NEXT: s_setpc_b64 s[30:31]
6959 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_7_7:
6961 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6962 ; GFX90A-NEXT: ;;#ASMSTART
6963 ; GFX90A-NEXT: ; def v[0:3]
6964 ; GFX90A-NEXT: ;;#ASMEND
6965 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
6966 ; GFX90A-NEXT: ;;#ASMSTART
6967 ; GFX90A-NEXT: ; def v[4:7]
6968 ; GFX90A-NEXT: ;;#ASMEND
6969 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
6970 ; GFX90A-NEXT: v_mov_b32_e32 v1, v7
6971 ; GFX90A-NEXT: v_mov_b32_e32 v2, v7
6972 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
6973 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
6974 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
6976 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__2_7_7:
6978 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6979 ; GFX940-NEXT: ;;#ASMSTART
6980 ; GFX940-NEXT: ; def v[0:3]
6981 ; GFX940-NEXT: ;;#ASMEND
6982 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
6983 ; GFX940-NEXT: ;;#ASMSTART
6984 ; GFX940-NEXT: ; def v[4:7]
6985 ; GFX940-NEXT: ;;#ASMEND
6986 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
6987 ; GFX940-NEXT: v_mov_b32_e32 v1, v7
6988 ; GFX940-NEXT: v_mov_b32_e32 v2, v7
6989 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
6990 ; GFX940-NEXT: s_waitcnt vmcnt(0)
6991 ; GFX940-NEXT: s_setpc_b64 s[30:31]
6992 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6993 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
6994 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 7, i32 7>
6995 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
6999 define void @v_shuffle_v3p3_v4p3__3_7_7(ptr addrspace(1) inreg %ptr) {
7000 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_7_7:
7002 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7003 ; GFX900-NEXT: ;;#ASMSTART
7004 ; GFX900-NEXT: ; def v[4:7]
7005 ; GFX900-NEXT: ;;#ASMEND
7006 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
7007 ; GFX900-NEXT: ;;#ASMSTART
7008 ; GFX900-NEXT: ; def v[0:3]
7009 ; GFX900-NEXT: ;;#ASMEND
7010 ; GFX900-NEXT: v_mov_b32_e32 v5, v3
7011 ; GFX900-NEXT: v_mov_b32_e32 v6, v7
7012 ; GFX900-NEXT: global_store_dwordx3 v8, v[5:7], s[16:17]
7013 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7014 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7016 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_7_7:
7018 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7019 ; GFX90A-NEXT: ;;#ASMSTART
7020 ; GFX90A-NEXT: ; def v[0:3]
7021 ; GFX90A-NEXT: ;;#ASMEND
7022 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
7023 ; GFX90A-NEXT: ;;#ASMSTART
7024 ; GFX90A-NEXT: ; def v[4:7]
7025 ; GFX90A-NEXT: ;;#ASMEND
7026 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
7027 ; GFX90A-NEXT: v_mov_b32_e32 v1, v7
7028 ; GFX90A-NEXT: v_mov_b32_e32 v2, v7
7029 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
7030 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7031 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7033 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__3_7_7:
7035 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7036 ; GFX940-NEXT: ;;#ASMSTART
7037 ; GFX940-NEXT: ; def v[0:3]
7038 ; GFX940-NEXT: ;;#ASMEND
7039 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
7040 ; GFX940-NEXT: ;;#ASMSTART
7041 ; GFX940-NEXT: ; def v[4:7]
7042 ; GFX940-NEXT: ;;#ASMEND
7043 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
7044 ; GFX940-NEXT: v_mov_b32_e32 v1, v7
7045 ; GFX940-NEXT: v_mov_b32_e32 v2, v7
7046 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
7047 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7048 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7049 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7050 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7051 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 7, i32 7>
7052 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7056 define void @v_shuffle_v3p3_v4p3__4_7_7(ptr addrspace(1) inreg %ptr) {
7057 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_7_7:
7059 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7060 ; GFX900-NEXT: ;;#ASMSTART
7061 ; GFX900-NEXT: ; def v[0:3]
7062 ; GFX900-NEXT: ;;#ASMEND
7063 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
7064 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
7065 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
7066 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
7067 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7068 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7070 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_7_7:
7072 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7073 ; GFX90A-NEXT: ;;#ASMSTART
7074 ; GFX90A-NEXT: ; def v[0:3]
7075 ; GFX90A-NEXT: ;;#ASMEND
7076 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
7077 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
7078 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
7079 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
7080 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7081 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7083 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__4_7_7:
7085 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7086 ; GFX940-NEXT: ;;#ASMSTART
7087 ; GFX940-NEXT: ; def v[0:3]
7088 ; GFX940-NEXT: ;;#ASMEND
7089 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
7090 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
7091 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
7092 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
7093 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7094 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7095 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7096 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7097 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 7, i32 7>
7098 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7102 define void @v_shuffle_v3p3_v4p3__5_7_7(ptr addrspace(1) inreg %ptr) {
7103 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_7_7:
7105 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7106 ; GFX900-NEXT: ;;#ASMSTART
7107 ; GFX900-NEXT: ; def v[0:3]
7108 ; GFX900-NEXT: ;;#ASMEND
7109 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
7110 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
7111 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
7112 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7113 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7115 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_7_7:
7117 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7118 ; GFX90A-NEXT: ;;#ASMSTART
7119 ; GFX90A-NEXT: ; def v[0:3]
7120 ; GFX90A-NEXT: ;;#ASMEND
7121 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
7122 ; GFX90A-NEXT: v_mov_b32_e32 v0, v1
7123 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
7124 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
7125 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
7126 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7127 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7129 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__5_7_7:
7131 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7132 ; GFX940-NEXT: ;;#ASMSTART
7133 ; GFX940-NEXT: ; def v[0:3]
7134 ; GFX940-NEXT: ;;#ASMEND
7135 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
7136 ; GFX940-NEXT: v_mov_b32_e32 v0, v1
7137 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
7138 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
7139 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
7140 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7141 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7142 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7143 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7144 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 7, i32 7>
7145 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7149 define void @v_shuffle_v3p3_v4p3__6_7_7(ptr addrspace(1) inreg %ptr) {
7150 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_7_7:
7152 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7153 ; GFX900-NEXT: ;;#ASMSTART
7154 ; GFX900-NEXT: ; def v[0:3]
7155 ; GFX900-NEXT: ;;#ASMEND
7156 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
7157 ; GFX900-NEXT: v_mov_b32_e32 v1, v2
7158 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
7159 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
7160 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7161 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7163 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_7_7:
7165 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7166 ; GFX90A-NEXT: ;;#ASMSTART
7167 ; GFX90A-NEXT: ; def v[0:3]
7168 ; GFX90A-NEXT: ;;#ASMEND
7169 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
7170 ; GFX90A-NEXT: v_mov_b32_e32 v0, v2
7171 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
7172 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
7173 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
7174 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7175 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7177 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__6_7_7:
7179 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7180 ; GFX940-NEXT: ;;#ASMSTART
7181 ; GFX940-NEXT: ; def v[0:3]
7182 ; GFX940-NEXT: ;;#ASMEND
7183 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
7184 ; GFX940-NEXT: v_mov_b32_e32 v0, v2
7185 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
7186 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
7187 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
7188 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7189 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7190 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7191 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7192 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 7, i32 7>
7193 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7197 define void @v_shuffle_v3p3_v4p3__7_u_7(ptr addrspace(1) inreg %ptr) {
7198 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_7:
7200 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7201 ; GFX900-NEXT: ;;#ASMSTART
7202 ; GFX900-NEXT: ; def v[0:3]
7203 ; GFX900-NEXT: ;;#ASMEND
7204 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
7205 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
7206 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
7207 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7208 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7210 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_7:
7212 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7213 ; GFX90A-NEXT: ;;#ASMSTART
7214 ; GFX90A-NEXT: ; def v[0:3]
7215 ; GFX90A-NEXT: ;;#ASMEND
7216 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
7217 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
7218 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
7219 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
7220 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7221 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7223 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_u_7:
7225 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7226 ; GFX940-NEXT: ;;#ASMSTART
7227 ; GFX940-NEXT: ; def v[0:3]
7228 ; GFX940-NEXT: ;;#ASMEND
7229 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
7230 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
7231 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
7232 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
7233 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7234 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7235 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7236 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7237 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 7>
7238 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7242 define void @v_shuffle_v3p3_v4p3__7_0_7(ptr addrspace(1) inreg %ptr) {
7243 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_7:
7245 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7246 ; GFX900-NEXT: ;;#ASMSTART
7247 ; GFX900-NEXT: ; def v[0:3]
7248 ; GFX900-NEXT: ;;#ASMEND
7249 ; GFX900-NEXT: ;;#ASMSTART
7250 ; GFX900-NEXT: ; def v[1:4]
7251 ; GFX900-NEXT: ;;#ASMEND
7252 ; GFX900-NEXT: v_mov_b32_e32 v5, 0
7253 ; GFX900-NEXT: v_mov_b32_e32 v2, v4
7254 ; GFX900-NEXT: v_mov_b32_e32 v3, v0
7255 ; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]
7256 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7257 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7259 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_7:
7261 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7262 ; GFX90A-NEXT: ;;#ASMSTART
7263 ; GFX90A-NEXT: ; def v[0:3]
7264 ; GFX90A-NEXT: ;;#ASMEND
7265 ; GFX90A-NEXT: ;;#ASMSTART
7266 ; GFX90A-NEXT: ; def v[2:5]
7267 ; GFX90A-NEXT: ;;#ASMEND
7268 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
7269 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
7270 ; GFX90A-NEXT: v_mov_b32_e32 v3, v0
7271 ; GFX90A-NEXT: v_mov_b32_e32 v4, v5
7272 ; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]
7273 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7274 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7276 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_0_7:
7278 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7279 ; GFX940-NEXT: ;;#ASMSTART
7280 ; GFX940-NEXT: ; def v[0:3]
7281 ; GFX940-NEXT: ;;#ASMEND
7282 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
7283 ; GFX940-NEXT: ;;#ASMSTART
7284 ; GFX940-NEXT: ; def v[2:5]
7285 ; GFX940-NEXT: ;;#ASMEND
7286 ; GFX940-NEXT: s_nop 0
7287 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
7288 ; GFX940-NEXT: v_mov_b32_e32 v3, v0
7289 ; GFX940-NEXT: v_mov_b32_e32 v4, v5
7290 ; GFX940-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1] sc0 sc1
7291 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7292 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7293 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7294 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7295 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 7>
7296 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7300 define void @v_shuffle_v3p3_v4p3__7_1_7(ptr addrspace(1) inreg %ptr) {
7301 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_7:
7303 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7304 ; GFX900-NEXT: ;;#ASMSTART
7305 ; GFX900-NEXT: ; def v[0:3]
7306 ; GFX900-NEXT: ;;#ASMEND
7307 ; GFX900-NEXT: ;;#ASMSTART
7308 ; GFX900-NEXT: ; def v[2:5]
7309 ; GFX900-NEXT: ;;#ASMEND
7310 ; GFX900-NEXT: v_mov_b32_e32 v6, 0
7311 ; GFX900-NEXT: v_mov_b32_e32 v0, v5
7312 ; GFX900-NEXT: v_mov_b32_e32 v2, v5
7313 ; GFX900-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
7314 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7315 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7317 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_7:
7319 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7320 ; GFX90A-NEXT: ;;#ASMSTART
7321 ; GFX90A-NEXT: ; def v[0:3]
7322 ; GFX90A-NEXT: ;;#ASMEND
7323 ; GFX90A-NEXT: ;;#ASMSTART
7324 ; GFX90A-NEXT: ; def v[2:5]
7325 ; GFX90A-NEXT: ;;#ASMEND
7326 ; GFX90A-NEXT: v_mov_b32_e32 v6, 0
7327 ; GFX90A-NEXT: v_mov_b32_e32 v0, v5
7328 ; GFX90A-NEXT: v_mov_b32_e32 v2, v5
7329 ; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]
7330 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7331 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7333 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_1_7:
7335 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7336 ; GFX940-NEXT: ;;#ASMSTART
7337 ; GFX940-NEXT: ; def v[0:3]
7338 ; GFX940-NEXT: ;;#ASMEND
7339 ; GFX940-NEXT: v_mov_b32_e32 v6, 0
7340 ; GFX940-NEXT: ;;#ASMSTART
7341 ; GFX940-NEXT: ; def v[2:5]
7342 ; GFX940-NEXT: ;;#ASMEND
7343 ; GFX940-NEXT: s_nop 0
7344 ; GFX940-NEXT: v_mov_b32_e32 v0, v5
7345 ; GFX940-NEXT: v_mov_b32_e32 v2, v5
7346 ; GFX940-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
7347 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7348 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7349 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7350 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7351 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 7>
7352 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7356 define void @v_shuffle_v3p3_v4p3__7_2_7(ptr addrspace(1) inreg %ptr) {
7357 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_7:
7359 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7360 ; GFX900-NEXT: ;;#ASMSTART
7361 ; GFX900-NEXT: ; def v[0:3]
7362 ; GFX900-NEXT: ;;#ASMEND
7363 ; GFX900-NEXT: ;;#ASMSTART
7364 ; GFX900-NEXT: ; def v[3:6]
7365 ; GFX900-NEXT: ;;#ASMEND
7366 ; GFX900-NEXT: v_mov_b32_e32 v7, 0
7367 ; GFX900-NEXT: v_mov_b32_e32 v1, v6
7368 ; GFX900-NEXT: v_mov_b32_e32 v3, v6
7369 ; GFX900-NEXT: global_store_dwordx3 v7, v[1:3], s[16:17]
7370 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7371 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7373 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_7:
7375 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7376 ; GFX90A-NEXT: ;;#ASMSTART
7377 ; GFX90A-NEXT: ; def v[0:3]
7378 ; GFX90A-NEXT: ;;#ASMEND
7379 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
7380 ; GFX90A-NEXT: ;;#ASMSTART
7381 ; GFX90A-NEXT: ; def v[4:7]
7382 ; GFX90A-NEXT: ;;#ASMEND
7383 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
7384 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
7385 ; GFX90A-NEXT: v_mov_b32_e32 v2, v7
7386 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
7387 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7388 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7390 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_2_7:
7392 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7393 ; GFX940-NEXT: ;;#ASMSTART
7394 ; GFX940-NEXT: ; def v[0:3]
7395 ; GFX940-NEXT: ;;#ASMEND
7396 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
7397 ; GFX940-NEXT: ;;#ASMSTART
7398 ; GFX940-NEXT: ; def v[4:7]
7399 ; GFX940-NEXT: ;;#ASMEND
7400 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
7401 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
7402 ; GFX940-NEXT: v_mov_b32_e32 v2, v7
7403 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
7404 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7405 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7406 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7407 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7408 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 7>
7409 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7413 define void @v_shuffle_v3p3_v4p3__7_3_7(ptr addrspace(1) inreg %ptr) {
7414 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_7:
7416 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7417 ; GFX900-NEXT: ;;#ASMSTART
7418 ; GFX900-NEXT: ; def v[4:7]
7419 ; GFX900-NEXT: ;;#ASMEND
7420 ; GFX900-NEXT: v_mov_b32_e32 v8, 0
7421 ; GFX900-NEXT: ;;#ASMSTART
7422 ; GFX900-NEXT: ; def v[0:3]
7423 ; GFX900-NEXT: ;;#ASMEND
7424 ; GFX900-NEXT: v_mov_b32_e32 v5, v7
7425 ; GFX900-NEXT: v_mov_b32_e32 v6, v3
7426 ; GFX900-NEXT: global_store_dwordx3 v8, v[5:7], s[16:17]
7427 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7428 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7430 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_7:
7432 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7433 ; GFX90A-NEXT: ;;#ASMSTART
7434 ; GFX90A-NEXT: ; def v[0:3]
7435 ; GFX90A-NEXT: ;;#ASMEND
7436 ; GFX90A-NEXT: v_mov_b32_e32 v8, 0
7437 ; GFX90A-NEXT: ;;#ASMSTART
7438 ; GFX90A-NEXT: ; def v[4:7]
7439 ; GFX90A-NEXT: ;;#ASMEND
7440 ; GFX90A-NEXT: v_mov_b32_e32 v0, v7
7441 ; GFX90A-NEXT: v_mov_b32_e32 v1, v3
7442 ; GFX90A-NEXT: v_mov_b32_e32 v2, v7
7443 ; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]
7444 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7445 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7447 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_3_7:
7449 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7450 ; GFX940-NEXT: ;;#ASMSTART
7451 ; GFX940-NEXT: ; def v[0:3]
7452 ; GFX940-NEXT: ;;#ASMEND
7453 ; GFX940-NEXT: v_mov_b32_e32 v8, 0
7454 ; GFX940-NEXT: ;;#ASMSTART
7455 ; GFX940-NEXT: ; def v[4:7]
7456 ; GFX940-NEXT: ;;#ASMEND
7457 ; GFX940-NEXT: v_mov_b32_e32 v1, v3
7458 ; GFX940-NEXT: v_mov_b32_e32 v0, v7
7459 ; GFX940-NEXT: v_mov_b32_e32 v2, v7
7460 ; GFX940-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1] sc0 sc1
7461 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7462 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7463 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7464 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7465 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 7>
7466 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7470 define void @v_shuffle_v3p3_v4p3__7_4_7(ptr addrspace(1) inreg %ptr) {
7471 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_7:
7473 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7474 ; GFX900-NEXT: ;;#ASMSTART
7475 ; GFX900-NEXT: ; def v[0:3]
7476 ; GFX900-NEXT: ;;#ASMEND
7477 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
7478 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
7479 ; GFX900-NEXT: v_mov_b32_e32 v2, v0
7480 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
7481 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7482 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7484 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_7:
7486 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7487 ; GFX90A-NEXT: v_mov_b32_e32 v7, 0
7488 ; GFX90A-NEXT: ;;#ASMSTART
7489 ; GFX90A-NEXT: ; def v[0:3]
7490 ; GFX90A-NEXT: ;;#ASMEND
7491 ; GFX90A-NEXT: v_mov_b32_e32 v4, v3
7492 ; GFX90A-NEXT: v_mov_b32_e32 v5, v0
7493 ; GFX90A-NEXT: v_mov_b32_e32 v6, v3
7494 ; GFX90A-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]
7495 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7496 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7498 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_4_7:
7500 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7501 ; GFX940-NEXT: v_mov_b32_e32 v7, 0
7502 ; GFX940-NEXT: ;;#ASMSTART
7503 ; GFX940-NEXT: ; def v[0:3]
7504 ; GFX940-NEXT: ;;#ASMEND
7505 ; GFX940-NEXT: s_nop 0
7506 ; GFX940-NEXT: v_mov_b32_e32 v4, v3
7507 ; GFX940-NEXT: v_mov_b32_e32 v5, v0
7508 ; GFX940-NEXT: v_mov_b32_e32 v6, v3
7509 ; GFX940-NEXT: global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
7510 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7511 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7512 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7513 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7514 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 7>
7515 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7519 define void @v_shuffle_v3p3_v4p3__7_5_7(ptr addrspace(1) inreg %ptr) {
7520 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_7:
7522 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7523 ; GFX900-NEXT: ;;#ASMSTART
7524 ; GFX900-NEXT: ; def v[0:3]
7525 ; GFX900-NEXT: ;;#ASMEND
7526 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
7527 ; GFX900-NEXT: v_mov_b32_e32 v0, v3
7528 ; GFX900-NEXT: v_mov_b32_e32 v2, v3
7529 ; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
7530 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7531 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7533 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_7:
7535 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7536 ; GFX90A-NEXT: ;;#ASMSTART
7537 ; GFX90A-NEXT: ; def v[0:3]
7538 ; GFX90A-NEXT: ;;#ASMEND
7539 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
7540 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
7541 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
7542 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
7543 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7544 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7546 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_5_7:
7548 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7549 ; GFX940-NEXT: ;;#ASMSTART
7550 ; GFX940-NEXT: ; def v[0:3]
7551 ; GFX940-NEXT: ;;#ASMEND
7552 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
7553 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
7554 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
7555 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
7556 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7557 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7558 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7559 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7560 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 7>
7561 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7565 define void @v_shuffle_v3p3_v4p3__7_6_7(ptr addrspace(1) inreg %ptr) {
7566 ; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_7:
7568 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7569 ; GFX900-NEXT: ;;#ASMSTART
7570 ; GFX900-NEXT: ; def v[0:3]
7571 ; GFX900-NEXT: ;;#ASMEND
7572 ; GFX900-NEXT: v_mov_b32_e32 v4, 0
7573 ; GFX900-NEXT: v_mov_b32_e32 v1, v3
7574 ; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]
7575 ; GFX900-NEXT: s_waitcnt vmcnt(0)
7576 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7578 ; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_7:
7580 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7581 ; GFX90A-NEXT: ;;#ASMSTART
7582 ; GFX90A-NEXT: ; def v[0:3]
7583 ; GFX90A-NEXT: ;;#ASMEND
7584 ; GFX90A-NEXT: v_mov_b32_e32 v4, 0
7585 ; GFX90A-NEXT: v_mov_b32_e32 v0, v3
7586 ; GFX90A-NEXT: v_mov_b32_e32 v1, v2
7587 ; GFX90A-NEXT: v_mov_b32_e32 v2, v3
7588 ; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]
7589 ; GFX90A-NEXT: s_waitcnt vmcnt(0)
7590 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7592 ; GFX940-LABEL: v_shuffle_v3p3_v4p3__7_6_7:
7594 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7595 ; GFX940-NEXT: ;;#ASMSTART
7596 ; GFX940-NEXT: ; def v[0:3]
7597 ; GFX940-NEXT: ;;#ASMEND
7598 ; GFX940-NEXT: v_mov_b32_e32 v4, 0
7599 ; GFX940-NEXT: v_mov_b32_e32 v0, v3
7600 ; GFX940-NEXT: v_mov_b32_e32 v1, v2
7601 ; GFX940-NEXT: v_mov_b32_e32 v2, v3
7602 ; GFX940-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
7603 ; GFX940-NEXT: s_waitcnt vmcnt(0)
7604 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7605 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7606 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()
7607 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 7>
7608 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16
7612 define void @s_shuffle_v3p3_v4p3__u_u_u() {
7613 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_u_u:
7615 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7616 ; GFX9-NEXT: ;;#ASMSTART
7617 ; GFX9-NEXT: ; use s[8:10]
7618 ; GFX9-NEXT: ;;#ASMEND
7619 ; GFX9-NEXT: s_setpc_b64 s[30:31]
7620 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7621 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> poison
7622 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7626 define void @s_shuffle_v3p3_v4p3__0_u_u() {
7627 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_u_u:
7629 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7630 ; GFX900-NEXT: ;;#ASMSTART
7631 ; GFX900-NEXT: ; def s[8:11]
7632 ; GFX900-NEXT: ;;#ASMEND
7633 ; GFX900-NEXT: ;;#ASMSTART
7634 ; GFX900-NEXT: ; use s[8:10]
7635 ; GFX900-NEXT: ;;#ASMEND
7636 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7638 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_u_u:
7640 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7641 ; GFX90A-NEXT: ;;#ASMSTART
7642 ; GFX90A-NEXT: ; def s[8:11]
7643 ; GFX90A-NEXT: ;;#ASMEND
7644 ; GFX90A-NEXT: ;;#ASMSTART
7645 ; GFX90A-NEXT: ; use s[8:10]
7646 ; GFX90A-NEXT: ;;#ASMEND
7647 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7649 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__0_u_u:
7651 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7652 ; GFX940-NEXT: ;;#ASMSTART
7653 ; GFX940-NEXT: ; def s[8:11]
7654 ; GFX940-NEXT: ;;#ASMEND
7655 ; GFX940-NEXT: s_nop 0
7656 ; GFX940-NEXT: ;;#ASMSTART
7657 ; GFX940-NEXT: ; use s[8:10]
7658 ; GFX940-NEXT: ;;#ASMEND
7659 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7660 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7661 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 poison, i32 poison>
7662 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7666 define void @s_shuffle_v3p3_v4p3__1_u_u() {
7667 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_u_u:
7669 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7670 ; GFX900-NEXT: ;;#ASMSTART
7671 ; GFX900-NEXT: ; def s[4:7]
7672 ; GFX900-NEXT: ;;#ASMEND
7673 ; GFX900-NEXT: s_mov_b32 s8, s5
7674 ; GFX900-NEXT: ;;#ASMSTART
7675 ; GFX900-NEXT: ; use s[8:10]
7676 ; GFX900-NEXT: ;;#ASMEND
7677 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7679 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_u_u:
7681 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7682 ; GFX90A-NEXT: ;;#ASMSTART
7683 ; GFX90A-NEXT: ; def s[4:7]
7684 ; GFX90A-NEXT: ;;#ASMEND
7685 ; GFX90A-NEXT: s_mov_b32 s8, s5
7686 ; GFX90A-NEXT: ;;#ASMSTART
7687 ; GFX90A-NEXT: ; use s[8:10]
7688 ; GFX90A-NEXT: ;;#ASMEND
7689 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7691 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__1_u_u:
7693 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7694 ; GFX940-NEXT: ;;#ASMSTART
7695 ; GFX940-NEXT: ; def s[0:3]
7696 ; GFX940-NEXT: ;;#ASMEND
7697 ; GFX940-NEXT: s_mov_b32 s8, s1
7698 ; GFX940-NEXT: ;;#ASMSTART
7699 ; GFX940-NEXT: ; use s[8:10]
7700 ; GFX940-NEXT: ;;#ASMEND
7701 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7702 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7703 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
7704 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7708 define void @s_shuffle_v3p3_v4p3__2_u_u() {
7709 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_u_u:
7711 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7712 ; GFX900-NEXT: ;;#ASMSTART
7713 ; GFX900-NEXT: ; def s[4:7]
7714 ; GFX900-NEXT: ;;#ASMEND
7715 ; GFX900-NEXT: s_mov_b32 s8, s6
7716 ; GFX900-NEXT: ;;#ASMSTART
7717 ; GFX900-NEXT: ; use s[8:10]
7718 ; GFX900-NEXT: ;;#ASMEND
7719 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7721 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_u_u:
7723 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7724 ; GFX90A-NEXT: ;;#ASMSTART
7725 ; GFX90A-NEXT: ; def s[4:7]
7726 ; GFX90A-NEXT: ;;#ASMEND
7727 ; GFX90A-NEXT: s_mov_b32 s8, s6
7728 ; GFX90A-NEXT: ;;#ASMSTART
7729 ; GFX90A-NEXT: ; use s[8:10]
7730 ; GFX90A-NEXT: ;;#ASMEND
7731 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7733 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__2_u_u:
7735 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7736 ; GFX940-NEXT: ;;#ASMSTART
7737 ; GFX940-NEXT: ; def s[0:3]
7738 ; GFX940-NEXT: ;;#ASMEND
7739 ; GFX940-NEXT: s_mov_b32 s8, s2
7740 ; GFX940-NEXT: ;;#ASMSTART
7741 ; GFX940-NEXT: ; use s[8:10]
7742 ; GFX940-NEXT: ;;#ASMEND
7743 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7744 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7745 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
7746 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7750 define void @s_shuffle_v3p3_v4p3__3_u_u() {
7751 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_u_u:
7753 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7754 ; GFX900-NEXT: ;;#ASMSTART
7755 ; GFX900-NEXT: ; def s[4:7]
7756 ; GFX900-NEXT: ;;#ASMEND
7757 ; GFX900-NEXT: s_mov_b32 s8, s7
7758 ; GFX900-NEXT: ;;#ASMSTART
7759 ; GFX900-NEXT: ; use s[8:10]
7760 ; GFX900-NEXT: ;;#ASMEND
7761 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7763 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_u_u:
7765 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7766 ; GFX90A-NEXT: ;;#ASMSTART
7767 ; GFX90A-NEXT: ; def s[4:7]
7768 ; GFX90A-NEXT: ;;#ASMEND
7769 ; GFX90A-NEXT: s_mov_b32 s8, s7
7770 ; GFX90A-NEXT: ;;#ASMSTART
7771 ; GFX90A-NEXT: ; use s[8:10]
7772 ; GFX90A-NEXT: ;;#ASMEND
7773 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7775 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__3_u_u:
7777 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7778 ; GFX940-NEXT: ;;#ASMSTART
7779 ; GFX940-NEXT: ; def s[0:3]
7780 ; GFX940-NEXT: ;;#ASMEND
7781 ; GFX940-NEXT: s_mov_b32 s8, s3
7782 ; GFX940-NEXT: ;;#ASMSTART
7783 ; GFX940-NEXT: ; use s[8:10]
7784 ; GFX940-NEXT: ;;#ASMEND
7785 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7786 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7787 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 poison, i32 poison>
7788 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7792 define void @s_shuffle_v3p3_v4p3__4_u_u() {
7793 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_u_u:
7795 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7796 ; GFX9-NEXT: ;;#ASMSTART
7797 ; GFX9-NEXT: ; use s[8:10]
7798 ; GFX9-NEXT: ;;#ASMEND
7799 ; GFX9-NEXT: s_setpc_b64 s[30:31]
7800 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7801 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 poison, i32 poison>
7802 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7806 define void @s_shuffle_v3p3_v4p3__5_u_u() {
7807 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_u_u:
7809 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7810 ; GFX900-NEXT: ;;#ASMSTART
7811 ; GFX900-NEXT: ; def s[4:7]
7812 ; GFX900-NEXT: ;;#ASMEND
7813 ; GFX900-NEXT: s_mov_b32 s8, s5
7814 ; GFX900-NEXT: ;;#ASMSTART
7815 ; GFX900-NEXT: ; use s[8:10]
7816 ; GFX900-NEXT: ;;#ASMEND
7817 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7819 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_u_u:
7821 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7822 ; GFX90A-NEXT: ;;#ASMSTART
7823 ; GFX90A-NEXT: ; def s[4:7]
7824 ; GFX90A-NEXT: ;;#ASMEND
7825 ; GFX90A-NEXT: s_mov_b32 s8, s5
7826 ; GFX90A-NEXT: ;;#ASMSTART
7827 ; GFX90A-NEXT: ; use s[8:10]
7828 ; GFX90A-NEXT: ;;#ASMEND
7829 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7831 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__5_u_u:
7833 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7834 ; GFX940-NEXT: ;;#ASMSTART
7835 ; GFX940-NEXT: ; def s[0:3]
7836 ; GFX940-NEXT: ;;#ASMEND
7837 ; GFX940-NEXT: s_mov_b32 s8, s1
7838 ; GFX940-NEXT: ;;#ASMSTART
7839 ; GFX940-NEXT: ; use s[8:10]
7840 ; GFX940-NEXT: ;;#ASMEND
7841 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7842 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7843 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7844 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>
7845 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7849 define void @s_shuffle_v3p3_v4p3__6_u_u() {
7850 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_u_u:
7852 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7853 ; GFX900-NEXT: ;;#ASMSTART
7854 ; GFX900-NEXT: ; def s[4:7]
7855 ; GFX900-NEXT: ;;#ASMEND
7856 ; GFX900-NEXT: s_mov_b32 s8, s6
7857 ; GFX900-NEXT: ;;#ASMSTART
7858 ; GFX900-NEXT: ; use s[8:10]
7859 ; GFX900-NEXT: ;;#ASMEND
7860 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7862 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_u_u:
7864 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7865 ; GFX90A-NEXT: ;;#ASMSTART
7866 ; GFX90A-NEXT: ; def s[4:7]
7867 ; GFX90A-NEXT: ;;#ASMEND
7868 ; GFX90A-NEXT: s_mov_b32 s8, s6
7869 ; GFX90A-NEXT: ;;#ASMSTART
7870 ; GFX90A-NEXT: ; use s[8:10]
7871 ; GFX90A-NEXT: ;;#ASMEND
7872 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7874 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__6_u_u:
7876 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7877 ; GFX940-NEXT: ;;#ASMSTART
7878 ; GFX940-NEXT: ; def s[0:3]
7879 ; GFX940-NEXT: ;;#ASMEND
7880 ; GFX940-NEXT: s_mov_b32 s8, s2
7881 ; GFX940-NEXT: ;;#ASMSTART
7882 ; GFX940-NEXT: ; use s[8:10]
7883 ; GFX940-NEXT: ;;#ASMEND
7884 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7885 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7886 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7887 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 poison, i32 poison>
7888 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7892 define void @s_shuffle_v3p3_v4p3__7_u_u() {
7893 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_u:
7895 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7896 ; GFX900-NEXT: ;;#ASMSTART
7897 ; GFX900-NEXT: ; def s[4:7]
7898 ; GFX900-NEXT: ;;#ASMEND
7899 ; GFX900-NEXT: s_mov_b32 s8, s7
7900 ; GFX900-NEXT: ;;#ASMSTART
7901 ; GFX900-NEXT: ; use s[8:10]
7902 ; GFX900-NEXT: ;;#ASMEND
7903 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7905 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_u:
7907 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7908 ; GFX90A-NEXT: ;;#ASMSTART
7909 ; GFX90A-NEXT: ; def s[4:7]
7910 ; GFX90A-NEXT: ;;#ASMEND
7911 ; GFX90A-NEXT: s_mov_b32 s8, s7
7912 ; GFX90A-NEXT: ;;#ASMSTART
7913 ; GFX90A-NEXT: ; use s[8:10]
7914 ; GFX90A-NEXT: ;;#ASMEND
7915 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7917 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_u_u:
7919 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7920 ; GFX940-NEXT: ;;#ASMSTART
7921 ; GFX940-NEXT: ; def s[0:3]
7922 ; GFX940-NEXT: ;;#ASMEND
7923 ; GFX940-NEXT: s_mov_b32 s8, s3
7924 ; GFX940-NEXT: ;;#ASMSTART
7925 ; GFX940-NEXT: ; use s[8:10]
7926 ; GFX940-NEXT: ;;#ASMEND
7927 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7928 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7929 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7930 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 poison>
7931 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7935 define void @s_shuffle_v3p3_v4p3__7_0_u() {
7936 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_u:
7938 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7939 ; GFX900-NEXT: ;;#ASMSTART
7940 ; GFX900-NEXT: ; def s[8:11]
7941 ; GFX900-NEXT: ;;#ASMEND
7942 ; GFX900-NEXT: ;;#ASMSTART
7943 ; GFX900-NEXT: ; def s[4:7]
7944 ; GFX900-NEXT: ;;#ASMEND
7945 ; GFX900-NEXT: s_mov_b32 s8, s11
7946 ; GFX900-NEXT: s_mov_b32 s9, s4
7947 ; GFX900-NEXT: ;;#ASMSTART
7948 ; GFX900-NEXT: ; use s[8:10]
7949 ; GFX900-NEXT: ;;#ASMEND
7950 ; GFX900-NEXT: s_setpc_b64 s[30:31]
7952 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_u:
7954 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7955 ; GFX90A-NEXT: ;;#ASMSTART
7956 ; GFX90A-NEXT: ; def s[8:11]
7957 ; GFX90A-NEXT: ;;#ASMEND
7958 ; GFX90A-NEXT: ;;#ASMSTART
7959 ; GFX90A-NEXT: ; def s[4:7]
7960 ; GFX90A-NEXT: ;;#ASMEND
7961 ; GFX90A-NEXT: s_mov_b32 s8, s11
7962 ; GFX90A-NEXT: s_mov_b32 s9, s4
7963 ; GFX90A-NEXT: ;;#ASMSTART
7964 ; GFX90A-NEXT: ; use s[8:10]
7965 ; GFX90A-NEXT: ;;#ASMEND
7966 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
7968 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_u:
7970 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7971 ; GFX940-NEXT: ;;#ASMSTART
7972 ; GFX940-NEXT: ; def s[0:3]
7973 ; GFX940-NEXT: ;;#ASMEND
7974 ; GFX940-NEXT: ;;#ASMSTART
7975 ; GFX940-NEXT: ; def s[4:7]
7976 ; GFX940-NEXT: ;;#ASMEND
7977 ; GFX940-NEXT: s_mov_b32 s8, s7
7978 ; GFX940-NEXT: s_mov_b32 s9, s0
7979 ; GFX940-NEXT: ;;#ASMSTART
7980 ; GFX940-NEXT: ; use s[8:10]
7981 ; GFX940-NEXT: ;;#ASMEND
7982 ; GFX940-NEXT: s_setpc_b64 s[30:31]
7983 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7984 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
7985 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 poison>
7986 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
7990 define void @s_shuffle_v3p3_v4p3__7_1_u() {
7991 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_u:
7993 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7994 ; GFX900-NEXT: ;;#ASMSTART
7995 ; GFX900-NEXT: ; def s[8:11]
7996 ; GFX900-NEXT: ;;#ASMEND
7997 ; GFX900-NEXT: ;;#ASMSTART
7998 ; GFX900-NEXT: ; def s[4:7]
7999 ; GFX900-NEXT: ;;#ASMEND
8000 ; GFX900-NEXT: s_mov_b32 s8, s7
8001 ; GFX900-NEXT: ;;#ASMSTART
8002 ; GFX900-NEXT: ; use s[8:10]
8003 ; GFX900-NEXT: ;;#ASMEND
8004 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8006 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_u:
8008 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8009 ; GFX90A-NEXT: ;;#ASMSTART
8010 ; GFX90A-NEXT: ; def s[8:11]
8011 ; GFX90A-NEXT: ;;#ASMEND
8012 ; GFX90A-NEXT: ;;#ASMSTART
8013 ; GFX90A-NEXT: ; def s[4:7]
8014 ; GFX90A-NEXT: ;;#ASMEND
8015 ; GFX90A-NEXT: s_mov_b32 s8, s7
8016 ; GFX90A-NEXT: ;;#ASMSTART
8017 ; GFX90A-NEXT: ; use s[8:10]
8018 ; GFX90A-NEXT: ;;#ASMEND
8019 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8021 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_u:
8023 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8024 ; GFX940-NEXT: ;;#ASMSTART
8025 ; GFX940-NEXT: ; def s[8:11]
8026 ; GFX940-NEXT: ;;#ASMEND
8027 ; GFX940-NEXT: ;;#ASMSTART
8028 ; GFX940-NEXT: ; def s[0:3]
8029 ; GFX940-NEXT: ;;#ASMEND
8030 ; GFX940-NEXT: s_mov_b32 s8, s3
8031 ; GFX940-NEXT: ;;#ASMSTART
8032 ; GFX940-NEXT: ; use s[8:10]
8033 ; GFX940-NEXT: ;;#ASMEND
8034 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8035 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8036 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8037 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 poison>
8038 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8042 define void @s_shuffle_v3p3_v4p3__7_2_u() {
8043 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_u:
8045 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8046 ; GFX900-NEXT: ;;#ASMSTART
8047 ; GFX900-NEXT: ; def s[8:11]
8048 ; GFX900-NEXT: ;;#ASMEND
8049 ; GFX900-NEXT: ;;#ASMSTART
8050 ; GFX900-NEXT: ; def s[4:7]
8051 ; GFX900-NEXT: ;;#ASMEND
8052 ; GFX900-NEXT: s_mov_b32 s8, s11
8053 ; GFX900-NEXT: s_mov_b32 s9, s6
8054 ; GFX900-NEXT: ;;#ASMSTART
8055 ; GFX900-NEXT: ; use s[8:10]
8056 ; GFX900-NEXT: ;;#ASMEND
8057 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8059 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_u:
8061 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8062 ; GFX90A-NEXT: ;;#ASMSTART
8063 ; GFX90A-NEXT: ; def s[8:11]
8064 ; GFX90A-NEXT: ;;#ASMEND
8065 ; GFX90A-NEXT: ;;#ASMSTART
8066 ; GFX90A-NEXT: ; def s[4:7]
8067 ; GFX90A-NEXT: ;;#ASMEND
8068 ; GFX90A-NEXT: s_mov_b32 s8, s11
8069 ; GFX90A-NEXT: s_mov_b32 s9, s6
8070 ; GFX90A-NEXT: ;;#ASMSTART
8071 ; GFX90A-NEXT: ; use s[8:10]
8072 ; GFX90A-NEXT: ;;#ASMEND
8073 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8075 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_u:
8077 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8078 ; GFX940-NEXT: ;;#ASMSTART
8079 ; GFX940-NEXT: ; def s[0:3]
8080 ; GFX940-NEXT: ;;#ASMEND
8081 ; GFX940-NEXT: ;;#ASMSTART
8082 ; GFX940-NEXT: ; def s[4:7]
8083 ; GFX940-NEXT: ;;#ASMEND
8084 ; GFX940-NEXT: s_mov_b32 s8, s7
8085 ; GFX940-NEXT: s_mov_b32 s9, s2
8086 ; GFX940-NEXT: ;;#ASMSTART
8087 ; GFX940-NEXT: ; use s[8:10]
8088 ; GFX940-NEXT: ;;#ASMEND
8089 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8090 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8091 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8092 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 poison>
8093 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8097 define void @s_shuffle_v3p3_v4p3__7_3_u() {
8098 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_u:
8100 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8101 ; GFX900-NEXT: ;;#ASMSTART
8102 ; GFX900-NEXT: ; def s[8:11]
8103 ; GFX900-NEXT: ;;#ASMEND
8104 ; GFX900-NEXT: ;;#ASMSTART
8105 ; GFX900-NEXT: ; def s[4:7]
8106 ; GFX900-NEXT: ;;#ASMEND
8107 ; GFX900-NEXT: s_mov_b32 s8, s11
8108 ; GFX900-NEXT: s_mov_b32 s9, s7
8109 ; GFX900-NEXT: ;;#ASMSTART
8110 ; GFX900-NEXT: ; use s[8:10]
8111 ; GFX900-NEXT: ;;#ASMEND
8112 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8114 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_u:
8116 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8117 ; GFX90A-NEXT: ;;#ASMSTART
8118 ; GFX90A-NEXT: ; def s[8:11]
8119 ; GFX90A-NEXT: ;;#ASMEND
8120 ; GFX90A-NEXT: ;;#ASMSTART
8121 ; GFX90A-NEXT: ; def s[4:7]
8122 ; GFX90A-NEXT: ;;#ASMEND
8123 ; GFX90A-NEXT: s_mov_b32 s8, s11
8124 ; GFX90A-NEXT: s_mov_b32 s9, s7
8125 ; GFX90A-NEXT: ;;#ASMSTART
8126 ; GFX90A-NEXT: ; use s[8:10]
8127 ; GFX90A-NEXT: ;;#ASMEND
8128 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8130 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_u:
8132 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8133 ; GFX940-NEXT: ;;#ASMSTART
8134 ; GFX940-NEXT: ; def s[0:3]
8135 ; GFX940-NEXT: ;;#ASMEND
8136 ; GFX940-NEXT: ;;#ASMSTART
8137 ; GFX940-NEXT: ; def s[4:7]
8138 ; GFX940-NEXT: ;;#ASMEND
8139 ; GFX940-NEXT: s_mov_b32 s8, s7
8140 ; GFX940-NEXT: s_mov_b32 s9, s3
8141 ; GFX940-NEXT: ;;#ASMSTART
8142 ; GFX940-NEXT: ; use s[8:10]
8143 ; GFX940-NEXT: ;;#ASMEND
8144 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8145 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8146 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8147 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 poison>
8148 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8152 define void @s_shuffle_v3p3_v4p3__7_4_u() {
8153 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_u:
8155 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8156 ; GFX900-NEXT: ;;#ASMSTART
8157 ; GFX900-NEXT: ; def s[4:7]
8158 ; GFX900-NEXT: ;;#ASMEND
8159 ; GFX900-NEXT: s_mov_b32 s8, s7
8160 ; GFX900-NEXT: s_mov_b32 s9, s4
8161 ; GFX900-NEXT: ;;#ASMSTART
8162 ; GFX900-NEXT: ; use s[8:10]
8163 ; GFX900-NEXT: ;;#ASMEND
8164 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8166 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_u:
8168 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8169 ; GFX90A-NEXT: ;;#ASMSTART
8170 ; GFX90A-NEXT: ; def s[4:7]
8171 ; GFX90A-NEXT: ;;#ASMEND
8172 ; GFX90A-NEXT: s_mov_b32 s8, s7
8173 ; GFX90A-NEXT: s_mov_b32 s9, s4
8174 ; GFX90A-NEXT: ;;#ASMSTART
8175 ; GFX90A-NEXT: ; use s[8:10]
8176 ; GFX90A-NEXT: ;;#ASMEND
8177 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8179 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_u:
8181 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8182 ; GFX940-NEXT: ;;#ASMSTART
8183 ; GFX940-NEXT: ; def s[0:3]
8184 ; GFX940-NEXT: ;;#ASMEND
8185 ; GFX940-NEXT: s_mov_b32 s8, s3
8186 ; GFX940-NEXT: s_mov_b32 s9, s0
8187 ; GFX940-NEXT: ;;#ASMSTART
8188 ; GFX940-NEXT: ; use s[8:10]
8189 ; GFX940-NEXT: ;;#ASMEND
8190 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8191 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8192 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8193 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 poison>
8194 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8198 define void @s_shuffle_v3p3_v4p3__7_5_u() {
8199 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_5_u:
8201 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8202 ; GFX9-NEXT: ;;#ASMSTART
8203 ; GFX9-NEXT: ; def s[8:11]
8204 ; GFX9-NEXT: ;;#ASMEND
8205 ; GFX9-NEXT: s_mov_b32 s8, s11
8206 ; GFX9-NEXT: ;;#ASMSTART
8207 ; GFX9-NEXT: ; use s[8:10]
8208 ; GFX9-NEXT: ;;#ASMEND
8209 ; GFX9-NEXT: s_setpc_b64 s[30:31]
8210 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8211 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8212 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 poison>
8213 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8217 define void @s_shuffle_v3p3_v4p3__7_6_u() {
8218 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_u:
8220 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8221 ; GFX900-NEXT: ;;#ASMSTART
8222 ; GFX900-NEXT: ; def s[4:7]
8223 ; GFX900-NEXT: ;;#ASMEND
8224 ; GFX900-NEXT: s_mov_b32 s8, s7
8225 ; GFX900-NEXT: s_mov_b32 s9, s6
8226 ; GFX900-NEXT: ;;#ASMSTART
8227 ; GFX900-NEXT: ; use s[8:10]
8228 ; GFX900-NEXT: ;;#ASMEND
8229 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8231 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_u:
8233 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8234 ; GFX90A-NEXT: ;;#ASMSTART
8235 ; GFX90A-NEXT: ; def s[4:7]
8236 ; GFX90A-NEXT: ;;#ASMEND
8237 ; GFX90A-NEXT: s_mov_b32 s8, s7
8238 ; GFX90A-NEXT: s_mov_b32 s9, s6
8239 ; GFX90A-NEXT: ;;#ASMSTART
8240 ; GFX90A-NEXT: ; use s[8:10]
8241 ; GFX90A-NEXT: ;;#ASMEND
8242 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8244 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_6_u:
8246 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8247 ; GFX940-NEXT: ;;#ASMSTART
8248 ; GFX940-NEXT: ; def s[0:3]
8249 ; GFX940-NEXT: ;;#ASMEND
8250 ; GFX940-NEXT: s_mov_b32 s8, s3
8251 ; GFX940-NEXT: s_mov_b32 s9, s2
8252 ; GFX940-NEXT: ;;#ASMSTART
8253 ; GFX940-NEXT: ; use s[8:10]
8254 ; GFX940-NEXT: ;;#ASMEND
8255 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8256 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8257 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8258 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 poison>
8259 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8263 define void @s_shuffle_v3p3_v4p3__7_7_u() {
8264 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_u:
8266 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8267 ; GFX900-NEXT: ;;#ASMSTART
8268 ; GFX900-NEXT: ; def s[4:7]
8269 ; GFX900-NEXT: ;;#ASMEND
8270 ; GFX900-NEXT: s_mov_b32 s8, s7
8271 ; GFX900-NEXT: s_mov_b32 s9, s7
8272 ; GFX900-NEXT: ;;#ASMSTART
8273 ; GFX900-NEXT: ; use s[8:10]
8274 ; GFX900-NEXT: ;;#ASMEND
8275 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8277 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_u:
8279 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8280 ; GFX90A-NEXT: ;;#ASMSTART
8281 ; GFX90A-NEXT: ; def s[4:7]
8282 ; GFX90A-NEXT: ;;#ASMEND
8283 ; GFX90A-NEXT: s_mov_b32 s8, s7
8284 ; GFX90A-NEXT: s_mov_b32 s9, s7
8285 ; GFX90A-NEXT: ;;#ASMSTART
8286 ; GFX90A-NEXT: ; use s[8:10]
8287 ; GFX90A-NEXT: ;;#ASMEND
8288 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8290 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_7_u:
8292 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8293 ; GFX940-NEXT: ;;#ASMSTART
8294 ; GFX940-NEXT: ; def s[0:3]
8295 ; GFX940-NEXT: ;;#ASMEND
8296 ; GFX940-NEXT: s_mov_b32 s8, s3
8297 ; GFX940-NEXT: s_mov_b32 s9, s3
8298 ; GFX940-NEXT: ;;#ASMSTART
8299 ; GFX940-NEXT: ; use s[8:10]
8300 ; GFX940-NEXT: ;;#ASMEND
8301 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8302 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8303 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8304 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 poison>
8305 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8309 define void @s_shuffle_v3p3_v4p3__7_7_0() {
8310 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_0:
8312 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8313 ; GFX900-NEXT: ;;#ASMSTART
8314 ; GFX900-NEXT: ; def s[8:11]
8315 ; GFX900-NEXT: ;;#ASMEND
8316 ; GFX900-NEXT: ;;#ASMSTART
8317 ; GFX900-NEXT: ; def s[4:7]
8318 ; GFX900-NEXT: ;;#ASMEND
8319 ; GFX900-NEXT: s_mov_b32 s8, s11
8320 ; GFX900-NEXT: s_mov_b32 s9, s11
8321 ; GFX900-NEXT: s_mov_b32 s10, s4
8322 ; GFX900-NEXT: ;;#ASMSTART
8323 ; GFX900-NEXT: ; use s[8:10]
8324 ; GFX900-NEXT: ;;#ASMEND
8325 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8327 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_0:
8329 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8330 ; GFX90A-NEXT: ;;#ASMSTART
8331 ; GFX90A-NEXT: ; def s[8:11]
8332 ; GFX90A-NEXT: ;;#ASMEND
8333 ; GFX90A-NEXT: ;;#ASMSTART
8334 ; GFX90A-NEXT: ; def s[4:7]
8335 ; GFX90A-NEXT: ;;#ASMEND
8336 ; GFX90A-NEXT: s_mov_b32 s8, s11
8337 ; GFX90A-NEXT: s_mov_b32 s9, s11
8338 ; GFX90A-NEXT: s_mov_b32 s10, s4
8339 ; GFX90A-NEXT: ;;#ASMSTART
8340 ; GFX90A-NEXT: ; use s[8:10]
8341 ; GFX90A-NEXT: ;;#ASMEND
8342 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8344 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_7_0:
8346 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8347 ; GFX940-NEXT: ;;#ASMSTART
8348 ; GFX940-NEXT: ; def s[0:3]
8349 ; GFX940-NEXT: ;;#ASMEND
8350 ; GFX940-NEXT: ;;#ASMSTART
8351 ; GFX940-NEXT: ; def s[4:7]
8352 ; GFX940-NEXT: ;;#ASMEND
8353 ; GFX940-NEXT: s_mov_b32 s8, s7
8354 ; GFX940-NEXT: s_mov_b32 s9, s7
8355 ; GFX940-NEXT: s_mov_b32 s10, s0
8356 ; GFX940-NEXT: ;;#ASMSTART
8357 ; GFX940-NEXT: ; use s[8:10]
8358 ; GFX940-NEXT: ;;#ASMEND
8359 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8360 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8361 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8362 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 0>
8363 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8367 define void @s_shuffle_v3p3_v4p3__7_7_1() {
8368 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_1:
8370 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8371 ; GFX900-NEXT: ;;#ASMSTART
8372 ; GFX900-NEXT: ; def s[8:11]
8373 ; GFX900-NEXT: ;;#ASMEND
8374 ; GFX900-NEXT: ;;#ASMSTART
8375 ; GFX900-NEXT: ; def s[4:7]
8376 ; GFX900-NEXT: ;;#ASMEND
8377 ; GFX900-NEXT: s_mov_b32 s8, s11
8378 ; GFX900-NEXT: s_mov_b32 s9, s11
8379 ; GFX900-NEXT: s_mov_b32 s10, s5
8380 ; GFX900-NEXT: ;;#ASMSTART
8381 ; GFX900-NEXT: ; use s[8:10]
8382 ; GFX900-NEXT: ;;#ASMEND
8383 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8385 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_1:
8387 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8388 ; GFX90A-NEXT: ;;#ASMSTART
8389 ; GFX90A-NEXT: ; def s[8:11]
8390 ; GFX90A-NEXT: ;;#ASMEND
8391 ; GFX90A-NEXT: ;;#ASMSTART
8392 ; GFX90A-NEXT: ; def s[4:7]
8393 ; GFX90A-NEXT: ;;#ASMEND
8394 ; GFX90A-NEXT: s_mov_b32 s8, s11
8395 ; GFX90A-NEXT: s_mov_b32 s9, s11
8396 ; GFX90A-NEXT: s_mov_b32 s10, s5
8397 ; GFX90A-NEXT: ;;#ASMSTART
8398 ; GFX90A-NEXT: ; use s[8:10]
8399 ; GFX90A-NEXT: ;;#ASMEND
8400 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8402 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_7_1:
8404 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8405 ; GFX940-NEXT: ;;#ASMSTART
8406 ; GFX940-NEXT: ; def s[0:3]
8407 ; GFX940-NEXT: ;;#ASMEND
8408 ; GFX940-NEXT: ;;#ASMSTART
8409 ; GFX940-NEXT: ; def s[4:7]
8410 ; GFX940-NEXT: ;;#ASMEND
8411 ; GFX940-NEXT: s_mov_b32 s8, s7
8412 ; GFX940-NEXT: s_mov_b32 s9, s7
8413 ; GFX940-NEXT: s_mov_b32 s10, s1
8414 ; GFX940-NEXT: ;;#ASMSTART
8415 ; GFX940-NEXT: ; use s[8:10]
8416 ; GFX940-NEXT: ;;#ASMEND
8417 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8418 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8419 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8420 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 1>
8421 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8425 define void @s_shuffle_v3p3_v4p3__7_7_2() {
8426 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_2:
8428 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8429 ; GFX900-NEXT: ;;#ASMSTART
8430 ; GFX900-NEXT: ; def s[8:11]
8431 ; GFX900-NEXT: ;;#ASMEND
8432 ; GFX900-NEXT: ;;#ASMSTART
8433 ; GFX900-NEXT: ; def s[4:7]
8434 ; GFX900-NEXT: ;;#ASMEND
8435 ; GFX900-NEXT: s_mov_b32 s8, s7
8436 ; GFX900-NEXT: s_mov_b32 s9, s7
8437 ; GFX900-NEXT: ;;#ASMSTART
8438 ; GFX900-NEXT: ; use s[8:10]
8439 ; GFX900-NEXT: ;;#ASMEND
8440 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8442 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_2:
8444 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8445 ; GFX90A-NEXT: ;;#ASMSTART
8446 ; GFX90A-NEXT: ; def s[8:11]
8447 ; GFX90A-NEXT: ;;#ASMEND
8448 ; GFX90A-NEXT: ;;#ASMSTART
8449 ; GFX90A-NEXT: ; def s[4:7]
8450 ; GFX90A-NEXT: ;;#ASMEND
8451 ; GFX90A-NEXT: s_mov_b32 s8, s7
8452 ; GFX90A-NEXT: s_mov_b32 s9, s7
8453 ; GFX90A-NEXT: ;;#ASMSTART
8454 ; GFX90A-NEXT: ; use s[8:10]
8455 ; GFX90A-NEXT: ;;#ASMEND
8456 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8458 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_7_2:
8460 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8461 ; GFX940-NEXT: ;;#ASMSTART
8462 ; GFX940-NEXT: ; def s[8:11]
8463 ; GFX940-NEXT: ;;#ASMEND
8464 ; GFX940-NEXT: ;;#ASMSTART
8465 ; GFX940-NEXT: ; def s[0:3]
8466 ; GFX940-NEXT: ;;#ASMEND
8467 ; GFX940-NEXT: s_mov_b32 s8, s3
8468 ; GFX940-NEXT: s_mov_b32 s9, s3
8469 ; GFX940-NEXT: ;;#ASMSTART
8470 ; GFX940-NEXT: ; use s[8:10]
8471 ; GFX940-NEXT: ;;#ASMEND
8472 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8473 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8474 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8475 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 2>
8476 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8480 define void @s_shuffle_v3p3_v4p3__7_7_3() {
8481 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_3:
8483 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8484 ; GFX900-NEXT: ;;#ASMSTART
8485 ; GFX900-NEXT: ; def s[8:11]
8486 ; GFX900-NEXT: ;;#ASMEND
8487 ; GFX900-NEXT: ;;#ASMSTART
8488 ; GFX900-NEXT: ; def s[4:7]
8489 ; GFX900-NEXT: ;;#ASMEND
8490 ; GFX900-NEXT: s_mov_b32 s8, s11
8491 ; GFX900-NEXT: s_mov_b32 s9, s11
8492 ; GFX900-NEXT: s_mov_b32 s10, s7
8493 ; GFX900-NEXT: ;;#ASMSTART
8494 ; GFX900-NEXT: ; use s[8:10]
8495 ; GFX900-NEXT: ;;#ASMEND
8496 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8498 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_3:
8500 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8501 ; GFX90A-NEXT: ;;#ASMSTART
8502 ; GFX90A-NEXT: ; def s[8:11]
8503 ; GFX90A-NEXT: ;;#ASMEND
8504 ; GFX90A-NEXT: ;;#ASMSTART
8505 ; GFX90A-NEXT: ; def s[4:7]
8506 ; GFX90A-NEXT: ;;#ASMEND
8507 ; GFX90A-NEXT: s_mov_b32 s8, s11
8508 ; GFX90A-NEXT: s_mov_b32 s9, s11
8509 ; GFX90A-NEXT: s_mov_b32 s10, s7
8510 ; GFX90A-NEXT: ;;#ASMSTART
8511 ; GFX90A-NEXT: ; use s[8:10]
8512 ; GFX90A-NEXT: ;;#ASMEND
8513 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8515 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_7_3:
8517 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8518 ; GFX940-NEXT: ;;#ASMSTART
8519 ; GFX940-NEXT: ; def s[0:3]
8520 ; GFX940-NEXT: ;;#ASMEND
8521 ; GFX940-NEXT: ;;#ASMSTART
8522 ; GFX940-NEXT: ; def s[4:7]
8523 ; GFX940-NEXT: ;;#ASMEND
8524 ; GFX940-NEXT: s_mov_b32 s8, s7
8525 ; GFX940-NEXT: s_mov_b32 s9, s7
8526 ; GFX940-NEXT: s_mov_b32 s10, s3
8527 ; GFX940-NEXT: ;;#ASMSTART
8528 ; GFX940-NEXT: ; use s[8:10]
8529 ; GFX940-NEXT: ;;#ASMEND
8530 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8531 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8532 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8533 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 3>
8534 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8538 define void @s_shuffle_v3p3_v4p3__7_7_4() {
8539 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_4:
8541 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8542 ; GFX900-NEXT: ;;#ASMSTART
8543 ; GFX900-NEXT: ; def s[4:7]
8544 ; GFX900-NEXT: ;;#ASMEND
8545 ; GFX900-NEXT: s_mov_b32 s8, s7
8546 ; GFX900-NEXT: s_mov_b32 s9, s7
8547 ; GFX900-NEXT: s_mov_b32 s10, s4
8548 ; GFX900-NEXT: ;;#ASMSTART
8549 ; GFX900-NEXT: ; use s[8:10]
8550 ; GFX900-NEXT: ;;#ASMEND
8551 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8553 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_4:
8555 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8556 ; GFX90A-NEXT: ;;#ASMSTART
8557 ; GFX90A-NEXT: ; def s[4:7]
8558 ; GFX90A-NEXT: ;;#ASMEND
8559 ; GFX90A-NEXT: s_mov_b32 s8, s7
8560 ; GFX90A-NEXT: s_mov_b32 s9, s7
8561 ; GFX90A-NEXT: s_mov_b32 s10, s4
8562 ; GFX90A-NEXT: ;;#ASMSTART
8563 ; GFX90A-NEXT: ; use s[8:10]
8564 ; GFX90A-NEXT: ;;#ASMEND
8565 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8567 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_7_4:
8569 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8570 ; GFX940-NEXT: ;;#ASMSTART
8571 ; GFX940-NEXT: ; def s[0:3]
8572 ; GFX940-NEXT: ;;#ASMEND
8573 ; GFX940-NEXT: s_mov_b32 s8, s3
8574 ; GFX940-NEXT: s_mov_b32 s9, s3
8575 ; GFX940-NEXT: s_mov_b32 s10, s0
8576 ; GFX940-NEXT: ;;#ASMSTART
8577 ; GFX940-NEXT: ; use s[8:10]
8578 ; GFX940-NEXT: ;;#ASMEND
8579 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8580 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8581 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8582 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 4>
8583 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8587 define void @s_shuffle_v3p3_v4p3__7_7_5() {
8588 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_5:
8590 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8591 ; GFX900-NEXT: ;;#ASMSTART
8592 ; GFX900-NEXT: ; def s[4:7]
8593 ; GFX900-NEXT: ;;#ASMEND
8594 ; GFX900-NEXT: s_mov_b32 s8, s7
8595 ; GFX900-NEXT: s_mov_b32 s9, s7
8596 ; GFX900-NEXT: s_mov_b32 s10, s5
8597 ; GFX900-NEXT: ;;#ASMSTART
8598 ; GFX900-NEXT: ; use s[8:10]
8599 ; GFX900-NEXT: ;;#ASMEND
8600 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8602 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_5:
8604 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8605 ; GFX90A-NEXT: ;;#ASMSTART
8606 ; GFX90A-NEXT: ; def s[4:7]
8607 ; GFX90A-NEXT: ;;#ASMEND
8608 ; GFX90A-NEXT: s_mov_b32 s8, s7
8609 ; GFX90A-NEXT: s_mov_b32 s9, s7
8610 ; GFX90A-NEXT: s_mov_b32 s10, s5
8611 ; GFX90A-NEXT: ;;#ASMSTART
8612 ; GFX90A-NEXT: ; use s[8:10]
8613 ; GFX90A-NEXT: ;;#ASMEND
8614 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8616 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_7_5:
8618 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8619 ; GFX940-NEXT: ;;#ASMSTART
8620 ; GFX940-NEXT: ; def s[0:3]
8621 ; GFX940-NEXT: ;;#ASMEND
8622 ; GFX940-NEXT: s_mov_b32 s8, s3
8623 ; GFX940-NEXT: s_mov_b32 s9, s3
8624 ; GFX940-NEXT: s_mov_b32 s10, s1
8625 ; GFX940-NEXT: ;;#ASMSTART
8626 ; GFX940-NEXT: ; use s[8:10]
8627 ; GFX940-NEXT: ;;#ASMEND
8628 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8629 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8630 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8631 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 5>
8632 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8636 define void @s_shuffle_v3p3_v4p3__7_7_6() {
8637 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_7_6:
8639 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8640 ; GFX9-NEXT: ;;#ASMSTART
8641 ; GFX9-NEXT: ; def s[8:11]
8642 ; GFX9-NEXT: ;;#ASMEND
8643 ; GFX9-NEXT: s_mov_b32 s8, s11
8644 ; GFX9-NEXT: s_mov_b32 s9, s11
8645 ; GFX9-NEXT: ;;#ASMSTART
8646 ; GFX9-NEXT: ; use s[8:10]
8647 ; GFX9-NEXT: ;;#ASMEND
8648 ; GFX9-NEXT: s_setpc_b64 s[30:31]
8649 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8650 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8651 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 6>
8652 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8656 define void @s_shuffle_v3p3_v4p3__7_7_7() {
8657 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_7:
8659 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8660 ; GFX900-NEXT: ;;#ASMSTART
8661 ; GFX900-NEXT: ; def s[4:7]
8662 ; GFX900-NEXT: ;;#ASMEND
8663 ; GFX900-NEXT: s_mov_b32 s8, s7
8664 ; GFX900-NEXT: s_mov_b32 s9, s7
8665 ; GFX900-NEXT: s_mov_b32 s10, s7
8666 ; GFX900-NEXT: ;;#ASMSTART
8667 ; GFX900-NEXT: ; use s[8:10]
8668 ; GFX900-NEXT: ;;#ASMEND
8669 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8671 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_7:
8673 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8674 ; GFX90A-NEXT: ;;#ASMSTART
8675 ; GFX90A-NEXT: ; def s[4:7]
8676 ; GFX90A-NEXT: ;;#ASMEND
8677 ; GFX90A-NEXT: s_mov_b32 s8, s7
8678 ; GFX90A-NEXT: s_mov_b32 s9, s7
8679 ; GFX90A-NEXT: s_mov_b32 s10, s7
8680 ; GFX90A-NEXT: ;;#ASMSTART
8681 ; GFX90A-NEXT: ; use s[8:10]
8682 ; GFX90A-NEXT: ;;#ASMEND
8683 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8685 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_7_7:
8687 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8688 ; GFX940-NEXT: ;;#ASMSTART
8689 ; GFX940-NEXT: ; def s[0:3]
8690 ; GFX940-NEXT: ;;#ASMEND
8691 ; GFX940-NEXT: s_mov_b32 s8, s3
8692 ; GFX940-NEXT: s_mov_b32 s9, s3
8693 ; GFX940-NEXT: s_mov_b32 s10, s3
8694 ; GFX940-NEXT: ;;#ASMSTART
8695 ; GFX940-NEXT: ; use s[8:10]
8696 ; GFX940-NEXT: ;;#ASMEND
8697 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8698 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8699 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8700 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 7>
8701 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8705 define void @s_shuffle_v3p3_v4p3__u_0_0() {
8706 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__u_0_0:
8708 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8709 ; GFX900-NEXT: ;;#ASMSTART
8710 ; GFX900-NEXT: ; def s[4:7]
8711 ; GFX900-NEXT: ;;#ASMEND
8712 ; GFX900-NEXT: s_mov_b32 s9, s4
8713 ; GFX900-NEXT: s_mov_b32 s10, s4
8714 ; GFX900-NEXT: ;;#ASMSTART
8715 ; GFX900-NEXT: ; use s[8:10]
8716 ; GFX900-NEXT: ;;#ASMEND
8717 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8719 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__u_0_0:
8721 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8722 ; GFX90A-NEXT: ;;#ASMSTART
8723 ; GFX90A-NEXT: ; def s[4:7]
8724 ; GFX90A-NEXT: ;;#ASMEND
8725 ; GFX90A-NEXT: s_mov_b32 s9, s4
8726 ; GFX90A-NEXT: s_mov_b32 s10, s4
8727 ; GFX90A-NEXT: ;;#ASMSTART
8728 ; GFX90A-NEXT: ; use s[8:10]
8729 ; GFX90A-NEXT: ;;#ASMEND
8730 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8732 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__u_0_0:
8734 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8735 ; GFX940-NEXT: ;;#ASMSTART
8736 ; GFX940-NEXT: ; def s[0:3]
8737 ; GFX940-NEXT: ;;#ASMEND
8738 ; GFX940-NEXT: s_mov_b32 s9, s0
8739 ; GFX940-NEXT: s_mov_b32 s10, s0
8740 ; GFX940-NEXT: ;;#ASMSTART
8741 ; GFX940-NEXT: ; use s[8:10]
8742 ; GFX940-NEXT: ;;#ASMEND
8743 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8744 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8745 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 0, i32 0>
8746 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8750 define void @s_shuffle_v3p3_v4p3__0_0_0() {
8751 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__0_0_0:
8753 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8754 ; GFX9-NEXT: ;;#ASMSTART
8755 ; GFX9-NEXT: ; def s[8:11]
8756 ; GFX9-NEXT: ;;#ASMEND
8757 ; GFX9-NEXT: s_mov_b32 s9, s8
8758 ; GFX9-NEXT: s_mov_b32 s10, s8
8759 ; GFX9-NEXT: ;;#ASMSTART
8760 ; GFX9-NEXT: ; use s[8:10]
8761 ; GFX9-NEXT: ;;#ASMEND
8762 ; GFX9-NEXT: s_setpc_b64 s[30:31]
8763 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8764 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> zeroinitializer
8765 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8769 define void @s_shuffle_v3p3_v4p3__1_0_0() {
8770 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_0_0:
8772 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8773 ; GFX900-NEXT: ;;#ASMSTART
8774 ; GFX900-NEXT: ; def s[4:7]
8775 ; GFX900-NEXT: ;;#ASMEND
8776 ; GFX900-NEXT: s_mov_b32 s8, s5
8777 ; GFX900-NEXT: s_mov_b32 s9, s4
8778 ; GFX900-NEXT: s_mov_b32 s10, s4
8779 ; GFX900-NEXT: ;;#ASMSTART
8780 ; GFX900-NEXT: ; use s[8:10]
8781 ; GFX900-NEXT: ;;#ASMEND
8782 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8784 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_0_0:
8786 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8787 ; GFX90A-NEXT: ;;#ASMSTART
8788 ; GFX90A-NEXT: ; def s[4:7]
8789 ; GFX90A-NEXT: ;;#ASMEND
8790 ; GFX90A-NEXT: s_mov_b32 s8, s5
8791 ; GFX90A-NEXT: s_mov_b32 s9, s4
8792 ; GFX90A-NEXT: s_mov_b32 s10, s4
8793 ; GFX90A-NEXT: ;;#ASMSTART
8794 ; GFX90A-NEXT: ; use s[8:10]
8795 ; GFX90A-NEXT: ;;#ASMEND
8796 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8798 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__1_0_0:
8800 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8801 ; GFX940-NEXT: ;;#ASMSTART
8802 ; GFX940-NEXT: ; def s[0:3]
8803 ; GFX940-NEXT: ;;#ASMEND
8804 ; GFX940-NEXT: s_mov_b32 s8, s1
8805 ; GFX940-NEXT: s_mov_b32 s9, s0
8806 ; GFX940-NEXT: s_mov_b32 s10, s0
8807 ; GFX940-NEXT: ;;#ASMSTART
8808 ; GFX940-NEXT: ; use s[8:10]
8809 ; GFX940-NEXT: ;;#ASMEND
8810 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8811 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8812 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 0, i32 0>
8813 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8817 define void @s_shuffle_v3p3_v4p3__2_0_0() {
8818 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_0_0:
8820 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8821 ; GFX900-NEXT: ;;#ASMSTART
8822 ; GFX900-NEXT: ; def s[4:7]
8823 ; GFX900-NEXT: ;;#ASMEND
8824 ; GFX900-NEXT: s_mov_b32 s8, s6
8825 ; GFX900-NEXT: s_mov_b32 s9, s4
8826 ; GFX900-NEXT: s_mov_b32 s10, s4
8827 ; GFX900-NEXT: ;;#ASMSTART
8828 ; GFX900-NEXT: ; use s[8:10]
8829 ; GFX900-NEXT: ;;#ASMEND
8830 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8832 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_0_0:
8834 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8835 ; GFX90A-NEXT: ;;#ASMSTART
8836 ; GFX90A-NEXT: ; def s[4:7]
8837 ; GFX90A-NEXT: ;;#ASMEND
8838 ; GFX90A-NEXT: s_mov_b32 s8, s6
8839 ; GFX90A-NEXT: s_mov_b32 s9, s4
8840 ; GFX90A-NEXT: s_mov_b32 s10, s4
8841 ; GFX90A-NEXT: ;;#ASMSTART
8842 ; GFX90A-NEXT: ; use s[8:10]
8843 ; GFX90A-NEXT: ;;#ASMEND
8844 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8846 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__2_0_0:
8848 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8849 ; GFX940-NEXT: ;;#ASMSTART
8850 ; GFX940-NEXT: ; def s[0:3]
8851 ; GFX940-NEXT: ;;#ASMEND
8852 ; GFX940-NEXT: s_mov_b32 s8, s2
8853 ; GFX940-NEXT: s_mov_b32 s9, s0
8854 ; GFX940-NEXT: s_mov_b32 s10, s0
8855 ; GFX940-NEXT: ;;#ASMSTART
8856 ; GFX940-NEXT: ; use s[8:10]
8857 ; GFX940-NEXT: ;;#ASMEND
8858 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8859 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8860 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 0, i32 0>
8861 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8865 define void @s_shuffle_v3p3_v4p3__3_0_0() {
8866 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_0_0:
8868 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8869 ; GFX900-NEXT: ;;#ASMSTART
8870 ; GFX900-NEXT: ; def s[4:7]
8871 ; GFX900-NEXT: ;;#ASMEND
8872 ; GFX900-NEXT: s_mov_b32 s8, s7
8873 ; GFX900-NEXT: s_mov_b32 s9, s4
8874 ; GFX900-NEXT: s_mov_b32 s10, s4
8875 ; GFX900-NEXT: ;;#ASMSTART
8876 ; GFX900-NEXT: ; use s[8:10]
8877 ; GFX900-NEXT: ;;#ASMEND
8878 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8880 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_0_0:
8882 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8883 ; GFX90A-NEXT: ;;#ASMSTART
8884 ; GFX90A-NEXT: ; def s[4:7]
8885 ; GFX90A-NEXT: ;;#ASMEND
8886 ; GFX90A-NEXT: s_mov_b32 s8, s7
8887 ; GFX90A-NEXT: s_mov_b32 s9, s4
8888 ; GFX90A-NEXT: s_mov_b32 s10, s4
8889 ; GFX90A-NEXT: ;;#ASMSTART
8890 ; GFX90A-NEXT: ; use s[8:10]
8891 ; GFX90A-NEXT: ;;#ASMEND
8892 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8894 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__3_0_0:
8896 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8897 ; GFX940-NEXT: ;;#ASMSTART
8898 ; GFX940-NEXT: ; def s[0:3]
8899 ; GFX940-NEXT: ;;#ASMEND
8900 ; GFX940-NEXT: s_mov_b32 s8, s3
8901 ; GFX940-NEXT: s_mov_b32 s9, s0
8902 ; GFX940-NEXT: s_mov_b32 s10, s0
8903 ; GFX940-NEXT: ;;#ASMSTART
8904 ; GFX940-NEXT: ; use s[8:10]
8905 ; GFX940-NEXT: ;;#ASMEND
8906 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8907 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8908 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 0, i32 0>
8909 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8913 define void @s_shuffle_v3p3_v4p3__4_0_0() {
8914 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__4_0_0:
8916 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8917 ; GFX900-NEXT: ;;#ASMSTART
8918 ; GFX900-NEXT: ; def s[4:7]
8919 ; GFX900-NEXT: ;;#ASMEND
8920 ; GFX900-NEXT: s_mov_b32 s9, s4
8921 ; GFX900-NEXT: s_mov_b32 s10, s4
8922 ; GFX900-NEXT: ;;#ASMSTART
8923 ; GFX900-NEXT: ; use s[8:10]
8924 ; GFX900-NEXT: ;;#ASMEND
8925 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8927 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__4_0_0:
8929 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8930 ; GFX90A-NEXT: ;;#ASMSTART
8931 ; GFX90A-NEXT: ; def s[4:7]
8932 ; GFX90A-NEXT: ;;#ASMEND
8933 ; GFX90A-NEXT: s_mov_b32 s9, s4
8934 ; GFX90A-NEXT: s_mov_b32 s10, s4
8935 ; GFX90A-NEXT: ;;#ASMSTART
8936 ; GFX90A-NEXT: ; use s[8:10]
8937 ; GFX90A-NEXT: ;;#ASMEND
8938 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8940 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__4_0_0:
8942 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8943 ; GFX940-NEXT: ;;#ASMSTART
8944 ; GFX940-NEXT: ; def s[0:3]
8945 ; GFX940-NEXT: ;;#ASMEND
8946 ; GFX940-NEXT: s_mov_b32 s9, s0
8947 ; GFX940-NEXT: s_mov_b32 s10, s0
8948 ; GFX940-NEXT: ;;#ASMSTART
8949 ; GFX940-NEXT: ; use s[8:10]
8950 ; GFX940-NEXT: ;;#ASMEND
8951 ; GFX940-NEXT: s_setpc_b64 s[30:31]
8952 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
8953 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 0, i32 0>
8954 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
8958 define void @s_shuffle_v3p3_v4p3__5_0_0() {
8959 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_0_0:
8961 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8962 ; GFX900-NEXT: ;;#ASMSTART
8963 ; GFX900-NEXT: ; def s[8:11]
8964 ; GFX900-NEXT: ;;#ASMEND
8965 ; GFX900-NEXT: ;;#ASMSTART
8966 ; GFX900-NEXT: ; def s[4:7]
8967 ; GFX900-NEXT: ;;#ASMEND
8968 ; GFX900-NEXT: s_mov_b32 s8, s9
8969 ; GFX900-NEXT: s_mov_b32 s9, s4
8970 ; GFX900-NEXT: s_mov_b32 s10, s4
8971 ; GFX900-NEXT: ;;#ASMSTART
8972 ; GFX900-NEXT: ; use s[8:10]
8973 ; GFX900-NEXT: ;;#ASMEND
8974 ; GFX900-NEXT: s_setpc_b64 s[30:31]
8976 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_0_0:
8978 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8979 ; GFX90A-NEXT: ;;#ASMSTART
8980 ; GFX90A-NEXT: ; def s[8:11]
8981 ; GFX90A-NEXT: ;;#ASMEND
8982 ; GFX90A-NEXT: ;;#ASMSTART
8983 ; GFX90A-NEXT: ; def s[4:7]
8984 ; GFX90A-NEXT: ;;#ASMEND
8985 ; GFX90A-NEXT: s_mov_b32 s8, s9
8986 ; GFX90A-NEXT: s_mov_b32 s9, s4
8987 ; GFX90A-NEXT: s_mov_b32 s10, s4
8988 ; GFX90A-NEXT: ;;#ASMSTART
8989 ; GFX90A-NEXT: ; use s[8:10]
8990 ; GFX90A-NEXT: ;;#ASMEND
8991 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
8993 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__5_0_0:
8995 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8996 ; GFX940-NEXT: ;;#ASMSTART
8997 ; GFX940-NEXT: ; def s[0:3]
8998 ; GFX940-NEXT: ;;#ASMEND
8999 ; GFX940-NEXT: ;;#ASMSTART
9000 ; GFX940-NEXT: ; def s[4:7]
9001 ; GFX940-NEXT: ;;#ASMEND
9002 ; GFX940-NEXT: s_mov_b32 s8, s5
9003 ; GFX940-NEXT: s_mov_b32 s9, s0
9004 ; GFX940-NEXT: s_mov_b32 s10, s0
9005 ; GFX940-NEXT: ;;#ASMSTART
9006 ; GFX940-NEXT: ; use s[8:10]
9007 ; GFX940-NEXT: ;;#ASMEND
9008 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9009 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9010 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9011 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 0, i32 0>
9012 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9016 define void @s_shuffle_v3p3_v4p3__6_0_0() {
9017 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_0_0:
9019 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9020 ; GFX900-NEXT: ;;#ASMSTART
9021 ; GFX900-NEXT: ; def s[8:11]
9022 ; GFX900-NEXT: ;;#ASMEND
9023 ; GFX900-NEXT: ;;#ASMSTART
9024 ; GFX900-NEXT: ; def s[4:7]
9025 ; GFX900-NEXT: ;;#ASMEND
9026 ; GFX900-NEXT: s_mov_b32 s8, s10
9027 ; GFX900-NEXT: s_mov_b32 s9, s4
9028 ; GFX900-NEXT: s_mov_b32 s10, s4
9029 ; GFX900-NEXT: ;;#ASMSTART
9030 ; GFX900-NEXT: ; use s[8:10]
9031 ; GFX900-NEXT: ;;#ASMEND
9032 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9034 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_0_0:
9036 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9037 ; GFX90A-NEXT: ;;#ASMSTART
9038 ; GFX90A-NEXT: ; def s[8:11]
9039 ; GFX90A-NEXT: ;;#ASMEND
9040 ; GFX90A-NEXT: ;;#ASMSTART
9041 ; GFX90A-NEXT: ; def s[4:7]
9042 ; GFX90A-NEXT: ;;#ASMEND
9043 ; GFX90A-NEXT: s_mov_b32 s8, s10
9044 ; GFX90A-NEXT: s_mov_b32 s9, s4
9045 ; GFX90A-NEXT: s_mov_b32 s10, s4
9046 ; GFX90A-NEXT: ;;#ASMSTART
9047 ; GFX90A-NEXT: ; use s[8:10]
9048 ; GFX90A-NEXT: ;;#ASMEND
9049 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9051 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__6_0_0:
9053 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9054 ; GFX940-NEXT: ;;#ASMSTART
9055 ; GFX940-NEXT: ; def s[0:3]
9056 ; GFX940-NEXT: ;;#ASMEND
9057 ; GFX940-NEXT: ;;#ASMSTART
9058 ; GFX940-NEXT: ; def s[4:7]
9059 ; GFX940-NEXT: ;;#ASMEND
9060 ; GFX940-NEXT: s_mov_b32 s8, s6
9061 ; GFX940-NEXT: s_mov_b32 s9, s0
9062 ; GFX940-NEXT: s_mov_b32 s10, s0
9063 ; GFX940-NEXT: ;;#ASMSTART
9064 ; GFX940-NEXT: ; use s[8:10]
9065 ; GFX940-NEXT: ;;#ASMEND
9066 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9067 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9068 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9069 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 0, i32 0>
9070 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9074 define void @s_shuffle_v3p3_v4p3__7_0_0() {
9075 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_0:
9077 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9078 ; GFX900-NEXT: ;;#ASMSTART
9079 ; GFX900-NEXT: ; def s[8:11]
9080 ; GFX900-NEXT: ;;#ASMEND
9081 ; GFX900-NEXT: ;;#ASMSTART
9082 ; GFX900-NEXT: ; def s[4:7]
9083 ; GFX900-NEXT: ;;#ASMEND
9084 ; GFX900-NEXT: s_mov_b32 s8, s11
9085 ; GFX900-NEXT: s_mov_b32 s9, s4
9086 ; GFX900-NEXT: s_mov_b32 s10, s4
9087 ; GFX900-NEXT: ;;#ASMSTART
9088 ; GFX900-NEXT: ; use s[8:10]
9089 ; GFX900-NEXT: ;;#ASMEND
9090 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9092 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_0:
9094 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9095 ; GFX90A-NEXT: ;;#ASMSTART
9096 ; GFX90A-NEXT: ; def s[8:11]
9097 ; GFX90A-NEXT: ;;#ASMEND
9098 ; GFX90A-NEXT: ;;#ASMSTART
9099 ; GFX90A-NEXT: ; def s[4:7]
9100 ; GFX90A-NEXT: ;;#ASMEND
9101 ; GFX90A-NEXT: s_mov_b32 s8, s11
9102 ; GFX90A-NEXT: s_mov_b32 s9, s4
9103 ; GFX90A-NEXT: s_mov_b32 s10, s4
9104 ; GFX90A-NEXT: ;;#ASMSTART
9105 ; GFX90A-NEXT: ; use s[8:10]
9106 ; GFX90A-NEXT: ;;#ASMEND
9107 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9109 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_0:
9111 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9112 ; GFX940-NEXT: ;;#ASMSTART
9113 ; GFX940-NEXT: ; def s[0:3]
9114 ; GFX940-NEXT: ;;#ASMEND
9115 ; GFX940-NEXT: ;;#ASMSTART
9116 ; GFX940-NEXT: ; def s[4:7]
9117 ; GFX940-NEXT: ;;#ASMEND
9118 ; GFX940-NEXT: s_mov_b32 s8, s7
9119 ; GFX940-NEXT: s_mov_b32 s9, s0
9120 ; GFX940-NEXT: s_mov_b32 s10, s0
9121 ; GFX940-NEXT: ;;#ASMSTART
9122 ; GFX940-NEXT: ; use s[8:10]
9123 ; GFX940-NEXT: ;;#ASMEND
9124 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9125 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9126 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9127 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 0>
9128 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9132 define void @s_shuffle_v3p3_v4p3__7_u_0() {
9133 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_0:
9135 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9136 ; GFX900-NEXT: ;;#ASMSTART
9137 ; GFX900-NEXT: ; def s[8:11]
9138 ; GFX900-NEXT: ;;#ASMEND
9139 ; GFX900-NEXT: ;;#ASMSTART
9140 ; GFX900-NEXT: ; def s[4:7]
9141 ; GFX900-NEXT: ;;#ASMEND
9142 ; GFX900-NEXT: s_mov_b32 s8, s11
9143 ; GFX900-NEXT: s_mov_b32 s10, s4
9144 ; GFX900-NEXT: ;;#ASMSTART
9145 ; GFX900-NEXT: ; use s[8:10]
9146 ; GFX900-NEXT: ;;#ASMEND
9147 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9149 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_0:
9151 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9152 ; GFX90A-NEXT: ;;#ASMSTART
9153 ; GFX90A-NEXT: ; def s[8:11]
9154 ; GFX90A-NEXT: ;;#ASMEND
9155 ; GFX90A-NEXT: ;;#ASMSTART
9156 ; GFX90A-NEXT: ; def s[4:7]
9157 ; GFX90A-NEXT: ;;#ASMEND
9158 ; GFX90A-NEXT: s_mov_b32 s8, s11
9159 ; GFX90A-NEXT: s_mov_b32 s10, s4
9160 ; GFX90A-NEXT: ;;#ASMSTART
9161 ; GFX90A-NEXT: ; use s[8:10]
9162 ; GFX90A-NEXT: ;;#ASMEND
9163 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9165 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_u_0:
9167 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9168 ; GFX940-NEXT: ;;#ASMSTART
9169 ; GFX940-NEXT: ; def s[0:3]
9170 ; GFX940-NEXT: ;;#ASMEND
9171 ; GFX940-NEXT: ;;#ASMSTART
9172 ; GFX940-NEXT: ; def s[4:7]
9173 ; GFX940-NEXT: ;;#ASMEND
9174 ; GFX940-NEXT: s_mov_b32 s8, s7
9175 ; GFX940-NEXT: s_mov_b32 s10, s0
9176 ; GFX940-NEXT: ;;#ASMSTART
9177 ; GFX940-NEXT: ; use s[8:10]
9178 ; GFX940-NEXT: ;;#ASMEND
9179 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9180 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9181 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9182 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 0>
9183 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9187 define void @s_shuffle_v3p3_v4p3__7_1_0() {
9188 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_0:
9190 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9191 ; GFX900-NEXT: ;;#ASMSTART
9192 ; GFX900-NEXT: ; def s[8:11]
9193 ; GFX900-NEXT: ;;#ASMEND
9194 ; GFX900-NEXT: ;;#ASMSTART
9195 ; GFX900-NEXT: ; def s[4:7]
9196 ; GFX900-NEXT: ;;#ASMEND
9197 ; GFX900-NEXT: s_mov_b32 s8, s11
9198 ; GFX900-NEXT: s_mov_b32 s9, s5
9199 ; GFX900-NEXT: s_mov_b32 s10, s4
9200 ; GFX900-NEXT: ;;#ASMSTART
9201 ; GFX900-NEXT: ; use s[8:10]
9202 ; GFX900-NEXT: ;;#ASMEND
9203 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9205 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_0:
9207 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9208 ; GFX90A-NEXT: ;;#ASMSTART
9209 ; GFX90A-NEXT: ; def s[8:11]
9210 ; GFX90A-NEXT: ;;#ASMEND
9211 ; GFX90A-NEXT: ;;#ASMSTART
9212 ; GFX90A-NEXT: ; def s[4:7]
9213 ; GFX90A-NEXT: ;;#ASMEND
9214 ; GFX90A-NEXT: s_mov_b32 s8, s11
9215 ; GFX90A-NEXT: s_mov_b32 s9, s5
9216 ; GFX90A-NEXT: s_mov_b32 s10, s4
9217 ; GFX90A-NEXT: ;;#ASMSTART
9218 ; GFX90A-NEXT: ; use s[8:10]
9219 ; GFX90A-NEXT: ;;#ASMEND
9220 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9222 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_0:
9224 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9225 ; GFX940-NEXT: ;;#ASMSTART
9226 ; GFX940-NEXT: ; def s[0:3]
9227 ; GFX940-NEXT: ;;#ASMEND
9228 ; GFX940-NEXT: ;;#ASMSTART
9229 ; GFX940-NEXT: ; def s[4:7]
9230 ; GFX940-NEXT: ;;#ASMEND
9231 ; GFX940-NEXT: s_mov_b32 s8, s7
9232 ; GFX940-NEXT: s_mov_b32 s9, s1
9233 ; GFX940-NEXT: s_mov_b32 s10, s0
9234 ; GFX940-NEXT: ;;#ASMSTART
9235 ; GFX940-NEXT: ; use s[8:10]
9236 ; GFX940-NEXT: ;;#ASMEND
9237 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9238 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9239 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9240 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 0>
9241 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9245 define void @s_shuffle_v3p3_v4p3__7_2_0() {
9246 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_0:
9248 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9249 ; GFX900-NEXT: ;;#ASMSTART
9250 ; GFX900-NEXT: ; def s[8:11]
9251 ; GFX900-NEXT: ;;#ASMEND
9252 ; GFX900-NEXT: ;;#ASMSTART
9253 ; GFX900-NEXT: ; def s[4:7]
9254 ; GFX900-NEXT: ;;#ASMEND
9255 ; GFX900-NEXT: s_mov_b32 s8, s11
9256 ; GFX900-NEXT: s_mov_b32 s9, s6
9257 ; GFX900-NEXT: s_mov_b32 s10, s4
9258 ; GFX900-NEXT: ;;#ASMSTART
9259 ; GFX900-NEXT: ; use s[8:10]
9260 ; GFX900-NEXT: ;;#ASMEND
9261 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9263 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_0:
9265 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9266 ; GFX90A-NEXT: ;;#ASMSTART
9267 ; GFX90A-NEXT: ; def s[8:11]
9268 ; GFX90A-NEXT: ;;#ASMEND
9269 ; GFX90A-NEXT: ;;#ASMSTART
9270 ; GFX90A-NEXT: ; def s[4:7]
9271 ; GFX90A-NEXT: ;;#ASMEND
9272 ; GFX90A-NEXT: s_mov_b32 s8, s11
9273 ; GFX90A-NEXT: s_mov_b32 s9, s6
9274 ; GFX90A-NEXT: s_mov_b32 s10, s4
9275 ; GFX90A-NEXT: ;;#ASMSTART
9276 ; GFX90A-NEXT: ; use s[8:10]
9277 ; GFX90A-NEXT: ;;#ASMEND
9278 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9280 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_0:
9282 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9283 ; GFX940-NEXT: ;;#ASMSTART
9284 ; GFX940-NEXT: ; def s[0:3]
9285 ; GFX940-NEXT: ;;#ASMEND
9286 ; GFX940-NEXT: ;;#ASMSTART
9287 ; GFX940-NEXT: ; def s[4:7]
9288 ; GFX940-NEXT: ;;#ASMEND
9289 ; GFX940-NEXT: s_mov_b32 s8, s7
9290 ; GFX940-NEXT: s_mov_b32 s9, s2
9291 ; GFX940-NEXT: s_mov_b32 s10, s0
9292 ; GFX940-NEXT: ;;#ASMSTART
9293 ; GFX940-NEXT: ; use s[8:10]
9294 ; GFX940-NEXT: ;;#ASMEND
9295 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9296 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9297 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9298 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 0>
9299 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9303 define void @s_shuffle_v3p3_v4p3__7_3_0() {
9304 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_0:
9306 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9307 ; GFX900-NEXT: ;;#ASMSTART
9308 ; GFX900-NEXT: ; def s[8:11]
9309 ; GFX900-NEXT: ;;#ASMEND
9310 ; GFX900-NEXT: ;;#ASMSTART
9311 ; GFX900-NEXT: ; def s[4:7]
9312 ; GFX900-NEXT: ;;#ASMEND
9313 ; GFX900-NEXT: s_mov_b32 s8, s11
9314 ; GFX900-NEXT: s_mov_b32 s9, s7
9315 ; GFX900-NEXT: s_mov_b32 s10, s4
9316 ; GFX900-NEXT: ;;#ASMSTART
9317 ; GFX900-NEXT: ; use s[8:10]
9318 ; GFX900-NEXT: ;;#ASMEND
9319 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9321 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_0:
9323 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9324 ; GFX90A-NEXT: ;;#ASMSTART
9325 ; GFX90A-NEXT: ; def s[8:11]
9326 ; GFX90A-NEXT: ;;#ASMEND
9327 ; GFX90A-NEXT: ;;#ASMSTART
9328 ; GFX90A-NEXT: ; def s[4:7]
9329 ; GFX90A-NEXT: ;;#ASMEND
9330 ; GFX90A-NEXT: s_mov_b32 s8, s11
9331 ; GFX90A-NEXT: s_mov_b32 s9, s7
9332 ; GFX90A-NEXT: s_mov_b32 s10, s4
9333 ; GFX90A-NEXT: ;;#ASMSTART
9334 ; GFX90A-NEXT: ; use s[8:10]
9335 ; GFX90A-NEXT: ;;#ASMEND
9336 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9338 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_0:
9340 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9341 ; GFX940-NEXT: ;;#ASMSTART
9342 ; GFX940-NEXT: ; def s[0:3]
9343 ; GFX940-NEXT: ;;#ASMEND
9344 ; GFX940-NEXT: ;;#ASMSTART
9345 ; GFX940-NEXT: ; def s[4:7]
9346 ; GFX940-NEXT: ;;#ASMEND
9347 ; GFX940-NEXT: s_mov_b32 s8, s7
9348 ; GFX940-NEXT: s_mov_b32 s9, s3
9349 ; GFX940-NEXT: s_mov_b32 s10, s0
9350 ; GFX940-NEXT: ;;#ASMSTART
9351 ; GFX940-NEXT: ; use s[8:10]
9352 ; GFX940-NEXT: ;;#ASMEND
9353 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9354 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9355 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9356 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 0>
9357 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9361 define void @s_shuffle_v3p3_v4p3__7_4_0() {
9362 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_0:
9364 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9365 ; GFX900-NEXT: ;;#ASMSTART
9366 ; GFX900-NEXT: ; def s[4:7]
9367 ; GFX900-NEXT: ;;#ASMEND
9368 ; GFX900-NEXT: ;;#ASMSTART
9369 ; GFX900-NEXT: ; def s[12:15]
9370 ; GFX900-NEXT: ;;#ASMEND
9371 ; GFX900-NEXT: s_mov_b32 s8, s15
9372 ; GFX900-NEXT: s_mov_b32 s9, s12
9373 ; GFX900-NEXT: s_mov_b32 s10, s4
9374 ; GFX900-NEXT: ;;#ASMSTART
9375 ; GFX900-NEXT: ; use s[8:10]
9376 ; GFX900-NEXT: ;;#ASMEND
9377 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9379 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_0:
9381 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9382 ; GFX90A-NEXT: ;;#ASMSTART
9383 ; GFX90A-NEXT: ; def s[4:7]
9384 ; GFX90A-NEXT: ;;#ASMEND
9385 ; GFX90A-NEXT: ;;#ASMSTART
9386 ; GFX90A-NEXT: ; def s[12:15]
9387 ; GFX90A-NEXT: ;;#ASMEND
9388 ; GFX90A-NEXT: s_mov_b32 s8, s15
9389 ; GFX90A-NEXT: s_mov_b32 s9, s12
9390 ; GFX90A-NEXT: s_mov_b32 s10, s4
9391 ; GFX90A-NEXT: ;;#ASMSTART
9392 ; GFX90A-NEXT: ; use s[8:10]
9393 ; GFX90A-NEXT: ;;#ASMEND
9394 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9396 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_0:
9398 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9399 ; GFX940-NEXT: ;;#ASMSTART
9400 ; GFX940-NEXT: ; def s[0:3]
9401 ; GFX940-NEXT: ;;#ASMEND
9402 ; GFX940-NEXT: ;;#ASMSTART
9403 ; GFX940-NEXT: ; def s[4:7]
9404 ; GFX940-NEXT: ;;#ASMEND
9405 ; GFX940-NEXT: s_mov_b32 s8, s7
9406 ; GFX940-NEXT: s_mov_b32 s9, s4
9407 ; GFX940-NEXT: s_mov_b32 s10, s0
9408 ; GFX940-NEXT: ;;#ASMSTART
9409 ; GFX940-NEXT: ; use s[8:10]
9410 ; GFX940-NEXT: ;;#ASMEND
9411 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9412 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9413 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9414 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 0>
9415 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9419 define void @s_shuffle_v3p3_v4p3__7_5_0() {
9420 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_0:
9422 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9423 ; GFX900-NEXT: ;;#ASMSTART
9424 ; GFX900-NEXT: ; def s[8:11]
9425 ; GFX900-NEXT: ;;#ASMEND
9426 ; GFX900-NEXT: ;;#ASMSTART
9427 ; GFX900-NEXT: ; def s[4:7]
9428 ; GFX900-NEXT: ;;#ASMEND
9429 ; GFX900-NEXT: s_mov_b32 s8, s11
9430 ; GFX900-NEXT: s_mov_b32 s10, s4
9431 ; GFX900-NEXT: ;;#ASMSTART
9432 ; GFX900-NEXT: ; use s[8:10]
9433 ; GFX900-NEXT: ;;#ASMEND
9434 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9436 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_0:
9438 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9439 ; GFX90A-NEXT: ;;#ASMSTART
9440 ; GFX90A-NEXT: ; def s[8:11]
9441 ; GFX90A-NEXT: ;;#ASMEND
9442 ; GFX90A-NEXT: ;;#ASMSTART
9443 ; GFX90A-NEXT: ; def s[4:7]
9444 ; GFX90A-NEXT: ;;#ASMEND
9445 ; GFX90A-NEXT: s_mov_b32 s8, s11
9446 ; GFX90A-NEXT: s_mov_b32 s10, s4
9447 ; GFX90A-NEXT: ;;#ASMSTART
9448 ; GFX90A-NEXT: ; use s[8:10]
9449 ; GFX90A-NEXT: ;;#ASMEND
9450 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9452 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_5_0:
9454 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9455 ; GFX940-NEXT: ;;#ASMSTART
9456 ; GFX940-NEXT: ; def s[8:11]
9457 ; GFX940-NEXT: ;;#ASMEND
9458 ; GFX940-NEXT: ;;#ASMSTART
9459 ; GFX940-NEXT: ; def s[0:3]
9460 ; GFX940-NEXT: ;;#ASMEND
9461 ; GFX940-NEXT: s_mov_b32 s8, s11
9462 ; GFX940-NEXT: s_mov_b32 s10, s0
9463 ; GFX940-NEXT: ;;#ASMSTART
9464 ; GFX940-NEXT: ; use s[8:10]
9465 ; GFX940-NEXT: ;;#ASMEND
9466 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9467 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9468 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9469 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 0>
9470 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9474 define void @s_shuffle_v3p3_v4p3__7_6_0() {
9475 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_0:
9477 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9478 ; GFX900-NEXT: ;;#ASMSTART
9479 ; GFX900-NEXT: ; def s[8:11]
9480 ; GFX900-NEXT: ;;#ASMEND
9481 ; GFX900-NEXT: ;;#ASMSTART
9482 ; GFX900-NEXT: ; def s[4:7]
9483 ; GFX900-NEXT: ;;#ASMEND
9484 ; GFX900-NEXT: s_mov_b32 s8, s11
9485 ; GFX900-NEXT: s_mov_b32 s9, s10
9486 ; GFX900-NEXT: s_mov_b32 s10, s4
9487 ; GFX900-NEXT: ;;#ASMSTART
9488 ; GFX900-NEXT: ; use s[8:10]
9489 ; GFX900-NEXT: ;;#ASMEND
9490 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9492 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_0:
9494 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9495 ; GFX90A-NEXT: ;;#ASMSTART
9496 ; GFX90A-NEXT: ; def s[8:11]
9497 ; GFX90A-NEXT: ;;#ASMEND
9498 ; GFX90A-NEXT: ;;#ASMSTART
9499 ; GFX90A-NEXT: ; def s[4:7]
9500 ; GFX90A-NEXT: ;;#ASMEND
9501 ; GFX90A-NEXT: s_mov_b32 s8, s11
9502 ; GFX90A-NEXT: s_mov_b32 s9, s10
9503 ; GFX90A-NEXT: s_mov_b32 s10, s4
9504 ; GFX90A-NEXT: ;;#ASMSTART
9505 ; GFX90A-NEXT: ; use s[8:10]
9506 ; GFX90A-NEXT: ;;#ASMEND
9507 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9509 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_6_0:
9511 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9512 ; GFX940-NEXT: ;;#ASMSTART
9513 ; GFX940-NEXT: ; def s[0:3]
9514 ; GFX940-NEXT: ;;#ASMEND
9515 ; GFX940-NEXT: ;;#ASMSTART
9516 ; GFX940-NEXT: ; def s[4:7]
9517 ; GFX940-NEXT: ;;#ASMEND
9518 ; GFX940-NEXT: s_mov_b32 s8, s7
9519 ; GFX940-NEXT: s_mov_b32 s9, s6
9520 ; GFX940-NEXT: s_mov_b32 s10, s0
9521 ; GFX940-NEXT: ;;#ASMSTART
9522 ; GFX940-NEXT: ; use s[8:10]
9523 ; GFX940-NEXT: ;;#ASMEND
9524 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9525 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9526 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9527 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 0>
9528 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9532 define void @s_shuffle_v3p3_v4p3__u_1_1() {
9533 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_1_1:
9535 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9536 ; GFX9-NEXT: ;;#ASMSTART
9537 ; GFX9-NEXT: ; def s[8:11]
9538 ; GFX9-NEXT: ;;#ASMEND
9539 ; GFX9-NEXT: s_mov_b32 s10, s9
9540 ; GFX9-NEXT: ;;#ASMSTART
9541 ; GFX9-NEXT: ; use s[8:10]
9542 ; GFX9-NEXT: ;;#ASMEND
9543 ; GFX9-NEXT: s_setpc_b64 s[30:31]
9544 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9545 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 1, i32 1>
9546 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9550 define void @s_shuffle_v3p3_v4p3__0_1_1() {
9551 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__0_1_1:
9553 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9554 ; GFX9-NEXT: ;;#ASMSTART
9555 ; GFX9-NEXT: ; def s[8:11]
9556 ; GFX9-NEXT: ;;#ASMEND
9557 ; GFX9-NEXT: s_mov_b32 s10, s9
9558 ; GFX9-NEXT: ;;#ASMSTART
9559 ; GFX9-NEXT: ; use s[8:10]
9560 ; GFX9-NEXT: ;;#ASMEND
9561 ; GFX9-NEXT: s_setpc_b64 s[30:31]
9562 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9563 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 1, i32 1>
9564 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9568 define void @s_shuffle_v3p3_v4p3__1_1_1() {
9569 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__1_1_1:
9571 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9572 ; GFX9-NEXT: ;;#ASMSTART
9573 ; GFX9-NEXT: ; def s[8:11]
9574 ; GFX9-NEXT: ;;#ASMEND
9575 ; GFX9-NEXT: s_mov_b32 s8, s9
9576 ; GFX9-NEXT: s_mov_b32 s10, s9
9577 ; GFX9-NEXT: ;;#ASMSTART
9578 ; GFX9-NEXT: ; use s[8:10]
9579 ; GFX9-NEXT: ;;#ASMEND
9580 ; GFX9-NEXT: s_setpc_b64 s[30:31]
9581 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9582 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 1, i32 1>
9583 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9587 define void @s_shuffle_v3p3_v4p3__2_1_1() {
9588 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__2_1_1:
9590 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9591 ; GFX9-NEXT: ;;#ASMSTART
9592 ; GFX9-NEXT: ; def s[8:11]
9593 ; GFX9-NEXT: ;;#ASMEND
9594 ; GFX9-NEXT: s_mov_b32 s8, s10
9595 ; GFX9-NEXT: s_mov_b32 s10, s9
9596 ; GFX9-NEXT: ;;#ASMSTART
9597 ; GFX9-NEXT: ; use s[8:10]
9598 ; GFX9-NEXT: ;;#ASMEND
9599 ; GFX9-NEXT: s_setpc_b64 s[30:31]
9600 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9601 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 1, i32 1>
9602 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9606 define void @s_shuffle_v3p3_v4p3__3_1_1() {
9607 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__3_1_1:
9609 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9610 ; GFX9-NEXT: ;;#ASMSTART
9611 ; GFX9-NEXT: ; def s[8:11]
9612 ; GFX9-NEXT: ;;#ASMEND
9613 ; GFX9-NEXT: s_mov_b32 s8, s11
9614 ; GFX9-NEXT: s_mov_b32 s10, s9
9615 ; GFX9-NEXT: ;;#ASMSTART
9616 ; GFX9-NEXT: ; use s[8:10]
9617 ; GFX9-NEXT: ;;#ASMEND
9618 ; GFX9-NEXT: s_setpc_b64 s[30:31]
9619 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9620 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 1, i32 1>
9621 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9625 define void @s_shuffle_v3p3_v4p3__4_1_1() {
9626 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_1_1:
9628 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9629 ; GFX9-NEXT: ;;#ASMSTART
9630 ; GFX9-NEXT: ; def s[8:11]
9631 ; GFX9-NEXT: ;;#ASMEND
9632 ; GFX9-NEXT: s_mov_b32 s10, s9
9633 ; GFX9-NEXT: ;;#ASMSTART
9634 ; GFX9-NEXT: ; use s[8:10]
9635 ; GFX9-NEXT: ;;#ASMEND
9636 ; GFX9-NEXT: s_setpc_b64 s[30:31]
9637 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9638 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 1, i32 1>
9639 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9643 define void @s_shuffle_v3p3_v4p3__5_1_1() {
9644 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_1_1:
9646 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9647 ; GFX900-NEXT: ;;#ASMSTART
9648 ; GFX900-NEXT: ; def s[8:11]
9649 ; GFX900-NEXT: ;;#ASMEND
9650 ; GFX900-NEXT: ;;#ASMSTART
9651 ; GFX900-NEXT: ; def s[4:7]
9652 ; GFX900-NEXT: ;;#ASMEND
9653 ; GFX900-NEXT: s_mov_b32 s8, s5
9654 ; GFX900-NEXT: s_mov_b32 s10, s9
9655 ; GFX900-NEXT: ;;#ASMSTART
9656 ; GFX900-NEXT: ; use s[8:10]
9657 ; GFX900-NEXT: ;;#ASMEND
9658 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9660 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_1_1:
9662 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9663 ; GFX90A-NEXT: ;;#ASMSTART
9664 ; GFX90A-NEXT: ; def s[8:11]
9665 ; GFX90A-NEXT: ;;#ASMEND
9666 ; GFX90A-NEXT: ;;#ASMSTART
9667 ; GFX90A-NEXT: ; def s[4:7]
9668 ; GFX90A-NEXT: ;;#ASMEND
9669 ; GFX90A-NEXT: s_mov_b32 s8, s5
9670 ; GFX90A-NEXT: s_mov_b32 s10, s9
9671 ; GFX90A-NEXT: ;;#ASMSTART
9672 ; GFX90A-NEXT: ; use s[8:10]
9673 ; GFX90A-NEXT: ;;#ASMEND
9674 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9676 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__5_1_1:
9678 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9679 ; GFX940-NEXT: ;;#ASMSTART
9680 ; GFX940-NEXT: ; def s[8:11]
9681 ; GFX940-NEXT: ;;#ASMEND
9682 ; GFX940-NEXT: ;;#ASMSTART
9683 ; GFX940-NEXT: ; def s[0:3]
9684 ; GFX940-NEXT: ;;#ASMEND
9685 ; GFX940-NEXT: s_mov_b32 s8, s1
9686 ; GFX940-NEXT: s_mov_b32 s10, s9
9687 ; GFX940-NEXT: ;;#ASMSTART
9688 ; GFX940-NEXT: ; use s[8:10]
9689 ; GFX940-NEXT: ;;#ASMEND
9690 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9691 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9692 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9693 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 1, i32 1>
9694 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9698 define void @s_shuffle_v3p3_v4p3__6_1_1() {
9699 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_1_1:
9701 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9702 ; GFX900-NEXT: ;;#ASMSTART
9703 ; GFX900-NEXT: ; def s[8:11]
9704 ; GFX900-NEXT: ;;#ASMEND
9705 ; GFX900-NEXT: ;;#ASMSTART
9706 ; GFX900-NEXT: ; def s[4:7]
9707 ; GFX900-NEXT: ;;#ASMEND
9708 ; GFX900-NEXT: s_mov_b32 s8, s6
9709 ; GFX900-NEXT: s_mov_b32 s10, s9
9710 ; GFX900-NEXT: ;;#ASMSTART
9711 ; GFX900-NEXT: ; use s[8:10]
9712 ; GFX900-NEXT: ;;#ASMEND
9713 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9715 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_1_1:
9717 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9718 ; GFX90A-NEXT: ;;#ASMSTART
9719 ; GFX90A-NEXT: ; def s[8:11]
9720 ; GFX90A-NEXT: ;;#ASMEND
9721 ; GFX90A-NEXT: ;;#ASMSTART
9722 ; GFX90A-NEXT: ; def s[4:7]
9723 ; GFX90A-NEXT: ;;#ASMEND
9724 ; GFX90A-NEXT: s_mov_b32 s8, s6
9725 ; GFX90A-NEXT: s_mov_b32 s10, s9
9726 ; GFX90A-NEXT: ;;#ASMSTART
9727 ; GFX90A-NEXT: ; use s[8:10]
9728 ; GFX90A-NEXT: ;;#ASMEND
9729 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9731 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__6_1_1:
9733 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9734 ; GFX940-NEXT: ;;#ASMSTART
9735 ; GFX940-NEXT: ; def s[8:11]
9736 ; GFX940-NEXT: ;;#ASMEND
9737 ; GFX940-NEXT: ;;#ASMSTART
9738 ; GFX940-NEXT: ; def s[0:3]
9739 ; GFX940-NEXT: ;;#ASMEND
9740 ; GFX940-NEXT: s_mov_b32 s8, s2
9741 ; GFX940-NEXT: s_mov_b32 s10, s9
9742 ; GFX940-NEXT: ;;#ASMSTART
9743 ; GFX940-NEXT: ; use s[8:10]
9744 ; GFX940-NEXT: ;;#ASMEND
9745 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9746 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9747 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9748 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 1, i32 1>
9749 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9753 define void @s_shuffle_v3p3_v4p3__7_1_1() {
9754 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_1:
9756 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9757 ; GFX900-NEXT: ;;#ASMSTART
9758 ; GFX900-NEXT: ; def s[8:11]
9759 ; GFX900-NEXT: ;;#ASMEND
9760 ; GFX900-NEXT: ;;#ASMSTART
9761 ; GFX900-NEXT: ; def s[4:7]
9762 ; GFX900-NEXT: ;;#ASMEND
9763 ; GFX900-NEXT: s_mov_b32 s8, s7
9764 ; GFX900-NEXT: s_mov_b32 s10, s9
9765 ; GFX900-NEXT: ;;#ASMSTART
9766 ; GFX900-NEXT: ; use s[8:10]
9767 ; GFX900-NEXT: ;;#ASMEND
9768 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9770 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_1:
9772 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9773 ; GFX90A-NEXT: ;;#ASMSTART
9774 ; GFX90A-NEXT: ; def s[8:11]
9775 ; GFX90A-NEXT: ;;#ASMEND
9776 ; GFX90A-NEXT: ;;#ASMSTART
9777 ; GFX90A-NEXT: ; def s[4:7]
9778 ; GFX90A-NEXT: ;;#ASMEND
9779 ; GFX90A-NEXT: s_mov_b32 s8, s7
9780 ; GFX90A-NEXT: s_mov_b32 s10, s9
9781 ; GFX90A-NEXT: ;;#ASMSTART
9782 ; GFX90A-NEXT: ; use s[8:10]
9783 ; GFX90A-NEXT: ;;#ASMEND
9784 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9786 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_1:
9788 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9789 ; GFX940-NEXT: ;;#ASMSTART
9790 ; GFX940-NEXT: ; def s[8:11]
9791 ; GFX940-NEXT: ;;#ASMEND
9792 ; GFX940-NEXT: ;;#ASMSTART
9793 ; GFX940-NEXT: ; def s[0:3]
9794 ; GFX940-NEXT: ;;#ASMEND
9795 ; GFX940-NEXT: s_mov_b32 s8, s3
9796 ; GFX940-NEXT: s_mov_b32 s10, s9
9797 ; GFX940-NEXT: ;;#ASMSTART
9798 ; GFX940-NEXT: ; use s[8:10]
9799 ; GFX940-NEXT: ;;#ASMEND
9800 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9801 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9802 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9803 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 1>
9804 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9808 define void @s_shuffle_v3p3_v4p3__7_u_1() {
9809 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_1:
9811 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9812 ; GFX900-NEXT: ;;#ASMSTART
9813 ; GFX900-NEXT: ; def s[8:11]
9814 ; GFX900-NEXT: ;;#ASMEND
9815 ; GFX900-NEXT: ;;#ASMSTART
9816 ; GFX900-NEXT: ; def s[4:7]
9817 ; GFX900-NEXT: ;;#ASMEND
9818 ; GFX900-NEXT: s_mov_b32 s8, s11
9819 ; GFX900-NEXT: s_mov_b32 s10, s5
9820 ; GFX900-NEXT: ;;#ASMSTART
9821 ; GFX900-NEXT: ; use s[8:10]
9822 ; GFX900-NEXT: ;;#ASMEND
9823 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9825 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_1:
9827 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9828 ; GFX90A-NEXT: ;;#ASMSTART
9829 ; GFX90A-NEXT: ; def s[8:11]
9830 ; GFX90A-NEXT: ;;#ASMEND
9831 ; GFX90A-NEXT: ;;#ASMSTART
9832 ; GFX90A-NEXT: ; def s[4:7]
9833 ; GFX90A-NEXT: ;;#ASMEND
9834 ; GFX90A-NEXT: s_mov_b32 s8, s11
9835 ; GFX90A-NEXT: s_mov_b32 s10, s5
9836 ; GFX90A-NEXT: ;;#ASMSTART
9837 ; GFX90A-NEXT: ; use s[8:10]
9838 ; GFX90A-NEXT: ;;#ASMEND
9839 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9841 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_u_1:
9843 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9844 ; GFX940-NEXT: ;;#ASMSTART
9845 ; GFX940-NEXT: ; def s[0:3]
9846 ; GFX940-NEXT: ;;#ASMEND
9847 ; GFX940-NEXT: ;;#ASMSTART
9848 ; GFX940-NEXT: ; def s[4:7]
9849 ; GFX940-NEXT: ;;#ASMEND
9850 ; GFX940-NEXT: s_mov_b32 s8, s7
9851 ; GFX940-NEXT: s_mov_b32 s10, s1
9852 ; GFX940-NEXT: ;;#ASMSTART
9853 ; GFX940-NEXT: ; use s[8:10]
9854 ; GFX940-NEXT: ;;#ASMEND
9855 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9856 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9857 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9858 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 1>
9859 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9863 define void @s_shuffle_v3p3_v4p3__7_0_1() {
9864 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_1:
9866 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9867 ; GFX900-NEXT: ;;#ASMSTART
9868 ; GFX900-NEXT: ; def s[8:11]
9869 ; GFX900-NEXT: ;;#ASMEND
9870 ; GFX900-NEXT: ;;#ASMSTART
9871 ; GFX900-NEXT: ; def s[4:7]
9872 ; GFX900-NEXT: ;;#ASMEND
9873 ; GFX900-NEXT: s_mov_b32 s8, s11
9874 ; GFX900-NEXT: s_mov_b32 s9, s4
9875 ; GFX900-NEXT: s_mov_b32 s10, s5
9876 ; GFX900-NEXT: ;;#ASMSTART
9877 ; GFX900-NEXT: ; use s[8:10]
9878 ; GFX900-NEXT: ;;#ASMEND
9879 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9881 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_1:
9883 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9884 ; GFX90A-NEXT: ;;#ASMSTART
9885 ; GFX90A-NEXT: ; def s[8:11]
9886 ; GFX90A-NEXT: ;;#ASMEND
9887 ; GFX90A-NEXT: ;;#ASMSTART
9888 ; GFX90A-NEXT: ; def s[4:7]
9889 ; GFX90A-NEXT: ;;#ASMEND
9890 ; GFX90A-NEXT: s_mov_b32 s8, s11
9891 ; GFX90A-NEXT: s_mov_b32 s9, s4
9892 ; GFX90A-NEXT: s_mov_b32 s10, s5
9893 ; GFX90A-NEXT: ;;#ASMSTART
9894 ; GFX90A-NEXT: ; use s[8:10]
9895 ; GFX90A-NEXT: ;;#ASMEND
9896 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9898 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_1:
9900 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9901 ; GFX940-NEXT: ;;#ASMSTART
9902 ; GFX940-NEXT: ; def s[0:3]
9903 ; GFX940-NEXT: ;;#ASMEND
9904 ; GFX940-NEXT: ;;#ASMSTART
9905 ; GFX940-NEXT: ; def s[4:7]
9906 ; GFX940-NEXT: ;;#ASMEND
9907 ; GFX940-NEXT: s_mov_b32 s8, s7
9908 ; GFX940-NEXT: s_mov_b32 s9, s0
9909 ; GFX940-NEXT: s_mov_b32 s10, s1
9910 ; GFX940-NEXT: ;;#ASMSTART
9911 ; GFX940-NEXT: ; use s[8:10]
9912 ; GFX940-NEXT: ;;#ASMEND
9913 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9914 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9915 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9916 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 1>
9917 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9921 define void @s_shuffle_v3p3_v4p3__7_2_1() {
9922 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_1:
9924 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9925 ; GFX900-NEXT: ;;#ASMSTART
9926 ; GFX900-NEXT: ; def s[8:11]
9927 ; GFX900-NEXT: ;;#ASMEND
9928 ; GFX900-NEXT: ;;#ASMSTART
9929 ; GFX900-NEXT: ; def s[4:7]
9930 ; GFX900-NEXT: ;;#ASMEND
9931 ; GFX900-NEXT: s_mov_b32 s8, s11
9932 ; GFX900-NEXT: s_mov_b32 s9, s6
9933 ; GFX900-NEXT: s_mov_b32 s10, s5
9934 ; GFX900-NEXT: ;;#ASMSTART
9935 ; GFX900-NEXT: ; use s[8:10]
9936 ; GFX900-NEXT: ;;#ASMEND
9937 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9939 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_1:
9941 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9942 ; GFX90A-NEXT: ;;#ASMSTART
9943 ; GFX90A-NEXT: ; def s[8:11]
9944 ; GFX90A-NEXT: ;;#ASMEND
9945 ; GFX90A-NEXT: ;;#ASMSTART
9946 ; GFX90A-NEXT: ; def s[4:7]
9947 ; GFX90A-NEXT: ;;#ASMEND
9948 ; GFX90A-NEXT: s_mov_b32 s8, s11
9949 ; GFX90A-NEXT: s_mov_b32 s9, s6
9950 ; GFX90A-NEXT: s_mov_b32 s10, s5
9951 ; GFX90A-NEXT: ;;#ASMSTART
9952 ; GFX90A-NEXT: ; use s[8:10]
9953 ; GFX90A-NEXT: ;;#ASMEND
9954 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
9956 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_1:
9958 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9959 ; GFX940-NEXT: ;;#ASMSTART
9960 ; GFX940-NEXT: ; def s[0:3]
9961 ; GFX940-NEXT: ;;#ASMEND
9962 ; GFX940-NEXT: ;;#ASMSTART
9963 ; GFX940-NEXT: ; def s[4:7]
9964 ; GFX940-NEXT: ;;#ASMEND
9965 ; GFX940-NEXT: s_mov_b32 s8, s7
9966 ; GFX940-NEXT: s_mov_b32 s9, s2
9967 ; GFX940-NEXT: s_mov_b32 s10, s1
9968 ; GFX940-NEXT: ;;#ASMSTART
9969 ; GFX940-NEXT: ; use s[8:10]
9970 ; GFX940-NEXT: ;;#ASMEND
9971 ; GFX940-NEXT: s_setpc_b64 s[30:31]
9972 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9973 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
9974 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 1>
9975 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
9979 define void @s_shuffle_v3p3_v4p3__7_3_1() {
9980 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_1:
9982 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9983 ; GFX900-NEXT: ;;#ASMSTART
9984 ; GFX900-NEXT: ; def s[8:11]
9985 ; GFX900-NEXT: ;;#ASMEND
9986 ; GFX900-NEXT: ;;#ASMSTART
9987 ; GFX900-NEXT: ; def s[4:7]
9988 ; GFX900-NEXT: ;;#ASMEND
9989 ; GFX900-NEXT: s_mov_b32 s8, s11
9990 ; GFX900-NEXT: s_mov_b32 s9, s7
9991 ; GFX900-NEXT: s_mov_b32 s10, s5
9992 ; GFX900-NEXT: ;;#ASMSTART
9993 ; GFX900-NEXT: ; use s[8:10]
9994 ; GFX900-NEXT: ;;#ASMEND
9995 ; GFX900-NEXT: s_setpc_b64 s[30:31]
9997 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_1:
9999 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10000 ; GFX90A-NEXT: ;;#ASMSTART
10001 ; GFX90A-NEXT: ; def s[8:11]
10002 ; GFX90A-NEXT: ;;#ASMEND
10003 ; GFX90A-NEXT: ;;#ASMSTART
10004 ; GFX90A-NEXT: ; def s[4:7]
10005 ; GFX90A-NEXT: ;;#ASMEND
10006 ; GFX90A-NEXT: s_mov_b32 s8, s11
10007 ; GFX90A-NEXT: s_mov_b32 s9, s7
10008 ; GFX90A-NEXT: s_mov_b32 s10, s5
10009 ; GFX90A-NEXT: ;;#ASMSTART
10010 ; GFX90A-NEXT: ; use s[8:10]
10011 ; GFX90A-NEXT: ;;#ASMEND
10012 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10014 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_1:
10016 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10017 ; GFX940-NEXT: ;;#ASMSTART
10018 ; GFX940-NEXT: ; def s[0:3]
10019 ; GFX940-NEXT: ;;#ASMEND
10020 ; GFX940-NEXT: ;;#ASMSTART
10021 ; GFX940-NEXT: ; def s[4:7]
10022 ; GFX940-NEXT: ;;#ASMEND
10023 ; GFX940-NEXT: s_mov_b32 s8, s7
10024 ; GFX940-NEXT: s_mov_b32 s9, s3
10025 ; GFX940-NEXT: s_mov_b32 s10, s1
10026 ; GFX940-NEXT: ;;#ASMSTART
10027 ; GFX940-NEXT: ; use s[8:10]
10028 ; GFX940-NEXT: ;;#ASMEND
10029 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10030 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10031 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10032 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 1>
10033 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10037 define void @s_shuffle_v3p3_v4p3__7_4_1() {
10038 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_1:
10040 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10041 ; GFX900-NEXT: ;;#ASMSTART
10042 ; GFX900-NEXT: ; def s[4:7]
10043 ; GFX900-NEXT: ;;#ASMEND
10044 ; GFX900-NEXT: ;;#ASMSTART
10045 ; GFX900-NEXT: ; def s[12:15]
10046 ; GFX900-NEXT: ;;#ASMEND
10047 ; GFX900-NEXT: s_mov_b32 s8, s15
10048 ; GFX900-NEXT: s_mov_b32 s9, s12
10049 ; GFX900-NEXT: s_mov_b32 s10, s5
10050 ; GFX900-NEXT: ;;#ASMSTART
10051 ; GFX900-NEXT: ; use s[8:10]
10052 ; GFX900-NEXT: ;;#ASMEND
10053 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10055 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_1:
10057 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10058 ; GFX90A-NEXT: ;;#ASMSTART
10059 ; GFX90A-NEXT: ; def s[4:7]
10060 ; GFX90A-NEXT: ;;#ASMEND
10061 ; GFX90A-NEXT: ;;#ASMSTART
10062 ; GFX90A-NEXT: ; def s[12:15]
10063 ; GFX90A-NEXT: ;;#ASMEND
10064 ; GFX90A-NEXT: s_mov_b32 s8, s15
10065 ; GFX90A-NEXT: s_mov_b32 s9, s12
10066 ; GFX90A-NEXT: s_mov_b32 s10, s5
10067 ; GFX90A-NEXT: ;;#ASMSTART
10068 ; GFX90A-NEXT: ; use s[8:10]
10069 ; GFX90A-NEXT: ;;#ASMEND
10070 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10072 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_1:
10074 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10075 ; GFX940-NEXT: ;;#ASMSTART
10076 ; GFX940-NEXT: ; def s[0:3]
10077 ; GFX940-NEXT: ;;#ASMEND
10078 ; GFX940-NEXT: ;;#ASMSTART
10079 ; GFX940-NEXT: ; def s[4:7]
10080 ; GFX940-NEXT: ;;#ASMEND
10081 ; GFX940-NEXT: s_mov_b32 s8, s7
10082 ; GFX940-NEXT: s_mov_b32 s9, s4
10083 ; GFX940-NEXT: s_mov_b32 s10, s1
10084 ; GFX940-NEXT: ;;#ASMSTART
10085 ; GFX940-NEXT: ; use s[8:10]
10086 ; GFX940-NEXT: ;;#ASMEND
10087 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10088 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10089 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10090 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 1>
10091 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10095 define void @s_shuffle_v3p3_v4p3__7_5_1() {
10096 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_1:
10098 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10099 ; GFX900-NEXT: ;;#ASMSTART
10100 ; GFX900-NEXT: ; def s[8:11]
10101 ; GFX900-NEXT: ;;#ASMEND
10102 ; GFX900-NEXT: ;;#ASMSTART
10103 ; GFX900-NEXT: ; def s[4:7]
10104 ; GFX900-NEXT: ;;#ASMEND
10105 ; GFX900-NEXT: s_mov_b32 s8, s11
10106 ; GFX900-NEXT: s_mov_b32 s10, s5
10107 ; GFX900-NEXT: ;;#ASMSTART
10108 ; GFX900-NEXT: ; use s[8:10]
10109 ; GFX900-NEXT: ;;#ASMEND
10110 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10112 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_1:
10114 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10115 ; GFX90A-NEXT: ;;#ASMSTART
10116 ; GFX90A-NEXT: ; def s[8:11]
10117 ; GFX90A-NEXT: ;;#ASMEND
10118 ; GFX90A-NEXT: ;;#ASMSTART
10119 ; GFX90A-NEXT: ; def s[4:7]
10120 ; GFX90A-NEXT: ;;#ASMEND
10121 ; GFX90A-NEXT: s_mov_b32 s8, s11
10122 ; GFX90A-NEXT: s_mov_b32 s10, s5
10123 ; GFX90A-NEXT: ;;#ASMSTART
10124 ; GFX90A-NEXT: ; use s[8:10]
10125 ; GFX90A-NEXT: ;;#ASMEND
10126 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10128 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_5_1:
10130 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10131 ; GFX940-NEXT: ;;#ASMSTART
10132 ; GFX940-NEXT: ; def s[8:11]
10133 ; GFX940-NEXT: ;;#ASMEND
10134 ; GFX940-NEXT: ;;#ASMSTART
10135 ; GFX940-NEXT: ; def s[0:3]
10136 ; GFX940-NEXT: ;;#ASMEND
10137 ; GFX940-NEXT: s_mov_b32 s8, s11
10138 ; GFX940-NEXT: s_mov_b32 s10, s1
10139 ; GFX940-NEXT: ;;#ASMSTART
10140 ; GFX940-NEXT: ; use s[8:10]
10141 ; GFX940-NEXT: ;;#ASMEND
10142 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10143 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10144 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10145 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 1>
10146 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10150 define void @s_shuffle_v3p3_v4p3__7_6_1() {
10151 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_1:
10153 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10154 ; GFX900-NEXT: ;;#ASMSTART
10155 ; GFX900-NEXT: ; def s[8:11]
10156 ; GFX900-NEXT: ;;#ASMEND
10157 ; GFX900-NEXT: ;;#ASMSTART
10158 ; GFX900-NEXT: ; def s[4:7]
10159 ; GFX900-NEXT: ;;#ASMEND
10160 ; GFX900-NEXT: s_mov_b32 s8, s11
10161 ; GFX900-NEXT: s_mov_b32 s9, s10
10162 ; GFX900-NEXT: s_mov_b32 s10, s5
10163 ; GFX900-NEXT: ;;#ASMSTART
10164 ; GFX900-NEXT: ; use s[8:10]
10165 ; GFX900-NEXT: ;;#ASMEND
10166 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10168 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_1:
10170 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10171 ; GFX90A-NEXT: ;;#ASMSTART
10172 ; GFX90A-NEXT: ; def s[8:11]
10173 ; GFX90A-NEXT: ;;#ASMEND
10174 ; GFX90A-NEXT: ;;#ASMSTART
10175 ; GFX90A-NEXT: ; def s[4:7]
10176 ; GFX90A-NEXT: ;;#ASMEND
10177 ; GFX90A-NEXT: s_mov_b32 s8, s11
10178 ; GFX90A-NEXT: s_mov_b32 s9, s10
10179 ; GFX90A-NEXT: s_mov_b32 s10, s5
10180 ; GFX90A-NEXT: ;;#ASMSTART
10181 ; GFX90A-NEXT: ; use s[8:10]
10182 ; GFX90A-NEXT: ;;#ASMEND
10183 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10185 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_6_1:
10187 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10188 ; GFX940-NEXT: ;;#ASMSTART
10189 ; GFX940-NEXT: ; def s[0:3]
10190 ; GFX940-NEXT: ;;#ASMEND
10191 ; GFX940-NEXT: ;;#ASMSTART
10192 ; GFX940-NEXT: ; def s[4:7]
10193 ; GFX940-NEXT: ;;#ASMEND
10194 ; GFX940-NEXT: s_mov_b32 s8, s7
10195 ; GFX940-NEXT: s_mov_b32 s9, s6
10196 ; GFX940-NEXT: s_mov_b32 s10, s1
10197 ; GFX940-NEXT: ;;#ASMSTART
10198 ; GFX940-NEXT: ; use s[8:10]
10199 ; GFX940-NEXT: ;;#ASMEND
10200 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10201 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10202 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10203 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 1>
10204 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10208 define void @s_shuffle_v3p3_v4p3__u_2_2() {
10209 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_2_2:
10211 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10212 ; GFX9-NEXT: ;;#ASMSTART
10213 ; GFX9-NEXT: ; def s[8:11]
10214 ; GFX9-NEXT: ;;#ASMEND
10215 ; GFX9-NEXT: s_mov_b32 s9, s10
10216 ; GFX9-NEXT: ;;#ASMSTART
10217 ; GFX9-NEXT: ; use s[8:10]
10218 ; GFX9-NEXT: ;;#ASMEND
10219 ; GFX9-NEXT: s_setpc_b64 s[30:31]
10220 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10221 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 2, i32 2>
10222 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10226 define void @s_shuffle_v3p3_v4p3__0_2_2() {
10227 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__0_2_2:
10229 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10230 ; GFX9-NEXT: ;;#ASMSTART
10231 ; GFX9-NEXT: ; def s[8:11]
10232 ; GFX9-NEXT: ;;#ASMEND
10233 ; GFX9-NEXT: s_mov_b32 s9, s10
10234 ; GFX9-NEXT: ;;#ASMSTART
10235 ; GFX9-NEXT: ; use s[8:10]
10236 ; GFX9-NEXT: ;;#ASMEND
10237 ; GFX9-NEXT: s_setpc_b64 s[30:31]
10238 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10239 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 2, i32 2>
10240 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10244 define void @s_shuffle_v3p3_v4p3__1_2_2() {
10245 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__1_2_2:
10247 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10248 ; GFX9-NEXT: ;;#ASMSTART
10249 ; GFX9-NEXT: ; def s[8:11]
10250 ; GFX9-NEXT: ;;#ASMEND
10251 ; GFX9-NEXT: s_mov_b32 s8, s9
10252 ; GFX9-NEXT: s_mov_b32 s9, s10
10253 ; GFX9-NEXT: ;;#ASMSTART
10254 ; GFX9-NEXT: ; use s[8:10]
10255 ; GFX9-NEXT: ;;#ASMEND
10256 ; GFX9-NEXT: s_setpc_b64 s[30:31]
10257 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10258 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 2, i32 2>
10259 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10263 define void @s_shuffle_v3p3_v4p3__2_2_2() {
10264 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__2_2_2:
10266 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10267 ; GFX9-NEXT: ;;#ASMSTART
10268 ; GFX9-NEXT: ; def s[8:11]
10269 ; GFX9-NEXT: ;;#ASMEND
10270 ; GFX9-NEXT: s_mov_b32 s8, s10
10271 ; GFX9-NEXT: s_mov_b32 s9, s10
10272 ; GFX9-NEXT: ;;#ASMSTART
10273 ; GFX9-NEXT: ; use s[8:10]
10274 ; GFX9-NEXT: ;;#ASMEND
10275 ; GFX9-NEXT: s_setpc_b64 s[30:31]
10276 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10277 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 2, i32 2>
10278 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10282 define void @s_shuffle_v3p3_v4p3__3_2_2() {
10283 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__3_2_2:
10285 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10286 ; GFX9-NEXT: ;;#ASMSTART
10287 ; GFX9-NEXT: ; def s[8:11]
10288 ; GFX9-NEXT: ;;#ASMEND
10289 ; GFX9-NEXT: s_mov_b32 s8, s11
10290 ; GFX9-NEXT: s_mov_b32 s9, s10
10291 ; GFX9-NEXT: ;;#ASMSTART
10292 ; GFX9-NEXT: ; use s[8:10]
10293 ; GFX9-NEXT: ;;#ASMEND
10294 ; GFX9-NEXT: s_setpc_b64 s[30:31]
10295 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10296 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 2, i32 2>
10297 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10301 define void @s_shuffle_v3p3_v4p3__4_2_2() {
10302 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_2_2:
10304 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10305 ; GFX9-NEXT: ;;#ASMSTART
10306 ; GFX9-NEXT: ; def s[8:11]
10307 ; GFX9-NEXT: ;;#ASMEND
10308 ; GFX9-NEXT: s_mov_b32 s9, s10
10309 ; GFX9-NEXT: ;;#ASMSTART
10310 ; GFX9-NEXT: ; use s[8:10]
10311 ; GFX9-NEXT: ;;#ASMEND
10312 ; GFX9-NEXT: s_setpc_b64 s[30:31]
10313 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10314 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 2, i32 2>
10315 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10319 define void @s_shuffle_v3p3_v4p3__5_2_2() {
10320 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_2_2:
10322 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10323 ; GFX900-NEXT: ;;#ASMSTART
10324 ; GFX900-NEXT: ; def s[8:11]
10325 ; GFX900-NEXT: ;;#ASMEND
10326 ; GFX900-NEXT: ;;#ASMSTART
10327 ; GFX900-NEXT: ; def s[4:7]
10328 ; GFX900-NEXT: ;;#ASMEND
10329 ; GFX900-NEXT: s_mov_b32 s8, s5
10330 ; GFX900-NEXT: s_mov_b32 s9, s10
10331 ; GFX900-NEXT: ;;#ASMSTART
10332 ; GFX900-NEXT: ; use s[8:10]
10333 ; GFX900-NEXT: ;;#ASMEND
10334 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10336 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_2_2:
10338 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10339 ; GFX90A-NEXT: ;;#ASMSTART
10340 ; GFX90A-NEXT: ; def s[8:11]
10341 ; GFX90A-NEXT: ;;#ASMEND
10342 ; GFX90A-NEXT: ;;#ASMSTART
10343 ; GFX90A-NEXT: ; def s[4:7]
10344 ; GFX90A-NEXT: ;;#ASMEND
10345 ; GFX90A-NEXT: s_mov_b32 s8, s5
10346 ; GFX90A-NEXT: s_mov_b32 s9, s10
10347 ; GFX90A-NEXT: ;;#ASMSTART
10348 ; GFX90A-NEXT: ; use s[8:10]
10349 ; GFX90A-NEXT: ;;#ASMEND
10350 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10352 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__5_2_2:
10354 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10355 ; GFX940-NEXT: ;;#ASMSTART
10356 ; GFX940-NEXT: ; def s[8:11]
10357 ; GFX940-NEXT: ;;#ASMEND
10358 ; GFX940-NEXT: ;;#ASMSTART
10359 ; GFX940-NEXT: ; def s[0:3]
10360 ; GFX940-NEXT: ;;#ASMEND
10361 ; GFX940-NEXT: s_mov_b32 s8, s1
10362 ; GFX940-NEXT: s_mov_b32 s9, s10
10363 ; GFX940-NEXT: ;;#ASMSTART
10364 ; GFX940-NEXT: ; use s[8:10]
10365 ; GFX940-NEXT: ;;#ASMEND
10366 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10367 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10368 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10369 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 2, i32 2>
10370 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10374 define void @s_shuffle_v3p3_v4p3__6_2_2() {
10375 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_2_2:
10377 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10378 ; GFX900-NEXT: ;;#ASMSTART
10379 ; GFX900-NEXT: ; def s[8:11]
10380 ; GFX900-NEXT: ;;#ASMEND
10381 ; GFX900-NEXT: ;;#ASMSTART
10382 ; GFX900-NEXT: ; def s[4:7]
10383 ; GFX900-NEXT: ;;#ASMEND
10384 ; GFX900-NEXT: s_mov_b32 s8, s6
10385 ; GFX900-NEXT: s_mov_b32 s9, s10
10386 ; GFX900-NEXT: ;;#ASMSTART
10387 ; GFX900-NEXT: ; use s[8:10]
10388 ; GFX900-NEXT: ;;#ASMEND
10389 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10391 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_2_2:
10393 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10394 ; GFX90A-NEXT: ;;#ASMSTART
10395 ; GFX90A-NEXT: ; def s[8:11]
10396 ; GFX90A-NEXT: ;;#ASMEND
10397 ; GFX90A-NEXT: ;;#ASMSTART
10398 ; GFX90A-NEXT: ; def s[4:7]
10399 ; GFX90A-NEXT: ;;#ASMEND
10400 ; GFX90A-NEXT: s_mov_b32 s8, s6
10401 ; GFX90A-NEXT: s_mov_b32 s9, s10
10402 ; GFX90A-NEXT: ;;#ASMSTART
10403 ; GFX90A-NEXT: ; use s[8:10]
10404 ; GFX90A-NEXT: ;;#ASMEND
10405 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10407 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__6_2_2:
10409 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10410 ; GFX940-NEXT: ;;#ASMSTART
10411 ; GFX940-NEXT: ; def s[8:11]
10412 ; GFX940-NEXT: ;;#ASMEND
10413 ; GFX940-NEXT: ;;#ASMSTART
10414 ; GFX940-NEXT: ; def s[0:3]
10415 ; GFX940-NEXT: ;;#ASMEND
10416 ; GFX940-NEXT: s_mov_b32 s8, s2
10417 ; GFX940-NEXT: s_mov_b32 s9, s10
10418 ; GFX940-NEXT: ;;#ASMSTART
10419 ; GFX940-NEXT: ; use s[8:10]
10420 ; GFX940-NEXT: ;;#ASMEND
10421 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10422 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10423 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10424 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 2, i32 2>
10425 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10429 define void @s_shuffle_v3p3_v4p3__7_2_2() {
10430 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_2:
10432 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10433 ; GFX900-NEXT: ;;#ASMSTART
10434 ; GFX900-NEXT: ; def s[8:11]
10435 ; GFX900-NEXT: ;;#ASMEND
10436 ; GFX900-NEXT: ;;#ASMSTART
10437 ; GFX900-NEXT: ; def s[4:7]
10438 ; GFX900-NEXT: ;;#ASMEND
10439 ; GFX900-NEXT: s_mov_b32 s8, s7
10440 ; GFX900-NEXT: s_mov_b32 s9, s10
10441 ; GFX900-NEXT: ;;#ASMSTART
10442 ; GFX900-NEXT: ; use s[8:10]
10443 ; GFX900-NEXT: ;;#ASMEND
10444 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10446 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_2:
10448 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10449 ; GFX90A-NEXT: ;;#ASMSTART
10450 ; GFX90A-NEXT: ; def s[8:11]
10451 ; GFX90A-NEXT: ;;#ASMEND
10452 ; GFX90A-NEXT: ;;#ASMSTART
10453 ; GFX90A-NEXT: ; def s[4:7]
10454 ; GFX90A-NEXT: ;;#ASMEND
10455 ; GFX90A-NEXT: s_mov_b32 s8, s7
10456 ; GFX90A-NEXT: s_mov_b32 s9, s10
10457 ; GFX90A-NEXT: ;;#ASMSTART
10458 ; GFX90A-NEXT: ; use s[8:10]
10459 ; GFX90A-NEXT: ;;#ASMEND
10460 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10462 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_2:
10464 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10465 ; GFX940-NEXT: ;;#ASMSTART
10466 ; GFX940-NEXT: ; def s[8:11]
10467 ; GFX940-NEXT: ;;#ASMEND
10468 ; GFX940-NEXT: ;;#ASMSTART
10469 ; GFX940-NEXT: ; def s[0:3]
10470 ; GFX940-NEXT: ;;#ASMEND
10471 ; GFX940-NEXT: s_mov_b32 s8, s3
10472 ; GFX940-NEXT: s_mov_b32 s9, s10
10473 ; GFX940-NEXT: ;;#ASMSTART
10474 ; GFX940-NEXT: ; use s[8:10]
10475 ; GFX940-NEXT: ;;#ASMEND
10476 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10477 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10478 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10479 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 2>
10480 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10484 define void @s_shuffle_v3p3_v4p3__7_u_2() {
10485 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_2:
10487 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10488 ; GFX900-NEXT: ;;#ASMSTART
10489 ; GFX900-NEXT: ; def s[8:11]
10490 ; GFX900-NEXT: ;;#ASMEND
10491 ; GFX900-NEXT: ;;#ASMSTART
10492 ; GFX900-NEXT: ; def s[4:7]
10493 ; GFX900-NEXT: ;;#ASMEND
10494 ; GFX900-NEXT: s_mov_b32 s8, s7
10495 ; GFX900-NEXT: ;;#ASMSTART
10496 ; GFX900-NEXT: ; use s[8:10]
10497 ; GFX900-NEXT: ;;#ASMEND
10498 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10500 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_2:
10502 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10503 ; GFX90A-NEXT: ;;#ASMSTART
10504 ; GFX90A-NEXT: ; def s[8:11]
10505 ; GFX90A-NEXT: ;;#ASMEND
10506 ; GFX90A-NEXT: ;;#ASMSTART
10507 ; GFX90A-NEXT: ; def s[4:7]
10508 ; GFX90A-NEXT: ;;#ASMEND
10509 ; GFX90A-NEXT: s_mov_b32 s8, s7
10510 ; GFX90A-NEXT: ;;#ASMSTART
10511 ; GFX90A-NEXT: ; use s[8:10]
10512 ; GFX90A-NEXT: ;;#ASMEND
10513 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10515 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_u_2:
10517 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10518 ; GFX940-NEXT: ;;#ASMSTART
10519 ; GFX940-NEXT: ; def s[8:11]
10520 ; GFX940-NEXT: ;;#ASMEND
10521 ; GFX940-NEXT: ;;#ASMSTART
10522 ; GFX940-NEXT: ; def s[0:3]
10523 ; GFX940-NEXT: ;;#ASMEND
10524 ; GFX940-NEXT: s_mov_b32 s8, s3
10525 ; GFX940-NEXT: ;;#ASMSTART
10526 ; GFX940-NEXT: ; use s[8:10]
10527 ; GFX940-NEXT: ;;#ASMEND
10528 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10529 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10530 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10531 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 2>
10532 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10536 define void @s_shuffle_v3p3_v4p3__7_0_2() {
10537 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_2:
10539 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10540 ; GFX900-NEXT: ;;#ASMSTART
10541 ; GFX900-NEXT: ; def s[8:11]
10542 ; GFX900-NEXT: ;;#ASMEND
10543 ; GFX900-NEXT: ;;#ASMSTART
10544 ; GFX900-NEXT: ; def s[4:7]
10545 ; GFX900-NEXT: ;;#ASMEND
10546 ; GFX900-NEXT: s_mov_b32 s8, s11
10547 ; GFX900-NEXT: s_mov_b32 s9, s4
10548 ; GFX900-NEXT: s_mov_b32 s10, s6
10549 ; GFX900-NEXT: ;;#ASMSTART
10550 ; GFX900-NEXT: ; use s[8:10]
10551 ; GFX900-NEXT: ;;#ASMEND
10552 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10554 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_2:
10556 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10557 ; GFX90A-NEXT: ;;#ASMSTART
10558 ; GFX90A-NEXT: ; def s[8:11]
10559 ; GFX90A-NEXT: ;;#ASMEND
10560 ; GFX90A-NEXT: ;;#ASMSTART
10561 ; GFX90A-NEXT: ; def s[4:7]
10562 ; GFX90A-NEXT: ;;#ASMEND
10563 ; GFX90A-NEXT: s_mov_b32 s8, s11
10564 ; GFX90A-NEXT: s_mov_b32 s9, s4
10565 ; GFX90A-NEXT: s_mov_b32 s10, s6
10566 ; GFX90A-NEXT: ;;#ASMSTART
10567 ; GFX90A-NEXT: ; use s[8:10]
10568 ; GFX90A-NEXT: ;;#ASMEND
10569 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10571 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_2:
10573 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10574 ; GFX940-NEXT: ;;#ASMSTART
10575 ; GFX940-NEXT: ; def s[0:3]
10576 ; GFX940-NEXT: ;;#ASMEND
10577 ; GFX940-NEXT: ;;#ASMSTART
10578 ; GFX940-NEXT: ; def s[4:7]
10579 ; GFX940-NEXT: ;;#ASMEND
10580 ; GFX940-NEXT: s_mov_b32 s8, s7
10581 ; GFX940-NEXT: s_mov_b32 s9, s0
10582 ; GFX940-NEXT: s_mov_b32 s10, s2
10583 ; GFX940-NEXT: ;;#ASMSTART
10584 ; GFX940-NEXT: ; use s[8:10]
10585 ; GFX940-NEXT: ;;#ASMEND
10586 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10587 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10588 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10589 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 2>
10590 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10594 define void @s_shuffle_v3p3_v4p3__7_1_2() {
10595 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_2:
10597 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10598 ; GFX900-NEXT: ;;#ASMSTART
10599 ; GFX900-NEXT: ; def s[8:11]
10600 ; GFX900-NEXT: ;;#ASMEND
10601 ; GFX900-NEXT: ;;#ASMSTART
10602 ; GFX900-NEXT: ; def s[4:7]
10603 ; GFX900-NEXT: ;;#ASMEND
10604 ; GFX900-NEXT: s_mov_b32 s8, s7
10605 ; GFX900-NEXT: ;;#ASMSTART
10606 ; GFX900-NEXT: ; use s[8:10]
10607 ; GFX900-NEXT: ;;#ASMEND
10608 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10610 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_2:
10612 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10613 ; GFX90A-NEXT: ;;#ASMSTART
10614 ; GFX90A-NEXT: ; def s[8:11]
10615 ; GFX90A-NEXT: ;;#ASMEND
10616 ; GFX90A-NEXT: ;;#ASMSTART
10617 ; GFX90A-NEXT: ; def s[4:7]
10618 ; GFX90A-NEXT: ;;#ASMEND
10619 ; GFX90A-NEXT: s_mov_b32 s8, s7
10620 ; GFX90A-NEXT: ;;#ASMSTART
10621 ; GFX90A-NEXT: ; use s[8:10]
10622 ; GFX90A-NEXT: ;;#ASMEND
10623 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10625 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_2:
10627 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10628 ; GFX940-NEXT: ;;#ASMSTART
10629 ; GFX940-NEXT: ; def s[8:11]
10630 ; GFX940-NEXT: ;;#ASMEND
10631 ; GFX940-NEXT: ;;#ASMSTART
10632 ; GFX940-NEXT: ; def s[0:3]
10633 ; GFX940-NEXT: ;;#ASMEND
10634 ; GFX940-NEXT: s_mov_b32 s8, s3
10635 ; GFX940-NEXT: ;;#ASMSTART
10636 ; GFX940-NEXT: ; use s[8:10]
10637 ; GFX940-NEXT: ;;#ASMEND
10638 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10639 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10640 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10641 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 2>
10642 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10646 define void @s_shuffle_v3p3_v4p3__7_3_2() {
10647 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_2:
10649 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10650 ; GFX900-NEXT: ;;#ASMSTART
10651 ; GFX900-NEXT: ; def s[8:11]
10652 ; GFX900-NEXT: ;;#ASMEND
10653 ; GFX900-NEXT: ;;#ASMSTART
10654 ; GFX900-NEXT: ; def s[4:7]
10655 ; GFX900-NEXT: ;;#ASMEND
10656 ; GFX900-NEXT: s_mov_b32 s8, s7
10657 ; GFX900-NEXT: s_mov_b32 s9, s11
10658 ; GFX900-NEXT: ;;#ASMSTART
10659 ; GFX900-NEXT: ; use s[8:10]
10660 ; GFX900-NEXT: ;;#ASMEND
10661 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10663 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_2:
10665 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10666 ; GFX90A-NEXT: ;;#ASMSTART
10667 ; GFX90A-NEXT: ; def s[8:11]
10668 ; GFX90A-NEXT: ;;#ASMEND
10669 ; GFX90A-NEXT: ;;#ASMSTART
10670 ; GFX90A-NEXT: ; def s[4:7]
10671 ; GFX90A-NEXT: ;;#ASMEND
10672 ; GFX90A-NEXT: s_mov_b32 s8, s7
10673 ; GFX90A-NEXT: s_mov_b32 s9, s11
10674 ; GFX90A-NEXT: ;;#ASMSTART
10675 ; GFX90A-NEXT: ; use s[8:10]
10676 ; GFX90A-NEXT: ;;#ASMEND
10677 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10679 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_2:
10681 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10682 ; GFX940-NEXT: ;;#ASMSTART
10683 ; GFX940-NEXT: ; def s[8:11]
10684 ; GFX940-NEXT: ;;#ASMEND
10685 ; GFX940-NEXT: ;;#ASMSTART
10686 ; GFX940-NEXT: ; def s[0:3]
10687 ; GFX940-NEXT: ;;#ASMEND
10688 ; GFX940-NEXT: s_mov_b32 s8, s3
10689 ; GFX940-NEXT: s_mov_b32 s9, s11
10690 ; GFX940-NEXT: ;;#ASMSTART
10691 ; GFX940-NEXT: ; use s[8:10]
10692 ; GFX940-NEXT: ;;#ASMEND
10693 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10694 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10695 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10696 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 2>
10697 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10701 define void @s_shuffle_v3p3_v4p3__7_4_2() {
10702 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_2:
10704 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10705 ; GFX900-NEXT: ;;#ASMSTART
10706 ; GFX900-NEXT: ; def s[8:11]
10707 ; GFX900-NEXT: ;;#ASMEND
10708 ; GFX900-NEXT: ;;#ASMSTART
10709 ; GFX900-NEXT: ; def s[4:7]
10710 ; GFX900-NEXT: ;;#ASMEND
10711 ; GFX900-NEXT: s_mov_b32 s8, s7
10712 ; GFX900-NEXT: s_mov_b32 s9, s4
10713 ; GFX900-NEXT: ;;#ASMSTART
10714 ; GFX900-NEXT: ; use s[8:10]
10715 ; GFX900-NEXT: ;;#ASMEND
10716 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10718 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_2:
10720 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10721 ; GFX90A-NEXT: ;;#ASMSTART
10722 ; GFX90A-NEXT: ; def s[8:11]
10723 ; GFX90A-NEXT: ;;#ASMEND
10724 ; GFX90A-NEXT: ;;#ASMSTART
10725 ; GFX90A-NEXT: ; def s[4:7]
10726 ; GFX90A-NEXT: ;;#ASMEND
10727 ; GFX90A-NEXT: s_mov_b32 s8, s7
10728 ; GFX90A-NEXT: s_mov_b32 s9, s4
10729 ; GFX90A-NEXT: ;;#ASMSTART
10730 ; GFX90A-NEXT: ; use s[8:10]
10731 ; GFX90A-NEXT: ;;#ASMEND
10732 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10734 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_2:
10736 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10737 ; GFX940-NEXT: ;;#ASMSTART
10738 ; GFX940-NEXT: ; def s[8:11]
10739 ; GFX940-NEXT: ;;#ASMEND
10740 ; GFX940-NEXT: ;;#ASMSTART
10741 ; GFX940-NEXT: ; def s[0:3]
10742 ; GFX940-NEXT: ;;#ASMEND
10743 ; GFX940-NEXT: s_mov_b32 s8, s3
10744 ; GFX940-NEXT: s_mov_b32 s9, s0
10745 ; GFX940-NEXT: ;;#ASMSTART
10746 ; GFX940-NEXT: ; use s[8:10]
10747 ; GFX940-NEXT: ;;#ASMEND
10748 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10749 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10750 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10751 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 2>
10752 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10756 define void @s_shuffle_v3p3_v4p3__7_5_2() {
10757 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_2:
10759 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10760 ; GFX900-NEXT: ;;#ASMSTART
10761 ; GFX900-NEXT: ; def s[8:11]
10762 ; GFX900-NEXT: ;;#ASMEND
10763 ; GFX900-NEXT: ;;#ASMSTART
10764 ; GFX900-NEXT: ; def s[4:7]
10765 ; GFX900-NEXT: ;;#ASMEND
10766 ; GFX900-NEXT: s_mov_b32 s8, s11
10767 ; GFX900-NEXT: s_mov_b32 s10, s6
10768 ; GFX900-NEXT: ;;#ASMSTART
10769 ; GFX900-NEXT: ; use s[8:10]
10770 ; GFX900-NEXT: ;;#ASMEND
10771 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10773 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_2:
10775 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10776 ; GFX90A-NEXT: ;;#ASMSTART
10777 ; GFX90A-NEXT: ; def s[8:11]
10778 ; GFX90A-NEXT: ;;#ASMEND
10779 ; GFX90A-NEXT: ;;#ASMSTART
10780 ; GFX90A-NEXT: ; def s[4:7]
10781 ; GFX90A-NEXT: ;;#ASMEND
10782 ; GFX90A-NEXT: s_mov_b32 s8, s11
10783 ; GFX90A-NEXT: s_mov_b32 s10, s6
10784 ; GFX90A-NEXT: ;;#ASMSTART
10785 ; GFX90A-NEXT: ; use s[8:10]
10786 ; GFX90A-NEXT: ;;#ASMEND
10787 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10789 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_5_2:
10791 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10792 ; GFX940-NEXT: ;;#ASMSTART
10793 ; GFX940-NEXT: ; def s[8:11]
10794 ; GFX940-NEXT: ;;#ASMEND
10795 ; GFX940-NEXT: ;;#ASMSTART
10796 ; GFX940-NEXT: ; def s[0:3]
10797 ; GFX940-NEXT: ;;#ASMEND
10798 ; GFX940-NEXT: s_mov_b32 s8, s11
10799 ; GFX940-NEXT: s_mov_b32 s10, s2
10800 ; GFX940-NEXT: ;;#ASMSTART
10801 ; GFX940-NEXT: ; use s[8:10]
10802 ; GFX940-NEXT: ;;#ASMEND
10803 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10804 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10805 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10806 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 2>
10807 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10811 define void @s_shuffle_v3p3_v4p3__7_6_2() {
10812 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_2:
10814 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10815 ; GFX900-NEXT: ;;#ASMSTART
10816 ; GFX900-NEXT: ; def s[8:11]
10817 ; GFX900-NEXT: ;;#ASMEND
10818 ; GFX900-NEXT: ;;#ASMSTART
10819 ; GFX900-NEXT: ; def s[4:7]
10820 ; GFX900-NEXT: ;;#ASMEND
10821 ; GFX900-NEXT: s_mov_b32 s8, s7
10822 ; GFX900-NEXT: s_mov_b32 s9, s6
10823 ; GFX900-NEXT: ;;#ASMSTART
10824 ; GFX900-NEXT: ; use s[8:10]
10825 ; GFX900-NEXT: ;;#ASMEND
10826 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10828 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_2:
10830 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10831 ; GFX90A-NEXT: ;;#ASMSTART
10832 ; GFX90A-NEXT: ; def s[8:11]
10833 ; GFX90A-NEXT: ;;#ASMEND
10834 ; GFX90A-NEXT: ;;#ASMSTART
10835 ; GFX90A-NEXT: ; def s[4:7]
10836 ; GFX90A-NEXT: ;;#ASMEND
10837 ; GFX90A-NEXT: s_mov_b32 s8, s7
10838 ; GFX90A-NEXT: s_mov_b32 s9, s6
10839 ; GFX90A-NEXT: ;;#ASMSTART
10840 ; GFX90A-NEXT: ; use s[8:10]
10841 ; GFX90A-NEXT: ;;#ASMEND
10842 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10844 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_6_2:
10846 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10847 ; GFX940-NEXT: ;;#ASMSTART
10848 ; GFX940-NEXT: ; def s[8:11]
10849 ; GFX940-NEXT: ;;#ASMEND
10850 ; GFX940-NEXT: ;;#ASMSTART
10851 ; GFX940-NEXT: ; def s[0:3]
10852 ; GFX940-NEXT: ;;#ASMEND
10853 ; GFX940-NEXT: s_mov_b32 s8, s3
10854 ; GFX940-NEXT: s_mov_b32 s9, s2
10855 ; GFX940-NEXT: ;;#ASMSTART
10856 ; GFX940-NEXT: ; use s[8:10]
10857 ; GFX940-NEXT: ;;#ASMEND
10858 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10859 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10860 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10861 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 2>
10862 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10866 define void @s_shuffle_v3p3_v4p3__u_3_3() {
10867 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__u_3_3:
10869 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10870 ; GFX900-NEXT: ;;#ASMSTART
10871 ; GFX900-NEXT: ; def s[4:7]
10872 ; GFX900-NEXT: ;;#ASMEND
10873 ; GFX900-NEXT: s_mov_b32 s9, s7
10874 ; GFX900-NEXT: s_mov_b32 s10, s7
10875 ; GFX900-NEXT: ;;#ASMSTART
10876 ; GFX900-NEXT: ; use s[8:10]
10877 ; GFX900-NEXT: ;;#ASMEND
10878 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10880 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__u_3_3:
10882 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10883 ; GFX90A-NEXT: ;;#ASMSTART
10884 ; GFX90A-NEXT: ; def s[4:7]
10885 ; GFX90A-NEXT: ;;#ASMEND
10886 ; GFX90A-NEXT: s_mov_b32 s9, s7
10887 ; GFX90A-NEXT: s_mov_b32 s10, s7
10888 ; GFX90A-NEXT: ;;#ASMSTART
10889 ; GFX90A-NEXT: ; use s[8:10]
10890 ; GFX90A-NEXT: ;;#ASMEND
10891 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10893 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__u_3_3:
10895 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10896 ; GFX940-NEXT: ;;#ASMSTART
10897 ; GFX940-NEXT: ; def s[0:3]
10898 ; GFX940-NEXT: ;;#ASMEND
10899 ; GFX940-NEXT: s_mov_b32 s9, s3
10900 ; GFX940-NEXT: s_mov_b32 s10, s3
10901 ; GFX940-NEXT: ;;#ASMSTART
10902 ; GFX940-NEXT: ; use s[8:10]
10903 ; GFX940-NEXT: ;;#ASMEND
10904 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10905 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10906 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 3, i32 3>
10907 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10911 define void @s_shuffle_v3p3_v4p3__0_3_3() {
10912 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__0_3_3:
10914 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10915 ; GFX9-NEXT: ;;#ASMSTART
10916 ; GFX9-NEXT: ; def s[8:11]
10917 ; GFX9-NEXT: ;;#ASMEND
10918 ; GFX9-NEXT: s_mov_b32 s9, s11
10919 ; GFX9-NEXT: s_mov_b32 s10, s11
10920 ; GFX9-NEXT: ;;#ASMSTART
10921 ; GFX9-NEXT: ; use s[8:10]
10922 ; GFX9-NEXT: ;;#ASMEND
10923 ; GFX9-NEXT: s_setpc_b64 s[30:31]
10924 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10925 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 3, i32 3>
10926 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10930 define void @s_shuffle_v3p3_v4p3__1_3_3() {
10931 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_3_3:
10933 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10934 ; GFX900-NEXT: ;;#ASMSTART
10935 ; GFX900-NEXT: ; def s[4:7]
10936 ; GFX900-NEXT: ;;#ASMEND
10937 ; GFX900-NEXT: s_mov_b32 s8, s5
10938 ; GFX900-NEXT: s_mov_b32 s9, s7
10939 ; GFX900-NEXT: s_mov_b32 s10, s7
10940 ; GFX900-NEXT: ;;#ASMSTART
10941 ; GFX900-NEXT: ; use s[8:10]
10942 ; GFX900-NEXT: ;;#ASMEND
10943 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10945 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_3_3:
10947 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10948 ; GFX90A-NEXT: ;;#ASMSTART
10949 ; GFX90A-NEXT: ; def s[4:7]
10950 ; GFX90A-NEXT: ;;#ASMEND
10951 ; GFX90A-NEXT: s_mov_b32 s8, s5
10952 ; GFX90A-NEXT: s_mov_b32 s9, s7
10953 ; GFX90A-NEXT: s_mov_b32 s10, s7
10954 ; GFX90A-NEXT: ;;#ASMSTART
10955 ; GFX90A-NEXT: ; use s[8:10]
10956 ; GFX90A-NEXT: ;;#ASMEND
10957 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
10959 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__1_3_3:
10961 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10962 ; GFX940-NEXT: ;;#ASMSTART
10963 ; GFX940-NEXT: ; def s[0:3]
10964 ; GFX940-NEXT: ;;#ASMEND
10965 ; GFX940-NEXT: s_mov_b32 s8, s1
10966 ; GFX940-NEXT: s_mov_b32 s9, s3
10967 ; GFX940-NEXT: s_mov_b32 s10, s3
10968 ; GFX940-NEXT: ;;#ASMSTART
10969 ; GFX940-NEXT: ; use s[8:10]
10970 ; GFX940-NEXT: ;;#ASMEND
10971 ; GFX940-NEXT: s_setpc_b64 s[30:31]
10972 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
10973 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 3, i32 3>
10974 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
10978 define void @s_shuffle_v3p3_v4p3__2_3_3() {
10979 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_3_3:
10981 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10982 ; GFX900-NEXT: ;;#ASMSTART
10983 ; GFX900-NEXT: ; def s[4:7]
10984 ; GFX900-NEXT: ;;#ASMEND
10985 ; GFX900-NEXT: s_mov_b32 s8, s6
10986 ; GFX900-NEXT: s_mov_b32 s9, s7
10987 ; GFX900-NEXT: s_mov_b32 s10, s7
10988 ; GFX900-NEXT: ;;#ASMSTART
10989 ; GFX900-NEXT: ; use s[8:10]
10990 ; GFX900-NEXT: ;;#ASMEND
10991 ; GFX900-NEXT: s_setpc_b64 s[30:31]
10993 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_3_3:
10995 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10996 ; GFX90A-NEXT: ;;#ASMSTART
10997 ; GFX90A-NEXT: ; def s[4:7]
10998 ; GFX90A-NEXT: ;;#ASMEND
10999 ; GFX90A-NEXT: s_mov_b32 s8, s6
11000 ; GFX90A-NEXT: s_mov_b32 s9, s7
11001 ; GFX90A-NEXT: s_mov_b32 s10, s7
11002 ; GFX90A-NEXT: ;;#ASMSTART
11003 ; GFX90A-NEXT: ; use s[8:10]
11004 ; GFX90A-NEXT: ;;#ASMEND
11005 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11007 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__2_3_3:
11009 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11010 ; GFX940-NEXT: ;;#ASMSTART
11011 ; GFX940-NEXT: ; def s[0:3]
11012 ; GFX940-NEXT: ;;#ASMEND
11013 ; GFX940-NEXT: s_mov_b32 s8, s2
11014 ; GFX940-NEXT: s_mov_b32 s9, s3
11015 ; GFX940-NEXT: s_mov_b32 s10, s3
11016 ; GFX940-NEXT: ;;#ASMSTART
11017 ; GFX940-NEXT: ; use s[8:10]
11018 ; GFX940-NEXT: ;;#ASMEND
11019 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11020 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11021 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 3, i32 3>
11022 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11026 define void @s_shuffle_v3p3_v4p3__3_3_3() {
11027 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_3_3:
11029 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11030 ; GFX900-NEXT: ;;#ASMSTART
11031 ; GFX900-NEXT: ; def s[4:7]
11032 ; GFX900-NEXT: ;;#ASMEND
11033 ; GFX900-NEXT: s_mov_b32 s8, s7
11034 ; GFX900-NEXT: s_mov_b32 s9, s7
11035 ; GFX900-NEXT: s_mov_b32 s10, s7
11036 ; GFX900-NEXT: ;;#ASMSTART
11037 ; GFX900-NEXT: ; use s[8:10]
11038 ; GFX900-NEXT: ;;#ASMEND
11039 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11041 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_3_3:
11043 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11044 ; GFX90A-NEXT: ;;#ASMSTART
11045 ; GFX90A-NEXT: ; def s[4:7]
11046 ; GFX90A-NEXT: ;;#ASMEND
11047 ; GFX90A-NEXT: s_mov_b32 s8, s7
11048 ; GFX90A-NEXT: s_mov_b32 s9, s7
11049 ; GFX90A-NEXT: s_mov_b32 s10, s7
11050 ; GFX90A-NEXT: ;;#ASMSTART
11051 ; GFX90A-NEXT: ; use s[8:10]
11052 ; GFX90A-NEXT: ;;#ASMEND
11053 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11055 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__3_3_3:
11057 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11058 ; GFX940-NEXT: ;;#ASMSTART
11059 ; GFX940-NEXT: ; def s[0:3]
11060 ; GFX940-NEXT: ;;#ASMEND
11061 ; GFX940-NEXT: s_mov_b32 s8, s3
11062 ; GFX940-NEXT: s_mov_b32 s9, s3
11063 ; GFX940-NEXT: s_mov_b32 s10, s3
11064 ; GFX940-NEXT: ;;#ASMSTART
11065 ; GFX940-NEXT: ; use s[8:10]
11066 ; GFX940-NEXT: ;;#ASMEND
11067 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11068 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11069 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 3, i32 3>
11070 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11074 define void @s_shuffle_v3p3_v4p3__4_3_3() {
11075 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__4_3_3:
11077 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11078 ; GFX900-NEXT: ;;#ASMSTART
11079 ; GFX900-NEXT: ; def s[4:7]
11080 ; GFX900-NEXT: ;;#ASMEND
11081 ; GFX900-NEXT: s_mov_b32 s9, s7
11082 ; GFX900-NEXT: s_mov_b32 s10, s7
11083 ; GFX900-NEXT: ;;#ASMSTART
11084 ; GFX900-NEXT: ; use s[8:10]
11085 ; GFX900-NEXT: ;;#ASMEND
11086 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11088 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__4_3_3:
11090 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11091 ; GFX90A-NEXT: ;;#ASMSTART
11092 ; GFX90A-NEXT: ; def s[4:7]
11093 ; GFX90A-NEXT: ;;#ASMEND
11094 ; GFX90A-NEXT: s_mov_b32 s9, s7
11095 ; GFX90A-NEXT: s_mov_b32 s10, s7
11096 ; GFX90A-NEXT: ;;#ASMSTART
11097 ; GFX90A-NEXT: ; use s[8:10]
11098 ; GFX90A-NEXT: ;;#ASMEND
11099 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11101 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__4_3_3:
11103 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11104 ; GFX940-NEXT: ;;#ASMSTART
11105 ; GFX940-NEXT: ; def s[0:3]
11106 ; GFX940-NEXT: ;;#ASMEND
11107 ; GFX940-NEXT: s_mov_b32 s9, s3
11108 ; GFX940-NEXT: s_mov_b32 s10, s3
11109 ; GFX940-NEXT: ;;#ASMSTART
11110 ; GFX940-NEXT: ; use s[8:10]
11111 ; GFX940-NEXT: ;;#ASMEND
11112 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11113 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11114 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 3, i32 3>
11115 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11119 define void @s_shuffle_v3p3_v4p3__5_3_3() {
11120 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_3_3:
11122 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11123 ; GFX900-NEXT: ;;#ASMSTART
11124 ; GFX900-NEXT: ; def s[8:11]
11125 ; GFX900-NEXT: ;;#ASMEND
11126 ; GFX900-NEXT: ;;#ASMSTART
11127 ; GFX900-NEXT: ; def s[4:7]
11128 ; GFX900-NEXT: ;;#ASMEND
11129 ; GFX900-NEXT: s_mov_b32 s8, s9
11130 ; GFX900-NEXT: s_mov_b32 s9, s7
11131 ; GFX900-NEXT: s_mov_b32 s10, s7
11132 ; GFX900-NEXT: ;;#ASMSTART
11133 ; GFX900-NEXT: ; use s[8:10]
11134 ; GFX900-NEXT: ;;#ASMEND
11135 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11137 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_3_3:
11139 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11140 ; GFX90A-NEXT: ;;#ASMSTART
11141 ; GFX90A-NEXT: ; def s[8:11]
11142 ; GFX90A-NEXT: ;;#ASMEND
11143 ; GFX90A-NEXT: ;;#ASMSTART
11144 ; GFX90A-NEXT: ; def s[4:7]
11145 ; GFX90A-NEXT: ;;#ASMEND
11146 ; GFX90A-NEXT: s_mov_b32 s8, s9
11147 ; GFX90A-NEXT: s_mov_b32 s9, s7
11148 ; GFX90A-NEXT: s_mov_b32 s10, s7
11149 ; GFX90A-NEXT: ;;#ASMSTART
11150 ; GFX90A-NEXT: ; use s[8:10]
11151 ; GFX90A-NEXT: ;;#ASMEND
11152 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11154 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__5_3_3:
11156 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11157 ; GFX940-NEXT: ;;#ASMSTART
11158 ; GFX940-NEXT: ; def s[0:3]
11159 ; GFX940-NEXT: ;;#ASMEND
11160 ; GFX940-NEXT: ;;#ASMSTART
11161 ; GFX940-NEXT: ; def s[4:7]
11162 ; GFX940-NEXT: ;;#ASMEND
11163 ; GFX940-NEXT: s_mov_b32 s8, s5
11164 ; GFX940-NEXT: s_mov_b32 s9, s3
11165 ; GFX940-NEXT: s_mov_b32 s10, s3
11166 ; GFX940-NEXT: ;;#ASMSTART
11167 ; GFX940-NEXT: ; use s[8:10]
11168 ; GFX940-NEXT: ;;#ASMEND
11169 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11170 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11171 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11172 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 3, i32 3>
11173 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11177 define void @s_shuffle_v3p3_v4p3__6_3_3() {
11178 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_3_3:
11180 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11181 ; GFX900-NEXT: ;;#ASMSTART
11182 ; GFX900-NEXT: ; def s[8:11]
11183 ; GFX900-NEXT: ;;#ASMEND
11184 ; GFX900-NEXT: ;;#ASMSTART
11185 ; GFX900-NEXT: ; def s[4:7]
11186 ; GFX900-NEXT: ;;#ASMEND
11187 ; GFX900-NEXT: s_mov_b32 s8, s10
11188 ; GFX900-NEXT: s_mov_b32 s9, s7
11189 ; GFX900-NEXT: s_mov_b32 s10, s7
11190 ; GFX900-NEXT: ;;#ASMSTART
11191 ; GFX900-NEXT: ; use s[8:10]
11192 ; GFX900-NEXT: ;;#ASMEND
11193 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11195 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_3_3:
11197 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11198 ; GFX90A-NEXT: ;;#ASMSTART
11199 ; GFX90A-NEXT: ; def s[8:11]
11200 ; GFX90A-NEXT: ;;#ASMEND
11201 ; GFX90A-NEXT: ;;#ASMSTART
11202 ; GFX90A-NEXT: ; def s[4:7]
11203 ; GFX90A-NEXT: ;;#ASMEND
11204 ; GFX90A-NEXT: s_mov_b32 s8, s10
11205 ; GFX90A-NEXT: s_mov_b32 s9, s7
11206 ; GFX90A-NEXT: s_mov_b32 s10, s7
11207 ; GFX90A-NEXT: ;;#ASMSTART
11208 ; GFX90A-NEXT: ; use s[8:10]
11209 ; GFX90A-NEXT: ;;#ASMEND
11210 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11212 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__6_3_3:
11214 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11215 ; GFX940-NEXT: ;;#ASMSTART
11216 ; GFX940-NEXT: ; def s[0:3]
11217 ; GFX940-NEXT: ;;#ASMEND
11218 ; GFX940-NEXT: ;;#ASMSTART
11219 ; GFX940-NEXT: ; def s[4:7]
11220 ; GFX940-NEXT: ;;#ASMEND
11221 ; GFX940-NEXT: s_mov_b32 s8, s6
11222 ; GFX940-NEXT: s_mov_b32 s9, s3
11223 ; GFX940-NEXT: s_mov_b32 s10, s3
11224 ; GFX940-NEXT: ;;#ASMSTART
11225 ; GFX940-NEXT: ; use s[8:10]
11226 ; GFX940-NEXT: ;;#ASMEND
11227 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11228 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11229 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11230 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 3, i32 3>
11231 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11235 define void @s_shuffle_v3p3_v4p3__7_3_3() {
11236 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_3:
11238 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11239 ; GFX900-NEXT: ;;#ASMSTART
11240 ; GFX900-NEXT: ; def s[8:11]
11241 ; GFX900-NEXT: ;;#ASMEND
11242 ; GFX900-NEXT: ;;#ASMSTART
11243 ; GFX900-NEXT: ; def s[4:7]
11244 ; GFX900-NEXT: ;;#ASMEND
11245 ; GFX900-NEXT: s_mov_b32 s8, s11
11246 ; GFX900-NEXT: s_mov_b32 s9, s7
11247 ; GFX900-NEXT: s_mov_b32 s10, s7
11248 ; GFX900-NEXT: ;;#ASMSTART
11249 ; GFX900-NEXT: ; use s[8:10]
11250 ; GFX900-NEXT: ;;#ASMEND
11251 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11253 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_3:
11255 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11256 ; GFX90A-NEXT: ;;#ASMSTART
11257 ; GFX90A-NEXT: ; def s[8:11]
11258 ; GFX90A-NEXT: ;;#ASMEND
11259 ; GFX90A-NEXT: ;;#ASMSTART
11260 ; GFX90A-NEXT: ; def s[4:7]
11261 ; GFX90A-NEXT: ;;#ASMEND
11262 ; GFX90A-NEXT: s_mov_b32 s8, s11
11263 ; GFX90A-NEXT: s_mov_b32 s9, s7
11264 ; GFX90A-NEXT: s_mov_b32 s10, s7
11265 ; GFX90A-NEXT: ;;#ASMSTART
11266 ; GFX90A-NEXT: ; use s[8:10]
11267 ; GFX90A-NEXT: ;;#ASMEND
11268 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11270 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_3:
11272 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11273 ; GFX940-NEXT: ;;#ASMSTART
11274 ; GFX940-NEXT: ; def s[0:3]
11275 ; GFX940-NEXT: ;;#ASMEND
11276 ; GFX940-NEXT: ;;#ASMSTART
11277 ; GFX940-NEXT: ; def s[4:7]
11278 ; GFX940-NEXT: ;;#ASMEND
11279 ; GFX940-NEXT: s_mov_b32 s8, s7
11280 ; GFX940-NEXT: s_mov_b32 s9, s3
11281 ; GFX940-NEXT: s_mov_b32 s10, s3
11282 ; GFX940-NEXT: ;;#ASMSTART
11283 ; GFX940-NEXT: ; use s[8:10]
11284 ; GFX940-NEXT: ;;#ASMEND
11285 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11286 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11287 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11288 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 3>
11289 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11293 define void @s_shuffle_v3p3_v4p3__7_u_3() {
11294 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_3:
11296 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11297 ; GFX900-NEXT: ;;#ASMSTART
11298 ; GFX900-NEXT: ; def s[8:11]
11299 ; GFX900-NEXT: ;;#ASMEND
11300 ; GFX900-NEXT: ;;#ASMSTART
11301 ; GFX900-NEXT: ; def s[4:7]
11302 ; GFX900-NEXT: ;;#ASMEND
11303 ; GFX900-NEXT: s_mov_b32 s8, s11
11304 ; GFX900-NEXT: s_mov_b32 s10, s7
11305 ; GFX900-NEXT: ;;#ASMSTART
11306 ; GFX900-NEXT: ; use s[8:10]
11307 ; GFX900-NEXT: ;;#ASMEND
11308 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11310 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_3:
11312 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11313 ; GFX90A-NEXT: ;;#ASMSTART
11314 ; GFX90A-NEXT: ; def s[8:11]
11315 ; GFX90A-NEXT: ;;#ASMEND
11316 ; GFX90A-NEXT: ;;#ASMSTART
11317 ; GFX90A-NEXT: ; def s[4:7]
11318 ; GFX90A-NEXT: ;;#ASMEND
11319 ; GFX90A-NEXT: s_mov_b32 s8, s11
11320 ; GFX90A-NEXT: s_mov_b32 s10, s7
11321 ; GFX90A-NEXT: ;;#ASMSTART
11322 ; GFX90A-NEXT: ; use s[8:10]
11323 ; GFX90A-NEXT: ;;#ASMEND
11324 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11326 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_u_3:
11328 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11329 ; GFX940-NEXT: ;;#ASMSTART
11330 ; GFX940-NEXT: ; def s[0:3]
11331 ; GFX940-NEXT: ;;#ASMEND
11332 ; GFX940-NEXT: ;;#ASMSTART
11333 ; GFX940-NEXT: ; def s[4:7]
11334 ; GFX940-NEXT: ;;#ASMEND
11335 ; GFX940-NEXT: s_mov_b32 s8, s7
11336 ; GFX940-NEXT: s_mov_b32 s10, s3
11337 ; GFX940-NEXT: ;;#ASMSTART
11338 ; GFX940-NEXT: ; use s[8:10]
11339 ; GFX940-NEXT: ;;#ASMEND
11340 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11341 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11342 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11343 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 3>
11344 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11348 define void @s_shuffle_v3p3_v4p3__7_0_3() {
11349 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_3:
11351 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11352 ; GFX900-NEXT: ;;#ASMSTART
11353 ; GFX900-NEXT: ; def s[8:11]
11354 ; GFX900-NEXT: ;;#ASMEND
11355 ; GFX900-NEXT: ;;#ASMSTART
11356 ; GFX900-NEXT: ; def s[4:7]
11357 ; GFX900-NEXT: ;;#ASMEND
11358 ; GFX900-NEXT: s_mov_b32 s8, s11
11359 ; GFX900-NEXT: s_mov_b32 s9, s4
11360 ; GFX900-NEXT: s_mov_b32 s10, s7
11361 ; GFX900-NEXT: ;;#ASMSTART
11362 ; GFX900-NEXT: ; use s[8:10]
11363 ; GFX900-NEXT: ;;#ASMEND
11364 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11366 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_3:
11368 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11369 ; GFX90A-NEXT: ;;#ASMSTART
11370 ; GFX90A-NEXT: ; def s[8:11]
11371 ; GFX90A-NEXT: ;;#ASMEND
11372 ; GFX90A-NEXT: ;;#ASMSTART
11373 ; GFX90A-NEXT: ; def s[4:7]
11374 ; GFX90A-NEXT: ;;#ASMEND
11375 ; GFX90A-NEXT: s_mov_b32 s8, s11
11376 ; GFX90A-NEXT: s_mov_b32 s9, s4
11377 ; GFX90A-NEXT: s_mov_b32 s10, s7
11378 ; GFX90A-NEXT: ;;#ASMSTART
11379 ; GFX90A-NEXT: ; use s[8:10]
11380 ; GFX90A-NEXT: ;;#ASMEND
11381 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11383 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_3:
11385 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11386 ; GFX940-NEXT: ;;#ASMSTART
11387 ; GFX940-NEXT: ; def s[0:3]
11388 ; GFX940-NEXT: ;;#ASMEND
11389 ; GFX940-NEXT: ;;#ASMSTART
11390 ; GFX940-NEXT: ; def s[4:7]
11391 ; GFX940-NEXT: ;;#ASMEND
11392 ; GFX940-NEXT: s_mov_b32 s8, s7
11393 ; GFX940-NEXT: s_mov_b32 s9, s0
11394 ; GFX940-NEXT: s_mov_b32 s10, s3
11395 ; GFX940-NEXT: ;;#ASMSTART
11396 ; GFX940-NEXT: ; use s[8:10]
11397 ; GFX940-NEXT: ;;#ASMEND
11398 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11399 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11400 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11401 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 3>
11402 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11406 define void @s_shuffle_v3p3_v4p3__7_1_3() {
11407 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_3:
11409 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11410 ; GFX900-NEXT: ;;#ASMSTART
11411 ; GFX900-NEXT: ; def s[8:11]
11412 ; GFX900-NEXT: ;;#ASMEND
11413 ; GFX900-NEXT: ;;#ASMSTART
11414 ; GFX900-NEXT: ; def s[4:7]
11415 ; GFX900-NEXT: ;;#ASMEND
11416 ; GFX900-NEXT: s_mov_b32 s8, s7
11417 ; GFX900-NEXT: s_mov_b32 s10, s11
11418 ; GFX900-NEXT: ;;#ASMSTART
11419 ; GFX900-NEXT: ; use s[8:10]
11420 ; GFX900-NEXT: ;;#ASMEND
11421 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11423 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_3:
11425 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11426 ; GFX90A-NEXT: ;;#ASMSTART
11427 ; GFX90A-NEXT: ; def s[8:11]
11428 ; GFX90A-NEXT: ;;#ASMEND
11429 ; GFX90A-NEXT: ;;#ASMSTART
11430 ; GFX90A-NEXT: ; def s[4:7]
11431 ; GFX90A-NEXT: ;;#ASMEND
11432 ; GFX90A-NEXT: s_mov_b32 s8, s7
11433 ; GFX90A-NEXT: s_mov_b32 s10, s11
11434 ; GFX90A-NEXT: ;;#ASMSTART
11435 ; GFX90A-NEXT: ; use s[8:10]
11436 ; GFX90A-NEXT: ;;#ASMEND
11437 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11439 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_3:
11441 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11442 ; GFX940-NEXT: ;;#ASMSTART
11443 ; GFX940-NEXT: ; def s[8:11]
11444 ; GFX940-NEXT: ;;#ASMEND
11445 ; GFX940-NEXT: ;;#ASMSTART
11446 ; GFX940-NEXT: ; def s[0:3]
11447 ; GFX940-NEXT: ;;#ASMEND
11448 ; GFX940-NEXT: s_mov_b32 s8, s3
11449 ; GFX940-NEXT: s_mov_b32 s10, s11
11450 ; GFX940-NEXT: ;;#ASMSTART
11451 ; GFX940-NEXT: ; use s[8:10]
11452 ; GFX940-NEXT: ;;#ASMEND
11453 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11454 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11455 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11456 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 3>
11457 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11461 define void @s_shuffle_v3p3_v4p3__7_2_3() {
11462 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_3:
11464 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11465 ; GFX900-NEXT: ;;#ASMSTART
11466 ; GFX900-NEXT: ; def s[8:11]
11467 ; GFX900-NEXT: ;;#ASMEND
11468 ; GFX900-NEXT: ;;#ASMSTART
11469 ; GFX900-NEXT: ; def s[4:7]
11470 ; GFX900-NEXT: ;;#ASMEND
11471 ; GFX900-NEXT: s_mov_b32 s8, s11
11472 ; GFX900-NEXT: s_mov_b32 s9, s6
11473 ; GFX900-NEXT: s_mov_b32 s10, s7
11474 ; GFX900-NEXT: ;;#ASMSTART
11475 ; GFX900-NEXT: ; use s[8:10]
11476 ; GFX900-NEXT: ;;#ASMEND
11477 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11479 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_3:
11481 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11482 ; GFX90A-NEXT: ;;#ASMSTART
11483 ; GFX90A-NEXT: ; def s[8:11]
11484 ; GFX90A-NEXT: ;;#ASMEND
11485 ; GFX90A-NEXT: ;;#ASMSTART
11486 ; GFX90A-NEXT: ; def s[4:7]
11487 ; GFX90A-NEXT: ;;#ASMEND
11488 ; GFX90A-NEXT: s_mov_b32 s8, s11
11489 ; GFX90A-NEXT: s_mov_b32 s9, s6
11490 ; GFX90A-NEXT: s_mov_b32 s10, s7
11491 ; GFX90A-NEXT: ;;#ASMSTART
11492 ; GFX90A-NEXT: ; use s[8:10]
11493 ; GFX90A-NEXT: ;;#ASMEND
11494 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11496 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_3:
11498 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11499 ; GFX940-NEXT: ;;#ASMSTART
11500 ; GFX940-NEXT: ; def s[0:3]
11501 ; GFX940-NEXT: ;;#ASMEND
11502 ; GFX940-NEXT: ;;#ASMSTART
11503 ; GFX940-NEXT: ; def s[4:7]
11504 ; GFX940-NEXT: ;;#ASMEND
11505 ; GFX940-NEXT: s_mov_b32 s8, s7
11506 ; GFX940-NEXT: s_mov_b32 s9, s2
11507 ; GFX940-NEXT: s_mov_b32 s10, s3
11508 ; GFX940-NEXT: ;;#ASMSTART
11509 ; GFX940-NEXT: ; use s[8:10]
11510 ; GFX940-NEXT: ;;#ASMEND
11511 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11512 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11513 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11514 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 3>
11515 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11519 define void @s_shuffle_v3p3_v4p3__7_4_3() {
11520 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_3:
11522 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11523 ; GFX900-NEXT: ;;#ASMSTART
11524 ; GFX900-NEXT: ; def s[4:7]
11525 ; GFX900-NEXT: ;;#ASMEND
11526 ; GFX900-NEXT: ;;#ASMSTART
11527 ; GFX900-NEXT: ; def s[12:15]
11528 ; GFX900-NEXT: ;;#ASMEND
11529 ; GFX900-NEXT: s_mov_b32 s8, s15
11530 ; GFX900-NEXT: s_mov_b32 s9, s12
11531 ; GFX900-NEXT: s_mov_b32 s10, s7
11532 ; GFX900-NEXT: ;;#ASMSTART
11533 ; GFX900-NEXT: ; use s[8:10]
11534 ; GFX900-NEXT: ;;#ASMEND
11535 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11537 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_3:
11539 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11540 ; GFX90A-NEXT: ;;#ASMSTART
11541 ; GFX90A-NEXT: ; def s[4:7]
11542 ; GFX90A-NEXT: ;;#ASMEND
11543 ; GFX90A-NEXT: ;;#ASMSTART
11544 ; GFX90A-NEXT: ; def s[12:15]
11545 ; GFX90A-NEXT: ;;#ASMEND
11546 ; GFX90A-NEXT: s_mov_b32 s8, s15
11547 ; GFX90A-NEXT: s_mov_b32 s9, s12
11548 ; GFX90A-NEXT: s_mov_b32 s10, s7
11549 ; GFX90A-NEXT: ;;#ASMSTART
11550 ; GFX90A-NEXT: ; use s[8:10]
11551 ; GFX90A-NEXT: ;;#ASMEND
11552 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11554 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_3:
11556 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11557 ; GFX940-NEXT: ;;#ASMSTART
11558 ; GFX940-NEXT: ; def s[0:3]
11559 ; GFX940-NEXT: ;;#ASMEND
11560 ; GFX940-NEXT: ;;#ASMSTART
11561 ; GFX940-NEXT: ; def s[4:7]
11562 ; GFX940-NEXT: ;;#ASMEND
11563 ; GFX940-NEXT: s_mov_b32 s8, s7
11564 ; GFX940-NEXT: s_mov_b32 s9, s4
11565 ; GFX940-NEXT: s_mov_b32 s10, s3
11566 ; GFX940-NEXT: ;;#ASMSTART
11567 ; GFX940-NEXT: ; use s[8:10]
11568 ; GFX940-NEXT: ;;#ASMEND
11569 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11570 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11571 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11572 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 3>
11573 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11577 define void @s_shuffle_v3p3_v4p3__7_5_3() {
11578 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_3:
11580 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11581 ; GFX900-NEXT: ;;#ASMSTART
11582 ; GFX900-NEXT: ; def s[8:11]
11583 ; GFX900-NEXT: ;;#ASMEND
11584 ; GFX900-NEXT: ;;#ASMSTART
11585 ; GFX900-NEXT: ; def s[4:7]
11586 ; GFX900-NEXT: ;;#ASMEND
11587 ; GFX900-NEXT: s_mov_b32 s8, s11
11588 ; GFX900-NEXT: s_mov_b32 s10, s7
11589 ; GFX900-NEXT: ;;#ASMSTART
11590 ; GFX900-NEXT: ; use s[8:10]
11591 ; GFX900-NEXT: ;;#ASMEND
11592 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11594 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_3:
11596 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11597 ; GFX90A-NEXT: ;;#ASMSTART
11598 ; GFX90A-NEXT: ; def s[8:11]
11599 ; GFX90A-NEXT: ;;#ASMEND
11600 ; GFX90A-NEXT: ;;#ASMSTART
11601 ; GFX90A-NEXT: ; def s[4:7]
11602 ; GFX90A-NEXT: ;;#ASMEND
11603 ; GFX90A-NEXT: s_mov_b32 s8, s11
11604 ; GFX90A-NEXT: s_mov_b32 s10, s7
11605 ; GFX90A-NEXT: ;;#ASMSTART
11606 ; GFX90A-NEXT: ; use s[8:10]
11607 ; GFX90A-NEXT: ;;#ASMEND
11608 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11610 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_5_3:
11612 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11613 ; GFX940-NEXT: ;;#ASMSTART
11614 ; GFX940-NEXT: ; def s[8:11]
11615 ; GFX940-NEXT: ;;#ASMEND
11616 ; GFX940-NEXT: ;;#ASMSTART
11617 ; GFX940-NEXT: ; def s[0:3]
11618 ; GFX940-NEXT: ;;#ASMEND
11619 ; GFX940-NEXT: s_mov_b32 s8, s11
11620 ; GFX940-NEXT: s_mov_b32 s10, s3
11621 ; GFX940-NEXT: ;;#ASMSTART
11622 ; GFX940-NEXT: ; use s[8:10]
11623 ; GFX940-NEXT: ;;#ASMEND
11624 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11625 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11626 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11627 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 3>
11628 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11632 define void @s_shuffle_v3p3_v4p3__7_6_3() {
11633 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_3:
11635 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11636 ; GFX900-NEXT: ;;#ASMSTART
11637 ; GFX900-NEXT: ; def s[8:11]
11638 ; GFX900-NEXT: ;;#ASMEND
11639 ; GFX900-NEXT: ;;#ASMSTART
11640 ; GFX900-NEXT: ; def s[4:7]
11641 ; GFX900-NEXT: ;;#ASMEND
11642 ; GFX900-NEXT: s_mov_b32 s8, s11
11643 ; GFX900-NEXT: s_mov_b32 s9, s10
11644 ; GFX900-NEXT: s_mov_b32 s10, s7
11645 ; GFX900-NEXT: ;;#ASMSTART
11646 ; GFX900-NEXT: ; use s[8:10]
11647 ; GFX900-NEXT: ;;#ASMEND
11648 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11650 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_3:
11652 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11653 ; GFX90A-NEXT: ;;#ASMSTART
11654 ; GFX90A-NEXT: ; def s[8:11]
11655 ; GFX90A-NEXT: ;;#ASMEND
11656 ; GFX90A-NEXT: ;;#ASMSTART
11657 ; GFX90A-NEXT: ; def s[4:7]
11658 ; GFX90A-NEXT: ;;#ASMEND
11659 ; GFX90A-NEXT: s_mov_b32 s8, s11
11660 ; GFX90A-NEXT: s_mov_b32 s9, s10
11661 ; GFX90A-NEXT: s_mov_b32 s10, s7
11662 ; GFX90A-NEXT: ;;#ASMSTART
11663 ; GFX90A-NEXT: ; use s[8:10]
11664 ; GFX90A-NEXT: ;;#ASMEND
11665 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11667 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_6_3:
11669 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11670 ; GFX940-NEXT: ;;#ASMSTART
11671 ; GFX940-NEXT: ; def s[0:3]
11672 ; GFX940-NEXT: ;;#ASMEND
11673 ; GFX940-NEXT: ;;#ASMSTART
11674 ; GFX940-NEXT: ; def s[4:7]
11675 ; GFX940-NEXT: ;;#ASMEND
11676 ; GFX940-NEXT: s_mov_b32 s8, s7
11677 ; GFX940-NEXT: s_mov_b32 s9, s6
11678 ; GFX940-NEXT: s_mov_b32 s10, s3
11679 ; GFX940-NEXT: ;;#ASMSTART
11680 ; GFX940-NEXT: ; use s[8:10]
11681 ; GFX940-NEXT: ;;#ASMEND
11682 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11683 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11684 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11685 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 3>
11686 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11690 define void @s_shuffle_v3p3_v4p3__u_4_4() {
11691 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_4_4:
11693 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11694 ; GFX9-NEXT: ;;#ASMSTART
11695 ; GFX9-NEXT: ; use s[8:10]
11696 ; GFX9-NEXT: ;;#ASMEND
11697 ; GFX9-NEXT: s_setpc_b64 s[30:31]
11698 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11699 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 4, i32 4>
11700 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11704 define void @s_shuffle_v3p3_v4p3__0_4_4() {
11705 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_4_4:
11707 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11708 ; GFX900-NEXT: ;;#ASMSTART
11709 ; GFX900-NEXT: ; def s[8:11]
11710 ; GFX900-NEXT: ;;#ASMEND
11711 ; GFX900-NEXT: ;;#ASMSTART
11712 ; GFX900-NEXT: ; use s[8:10]
11713 ; GFX900-NEXT: ;;#ASMEND
11714 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11716 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_4_4:
11718 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11719 ; GFX90A-NEXT: ;;#ASMSTART
11720 ; GFX90A-NEXT: ; def s[8:11]
11721 ; GFX90A-NEXT: ;;#ASMEND
11722 ; GFX90A-NEXT: ;;#ASMSTART
11723 ; GFX90A-NEXT: ; use s[8:10]
11724 ; GFX90A-NEXT: ;;#ASMEND
11725 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11727 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__0_4_4:
11729 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11730 ; GFX940-NEXT: ;;#ASMSTART
11731 ; GFX940-NEXT: ; def s[8:11]
11732 ; GFX940-NEXT: ;;#ASMEND
11733 ; GFX940-NEXT: s_nop 0
11734 ; GFX940-NEXT: ;;#ASMSTART
11735 ; GFX940-NEXT: ; use s[8:10]
11736 ; GFX940-NEXT: ;;#ASMEND
11737 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11738 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11739 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 4, i32 4>
11740 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11744 define void @s_shuffle_v3p3_v4p3__1_4_4() {
11745 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_4_4:
11747 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11748 ; GFX900-NEXT: ;;#ASMSTART
11749 ; GFX900-NEXT: ; def s[4:7]
11750 ; GFX900-NEXT: ;;#ASMEND
11751 ; GFX900-NEXT: s_mov_b32 s8, s5
11752 ; GFX900-NEXT: ;;#ASMSTART
11753 ; GFX900-NEXT: ; use s[8:10]
11754 ; GFX900-NEXT: ;;#ASMEND
11755 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11757 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_4_4:
11759 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11760 ; GFX90A-NEXT: ;;#ASMSTART
11761 ; GFX90A-NEXT: ; def s[4:7]
11762 ; GFX90A-NEXT: ;;#ASMEND
11763 ; GFX90A-NEXT: s_mov_b32 s8, s5
11764 ; GFX90A-NEXT: ;;#ASMSTART
11765 ; GFX90A-NEXT: ; use s[8:10]
11766 ; GFX90A-NEXT: ;;#ASMEND
11767 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11769 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__1_4_4:
11771 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11772 ; GFX940-NEXT: ;;#ASMSTART
11773 ; GFX940-NEXT: ; def s[0:3]
11774 ; GFX940-NEXT: ;;#ASMEND
11775 ; GFX940-NEXT: s_mov_b32 s8, s1
11776 ; GFX940-NEXT: ;;#ASMSTART
11777 ; GFX940-NEXT: ; use s[8:10]
11778 ; GFX940-NEXT: ;;#ASMEND
11779 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11780 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11781 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 4, i32 4>
11782 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11786 define void @s_shuffle_v3p3_v4p3__2_4_4() {
11787 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_4_4:
11789 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11790 ; GFX900-NEXT: ;;#ASMSTART
11791 ; GFX900-NEXT: ; def s[4:7]
11792 ; GFX900-NEXT: ;;#ASMEND
11793 ; GFX900-NEXT: s_mov_b32 s8, s6
11794 ; GFX900-NEXT: ;;#ASMSTART
11795 ; GFX900-NEXT: ; use s[8:10]
11796 ; GFX900-NEXT: ;;#ASMEND
11797 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11799 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_4_4:
11801 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11802 ; GFX90A-NEXT: ;;#ASMSTART
11803 ; GFX90A-NEXT: ; def s[4:7]
11804 ; GFX90A-NEXT: ;;#ASMEND
11805 ; GFX90A-NEXT: s_mov_b32 s8, s6
11806 ; GFX90A-NEXT: ;;#ASMSTART
11807 ; GFX90A-NEXT: ; use s[8:10]
11808 ; GFX90A-NEXT: ;;#ASMEND
11809 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11811 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__2_4_4:
11813 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11814 ; GFX940-NEXT: ;;#ASMSTART
11815 ; GFX940-NEXT: ; def s[0:3]
11816 ; GFX940-NEXT: ;;#ASMEND
11817 ; GFX940-NEXT: s_mov_b32 s8, s2
11818 ; GFX940-NEXT: ;;#ASMSTART
11819 ; GFX940-NEXT: ; use s[8:10]
11820 ; GFX940-NEXT: ;;#ASMEND
11821 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11822 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11823 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 4, i32 4>
11824 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11828 define void @s_shuffle_v3p3_v4p3__3_4_4() {
11829 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_4_4:
11831 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11832 ; GFX900-NEXT: ;;#ASMSTART
11833 ; GFX900-NEXT: ; def s[4:7]
11834 ; GFX900-NEXT: ;;#ASMEND
11835 ; GFX900-NEXT: s_mov_b32 s8, s7
11836 ; GFX900-NEXT: ;;#ASMSTART
11837 ; GFX900-NEXT: ; use s[8:10]
11838 ; GFX900-NEXT: ;;#ASMEND
11839 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11841 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_4_4:
11843 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11844 ; GFX90A-NEXT: ;;#ASMSTART
11845 ; GFX90A-NEXT: ; def s[4:7]
11846 ; GFX90A-NEXT: ;;#ASMEND
11847 ; GFX90A-NEXT: s_mov_b32 s8, s7
11848 ; GFX90A-NEXT: ;;#ASMSTART
11849 ; GFX90A-NEXT: ; use s[8:10]
11850 ; GFX90A-NEXT: ;;#ASMEND
11851 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11853 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__3_4_4:
11855 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11856 ; GFX940-NEXT: ;;#ASMSTART
11857 ; GFX940-NEXT: ; def s[0:3]
11858 ; GFX940-NEXT: ;;#ASMEND
11859 ; GFX940-NEXT: s_mov_b32 s8, s3
11860 ; GFX940-NEXT: ;;#ASMSTART
11861 ; GFX940-NEXT: ; use s[8:10]
11862 ; GFX940-NEXT: ;;#ASMEND
11863 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11864 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11865 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 4, i32 4>
11866 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11870 define void @s_shuffle_v3p3_v4p3__4_4_4() {
11871 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_4_4:
11873 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11874 ; GFX9-NEXT: ;;#ASMSTART
11875 ; GFX9-NEXT: ; use s[8:10]
11876 ; GFX9-NEXT: ;;#ASMEND
11877 ; GFX9-NEXT: s_setpc_b64 s[30:31]
11878 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11879 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 4, i32 4>
11880 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11884 define void @s_shuffle_v3p3_v4p3__5_4_4() {
11885 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_4_4:
11887 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11888 ; GFX900-NEXT: ;;#ASMSTART
11889 ; GFX900-NEXT: ; def s[4:7]
11890 ; GFX900-NEXT: ;;#ASMEND
11891 ; GFX900-NEXT: s_mov_b32 s8, s5
11892 ; GFX900-NEXT: s_mov_b32 s9, s4
11893 ; GFX900-NEXT: s_mov_b32 s10, s4
11894 ; GFX900-NEXT: ;;#ASMSTART
11895 ; GFX900-NEXT: ; use s[8:10]
11896 ; GFX900-NEXT: ;;#ASMEND
11897 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11899 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_4_4:
11901 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11902 ; GFX90A-NEXT: ;;#ASMSTART
11903 ; GFX90A-NEXT: ; def s[4:7]
11904 ; GFX90A-NEXT: ;;#ASMEND
11905 ; GFX90A-NEXT: s_mov_b32 s8, s5
11906 ; GFX90A-NEXT: s_mov_b32 s9, s4
11907 ; GFX90A-NEXT: s_mov_b32 s10, s4
11908 ; GFX90A-NEXT: ;;#ASMSTART
11909 ; GFX90A-NEXT: ; use s[8:10]
11910 ; GFX90A-NEXT: ;;#ASMEND
11911 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11913 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__5_4_4:
11915 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11916 ; GFX940-NEXT: ;;#ASMSTART
11917 ; GFX940-NEXT: ; def s[0:3]
11918 ; GFX940-NEXT: ;;#ASMEND
11919 ; GFX940-NEXT: s_mov_b32 s8, s1
11920 ; GFX940-NEXT: s_mov_b32 s9, s0
11921 ; GFX940-NEXT: s_mov_b32 s10, s0
11922 ; GFX940-NEXT: ;;#ASMSTART
11923 ; GFX940-NEXT: ; use s[8:10]
11924 ; GFX940-NEXT: ;;#ASMEND
11925 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11926 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11927 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11928 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 4, i32 4>
11929 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11933 define void @s_shuffle_v3p3_v4p3__6_4_4() {
11934 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_4_4:
11936 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11937 ; GFX900-NEXT: ;;#ASMSTART
11938 ; GFX900-NEXT: ; def s[4:7]
11939 ; GFX900-NEXT: ;;#ASMEND
11940 ; GFX900-NEXT: s_mov_b32 s8, s6
11941 ; GFX900-NEXT: s_mov_b32 s9, s4
11942 ; GFX900-NEXT: s_mov_b32 s10, s4
11943 ; GFX900-NEXT: ;;#ASMSTART
11944 ; GFX900-NEXT: ; use s[8:10]
11945 ; GFX900-NEXT: ;;#ASMEND
11946 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11948 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_4_4:
11950 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11951 ; GFX90A-NEXT: ;;#ASMSTART
11952 ; GFX90A-NEXT: ; def s[4:7]
11953 ; GFX90A-NEXT: ;;#ASMEND
11954 ; GFX90A-NEXT: s_mov_b32 s8, s6
11955 ; GFX90A-NEXT: s_mov_b32 s9, s4
11956 ; GFX90A-NEXT: s_mov_b32 s10, s4
11957 ; GFX90A-NEXT: ;;#ASMSTART
11958 ; GFX90A-NEXT: ; use s[8:10]
11959 ; GFX90A-NEXT: ;;#ASMEND
11960 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
11962 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__6_4_4:
11964 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11965 ; GFX940-NEXT: ;;#ASMSTART
11966 ; GFX940-NEXT: ; def s[0:3]
11967 ; GFX940-NEXT: ;;#ASMEND
11968 ; GFX940-NEXT: s_mov_b32 s8, s2
11969 ; GFX940-NEXT: s_mov_b32 s9, s0
11970 ; GFX940-NEXT: s_mov_b32 s10, s0
11971 ; GFX940-NEXT: ;;#ASMSTART
11972 ; GFX940-NEXT: ; use s[8:10]
11973 ; GFX940-NEXT: ;;#ASMEND
11974 ; GFX940-NEXT: s_setpc_b64 s[30:31]
11975 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11976 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
11977 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 4, i32 4>
11978 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
11982 define void @s_shuffle_v3p3_v4p3__7_4_4() {
11983 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_4:
11985 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11986 ; GFX900-NEXT: ;;#ASMSTART
11987 ; GFX900-NEXT: ; def s[4:7]
11988 ; GFX900-NEXT: ;;#ASMEND
11989 ; GFX900-NEXT: s_mov_b32 s8, s7
11990 ; GFX900-NEXT: s_mov_b32 s9, s4
11991 ; GFX900-NEXT: s_mov_b32 s10, s4
11992 ; GFX900-NEXT: ;;#ASMSTART
11993 ; GFX900-NEXT: ; use s[8:10]
11994 ; GFX900-NEXT: ;;#ASMEND
11995 ; GFX900-NEXT: s_setpc_b64 s[30:31]
11997 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_4:
11999 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12000 ; GFX90A-NEXT: ;;#ASMSTART
12001 ; GFX90A-NEXT: ; def s[4:7]
12002 ; GFX90A-NEXT: ;;#ASMEND
12003 ; GFX90A-NEXT: s_mov_b32 s8, s7
12004 ; GFX90A-NEXT: s_mov_b32 s9, s4
12005 ; GFX90A-NEXT: s_mov_b32 s10, s4
12006 ; GFX90A-NEXT: ;;#ASMSTART
12007 ; GFX90A-NEXT: ; use s[8:10]
12008 ; GFX90A-NEXT: ;;#ASMEND
12009 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12011 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_4:
12013 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12014 ; GFX940-NEXT: ;;#ASMSTART
12015 ; GFX940-NEXT: ; def s[0:3]
12016 ; GFX940-NEXT: ;;#ASMEND
12017 ; GFX940-NEXT: s_mov_b32 s8, s3
12018 ; GFX940-NEXT: s_mov_b32 s9, s0
12019 ; GFX940-NEXT: s_mov_b32 s10, s0
12020 ; GFX940-NEXT: ;;#ASMSTART
12021 ; GFX940-NEXT: ; use s[8:10]
12022 ; GFX940-NEXT: ;;#ASMEND
12023 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12024 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12025 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12026 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 4>
12027 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12031 define void @s_shuffle_v3p3_v4p3__7_u_4() {
12032 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_4:
12034 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12035 ; GFX900-NEXT: ;;#ASMSTART
12036 ; GFX900-NEXT: ; def s[4:7]
12037 ; GFX900-NEXT: ;;#ASMEND
12038 ; GFX900-NEXT: s_mov_b32 s8, s7
12039 ; GFX900-NEXT: s_mov_b32 s10, s4
12040 ; GFX900-NEXT: ;;#ASMSTART
12041 ; GFX900-NEXT: ; use s[8:10]
12042 ; GFX900-NEXT: ;;#ASMEND
12043 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12045 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_4:
12047 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12048 ; GFX90A-NEXT: ;;#ASMSTART
12049 ; GFX90A-NEXT: ; def s[4:7]
12050 ; GFX90A-NEXT: ;;#ASMEND
12051 ; GFX90A-NEXT: s_mov_b32 s8, s7
12052 ; GFX90A-NEXT: s_mov_b32 s10, s4
12053 ; GFX90A-NEXT: ;;#ASMSTART
12054 ; GFX90A-NEXT: ; use s[8:10]
12055 ; GFX90A-NEXT: ;;#ASMEND
12056 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12058 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_u_4:
12060 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12061 ; GFX940-NEXT: ;;#ASMSTART
12062 ; GFX940-NEXT: ; def s[0:3]
12063 ; GFX940-NEXT: ;;#ASMEND
12064 ; GFX940-NEXT: s_mov_b32 s8, s3
12065 ; GFX940-NEXT: s_mov_b32 s10, s0
12066 ; GFX940-NEXT: ;;#ASMSTART
12067 ; GFX940-NEXT: ; use s[8:10]
12068 ; GFX940-NEXT: ;;#ASMEND
12069 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12070 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12071 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12072 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 4>
12073 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12077 define void @s_shuffle_v3p3_v4p3__7_0_4() {
12078 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_4:
12080 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12081 ; GFX900-NEXT: ;;#ASMSTART
12082 ; GFX900-NEXT: ; def s[4:7]
12083 ; GFX900-NEXT: ;;#ASMEND
12084 ; GFX900-NEXT: ;;#ASMSTART
12085 ; GFX900-NEXT: ; def s[12:15]
12086 ; GFX900-NEXT: ;;#ASMEND
12087 ; GFX900-NEXT: s_mov_b32 s8, s15
12088 ; GFX900-NEXT: s_mov_b32 s9, s4
12089 ; GFX900-NEXT: s_mov_b32 s10, s12
12090 ; GFX900-NEXT: ;;#ASMSTART
12091 ; GFX900-NEXT: ; use s[8:10]
12092 ; GFX900-NEXT: ;;#ASMEND
12093 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12095 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_4:
12097 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12098 ; GFX90A-NEXT: ;;#ASMSTART
12099 ; GFX90A-NEXT: ; def s[4:7]
12100 ; GFX90A-NEXT: ;;#ASMEND
12101 ; GFX90A-NEXT: ;;#ASMSTART
12102 ; GFX90A-NEXT: ; def s[12:15]
12103 ; GFX90A-NEXT: ;;#ASMEND
12104 ; GFX90A-NEXT: s_mov_b32 s8, s15
12105 ; GFX90A-NEXT: s_mov_b32 s9, s4
12106 ; GFX90A-NEXT: s_mov_b32 s10, s12
12107 ; GFX90A-NEXT: ;;#ASMSTART
12108 ; GFX90A-NEXT: ; use s[8:10]
12109 ; GFX90A-NEXT: ;;#ASMEND
12110 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12112 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_4:
12114 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12115 ; GFX940-NEXT: ;;#ASMSTART
12116 ; GFX940-NEXT: ; def s[0:3]
12117 ; GFX940-NEXT: ;;#ASMEND
12118 ; GFX940-NEXT: ;;#ASMSTART
12119 ; GFX940-NEXT: ; def s[4:7]
12120 ; GFX940-NEXT: ;;#ASMEND
12121 ; GFX940-NEXT: s_mov_b32 s8, s7
12122 ; GFX940-NEXT: s_mov_b32 s9, s0
12123 ; GFX940-NEXT: s_mov_b32 s10, s4
12124 ; GFX940-NEXT: ;;#ASMSTART
12125 ; GFX940-NEXT: ; use s[8:10]
12126 ; GFX940-NEXT: ;;#ASMEND
12127 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12128 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12129 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12130 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 4>
12131 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12135 define void @s_shuffle_v3p3_v4p3__7_1_4() {
12136 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_4:
12138 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12139 ; GFX900-NEXT: ;;#ASMSTART
12140 ; GFX900-NEXT: ; def s[8:11]
12141 ; GFX900-NEXT: ;;#ASMEND
12142 ; GFX900-NEXT: ;;#ASMSTART
12143 ; GFX900-NEXT: ; def s[4:7]
12144 ; GFX900-NEXT: ;;#ASMEND
12145 ; GFX900-NEXT: s_mov_b32 s8, s7
12146 ; GFX900-NEXT: s_mov_b32 s10, s4
12147 ; GFX900-NEXT: ;;#ASMSTART
12148 ; GFX900-NEXT: ; use s[8:10]
12149 ; GFX900-NEXT: ;;#ASMEND
12150 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12152 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_4:
12154 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12155 ; GFX90A-NEXT: ;;#ASMSTART
12156 ; GFX90A-NEXT: ; def s[8:11]
12157 ; GFX90A-NEXT: ;;#ASMEND
12158 ; GFX90A-NEXT: ;;#ASMSTART
12159 ; GFX90A-NEXT: ; def s[4:7]
12160 ; GFX90A-NEXT: ;;#ASMEND
12161 ; GFX90A-NEXT: s_mov_b32 s8, s7
12162 ; GFX90A-NEXT: s_mov_b32 s10, s4
12163 ; GFX90A-NEXT: ;;#ASMSTART
12164 ; GFX90A-NEXT: ; use s[8:10]
12165 ; GFX90A-NEXT: ;;#ASMEND
12166 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12168 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_4:
12170 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12171 ; GFX940-NEXT: ;;#ASMSTART
12172 ; GFX940-NEXT: ; def s[8:11]
12173 ; GFX940-NEXT: ;;#ASMEND
12174 ; GFX940-NEXT: ;;#ASMSTART
12175 ; GFX940-NEXT: ; def s[0:3]
12176 ; GFX940-NEXT: ;;#ASMEND
12177 ; GFX940-NEXT: s_mov_b32 s8, s3
12178 ; GFX940-NEXT: s_mov_b32 s10, s0
12179 ; GFX940-NEXT: ;;#ASMSTART
12180 ; GFX940-NEXT: ; use s[8:10]
12181 ; GFX940-NEXT: ;;#ASMEND
12182 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12183 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12184 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12185 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 4>
12186 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12190 define void @s_shuffle_v3p3_v4p3__7_2_4() {
12191 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_4:
12193 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12194 ; GFX900-NEXT: ;;#ASMSTART
12195 ; GFX900-NEXT: ; def s[4:7]
12196 ; GFX900-NEXT: ;;#ASMEND
12197 ; GFX900-NEXT: ;;#ASMSTART
12198 ; GFX900-NEXT: ; def s[12:15]
12199 ; GFX900-NEXT: ;;#ASMEND
12200 ; GFX900-NEXT: s_mov_b32 s8, s15
12201 ; GFX900-NEXT: s_mov_b32 s9, s6
12202 ; GFX900-NEXT: s_mov_b32 s10, s12
12203 ; GFX900-NEXT: ;;#ASMSTART
12204 ; GFX900-NEXT: ; use s[8:10]
12205 ; GFX900-NEXT: ;;#ASMEND
12206 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12208 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_4:
12210 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12211 ; GFX90A-NEXT: ;;#ASMSTART
12212 ; GFX90A-NEXT: ; def s[4:7]
12213 ; GFX90A-NEXT: ;;#ASMEND
12214 ; GFX90A-NEXT: ;;#ASMSTART
12215 ; GFX90A-NEXT: ; def s[12:15]
12216 ; GFX90A-NEXT: ;;#ASMEND
12217 ; GFX90A-NEXT: s_mov_b32 s8, s15
12218 ; GFX90A-NEXT: s_mov_b32 s9, s6
12219 ; GFX90A-NEXT: s_mov_b32 s10, s12
12220 ; GFX90A-NEXT: ;;#ASMSTART
12221 ; GFX90A-NEXT: ; use s[8:10]
12222 ; GFX90A-NEXT: ;;#ASMEND
12223 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12225 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_4:
12227 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12228 ; GFX940-NEXT: ;;#ASMSTART
12229 ; GFX940-NEXT: ; def s[0:3]
12230 ; GFX940-NEXT: ;;#ASMEND
12231 ; GFX940-NEXT: ;;#ASMSTART
12232 ; GFX940-NEXT: ; def s[4:7]
12233 ; GFX940-NEXT: ;;#ASMEND
12234 ; GFX940-NEXT: s_mov_b32 s8, s7
12235 ; GFX940-NEXT: s_mov_b32 s9, s2
12236 ; GFX940-NEXT: s_mov_b32 s10, s4
12237 ; GFX940-NEXT: ;;#ASMSTART
12238 ; GFX940-NEXT: ; use s[8:10]
12239 ; GFX940-NEXT: ;;#ASMEND
12240 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12241 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12242 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12243 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 4>
12244 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12248 define void @s_shuffle_v3p3_v4p3__7_3_4() {
12249 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_4:
12251 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12252 ; GFX900-NEXT: ;;#ASMSTART
12253 ; GFX900-NEXT: ; def s[4:7]
12254 ; GFX900-NEXT: ;;#ASMEND
12255 ; GFX900-NEXT: ;;#ASMSTART
12256 ; GFX900-NEXT: ; def s[12:15]
12257 ; GFX900-NEXT: ;;#ASMEND
12258 ; GFX900-NEXT: s_mov_b32 s8, s15
12259 ; GFX900-NEXT: s_mov_b32 s9, s7
12260 ; GFX900-NEXT: s_mov_b32 s10, s12
12261 ; GFX900-NEXT: ;;#ASMSTART
12262 ; GFX900-NEXT: ; use s[8:10]
12263 ; GFX900-NEXT: ;;#ASMEND
12264 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12266 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_4:
12268 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12269 ; GFX90A-NEXT: ;;#ASMSTART
12270 ; GFX90A-NEXT: ; def s[4:7]
12271 ; GFX90A-NEXT: ;;#ASMEND
12272 ; GFX90A-NEXT: ;;#ASMSTART
12273 ; GFX90A-NEXT: ; def s[12:15]
12274 ; GFX90A-NEXT: ;;#ASMEND
12275 ; GFX90A-NEXT: s_mov_b32 s8, s15
12276 ; GFX90A-NEXT: s_mov_b32 s9, s7
12277 ; GFX90A-NEXT: s_mov_b32 s10, s12
12278 ; GFX90A-NEXT: ;;#ASMSTART
12279 ; GFX90A-NEXT: ; use s[8:10]
12280 ; GFX90A-NEXT: ;;#ASMEND
12281 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12283 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_4:
12285 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12286 ; GFX940-NEXT: ;;#ASMSTART
12287 ; GFX940-NEXT: ; def s[0:3]
12288 ; GFX940-NEXT: ;;#ASMEND
12289 ; GFX940-NEXT: ;;#ASMSTART
12290 ; GFX940-NEXT: ; def s[4:7]
12291 ; GFX940-NEXT: ;;#ASMEND
12292 ; GFX940-NEXT: s_mov_b32 s8, s7
12293 ; GFX940-NEXT: s_mov_b32 s9, s3
12294 ; GFX940-NEXT: s_mov_b32 s10, s4
12295 ; GFX940-NEXT: ;;#ASMSTART
12296 ; GFX940-NEXT: ; use s[8:10]
12297 ; GFX940-NEXT: ;;#ASMEND
12298 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12299 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12300 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12301 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 4>
12302 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12306 define void @s_shuffle_v3p3_v4p3__7_5_4() {
12307 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_4:
12309 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12310 ; GFX900-NEXT: ;;#ASMSTART
12311 ; GFX900-NEXT: ; def s[4:7]
12312 ; GFX900-NEXT: ;;#ASMEND
12313 ; GFX900-NEXT: s_mov_b32 s8, s7
12314 ; GFX900-NEXT: s_mov_b32 s9, s5
12315 ; GFX900-NEXT: s_mov_b32 s10, s4
12316 ; GFX900-NEXT: ;;#ASMSTART
12317 ; GFX900-NEXT: ; use s[8:10]
12318 ; GFX900-NEXT: ;;#ASMEND
12319 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12321 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_4:
12323 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12324 ; GFX90A-NEXT: ;;#ASMSTART
12325 ; GFX90A-NEXT: ; def s[4:7]
12326 ; GFX90A-NEXT: ;;#ASMEND
12327 ; GFX90A-NEXT: s_mov_b32 s8, s7
12328 ; GFX90A-NEXT: s_mov_b32 s9, s5
12329 ; GFX90A-NEXT: s_mov_b32 s10, s4
12330 ; GFX90A-NEXT: ;;#ASMSTART
12331 ; GFX90A-NEXT: ; use s[8:10]
12332 ; GFX90A-NEXT: ;;#ASMEND
12333 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12335 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_5_4:
12337 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12338 ; GFX940-NEXT: ;;#ASMSTART
12339 ; GFX940-NEXT: ; def s[0:3]
12340 ; GFX940-NEXT: ;;#ASMEND
12341 ; GFX940-NEXT: s_mov_b32 s8, s3
12342 ; GFX940-NEXT: s_mov_b32 s9, s1
12343 ; GFX940-NEXT: s_mov_b32 s10, s0
12344 ; GFX940-NEXT: ;;#ASMSTART
12345 ; GFX940-NEXT: ; use s[8:10]
12346 ; GFX940-NEXT: ;;#ASMEND
12347 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12348 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12349 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12350 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 4>
12351 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12355 define void @s_shuffle_v3p3_v4p3__7_6_4() {
12356 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_4:
12358 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12359 ; GFX900-NEXT: ;;#ASMSTART
12360 ; GFX900-NEXT: ; def s[4:7]
12361 ; GFX900-NEXT: ;;#ASMEND
12362 ; GFX900-NEXT: s_mov_b32 s8, s7
12363 ; GFX900-NEXT: s_mov_b32 s9, s6
12364 ; GFX900-NEXT: s_mov_b32 s10, s4
12365 ; GFX900-NEXT: ;;#ASMSTART
12366 ; GFX900-NEXT: ; use s[8:10]
12367 ; GFX900-NEXT: ;;#ASMEND
12368 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12370 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_4:
12372 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12373 ; GFX90A-NEXT: ;;#ASMSTART
12374 ; GFX90A-NEXT: ; def s[4:7]
12375 ; GFX90A-NEXT: ;;#ASMEND
12376 ; GFX90A-NEXT: s_mov_b32 s8, s7
12377 ; GFX90A-NEXT: s_mov_b32 s9, s6
12378 ; GFX90A-NEXT: s_mov_b32 s10, s4
12379 ; GFX90A-NEXT: ;;#ASMSTART
12380 ; GFX90A-NEXT: ; use s[8:10]
12381 ; GFX90A-NEXT: ;;#ASMEND
12382 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12384 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_6_4:
12386 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12387 ; GFX940-NEXT: ;;#ASMSTART
12388 ; GFX940-NEXT: ; def s[0:3]
12389 ; GFX940-NEXT: ;;#ASMEND
12390 ; GFX940-NEXT: s_mov_b32 s8, s3
12391 ; GFX940-NEXT: s_mov_b32 s9, s2
12392 ; GFX940-NEXT: s_mov_b32 s10, s0
12393 ; GFX940-NEXT: ;;#ASMSTART
12394 ; GFX940-NEXT: ; use s[8:10]
12395 ; GFX940-NEXT: ;;#ASMEND
12396 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12397 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12398 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12399 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 4>
12400 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12404 define void @s_shuffle_v3p3_v4p3__u_5_5() {
12405 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_5_5:
12407 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12408 ; GFX9-NEXT: ;;#ASMSTART
12409 ; GFX9-NEXT: ; def s[8:11]
12410 ; GFX9-NEXT: ;;#ASMEND
12411 ; GFX9-NEXT: s_mov_b32 s10, s9
12412 ; GFX9-NEXT: ;;#ASMSTART
12413 ; GFX9-NEXT: ; use s[8:10]
12414 ; GFX9-NEXT: ;;#ASMEND
12415 ; GFX9-NEXT: s_setpc_b64 s[30:31]
12416 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12417 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12418 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>
12419 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12423 define void @s_shuffle_v3p3_v4p3__0_5_5() {
12424 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_5_5:
12426 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12427 ; GFX900-NEXT: ;;#ASMSTART
12428 ; GFX900-NEXT: ; def s[8:11]
12429 ; GFX900-NEXT: ;;#ASMEND
12430 ; GFX900-NEXT: ;;#ASMSTART
12431 ; GFX900-NEXT: ; def s[4:7]
12432 ; GFX900-NEXT: ;;#ASMEND
12433 ; GFX900-NEXT: s_mov_b32 s9, s5
12434 ; GFX900-NEXT: s_mov_b32 s10, s5
12435 ; GFX900-NEXT: ;;#ASMSTART
12436 ; GFX900-NEXT: ; use s[8:10]
12437 ; GFX900-NEXT: ;;#ASMEND
12438 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12440 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_5_5:
12442 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12443 ; GFX90A-NEXT: ;;#ASMSTART
12444 ; GFX90A-NEXT: ; def s[8:11]
12445 ; GFX90A-NEXT: ;;#ASMEND
12446 ; GFX90A-NEXT: ;;#ASMSTART
12447 ; GFX90A-NEXT: ; def s[4:7]
12448 ; GFX90A-NEXT: ;;#ASMEND
12449 ; GFX90A-NEXT: s_mov_b32 s9, s5
12450 ; GFX90A-NEXT: s_mov_b32 s10, s5
12451 ; GFX90A-NEXT: ;;#ASMSTART
12452 ; GFX90A-NEXT: ; use s[8:10]
12453 ; GFX90A-NEXT: ;;#ASMEND
12454 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12456 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__0_5_5:
12458 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12459 ; GFX940-NEXT: ;;#ASMSTART
12460 ; GFX940-NEXT: ; def s[8:11]
12461 ; GFX940-NEXT: ;;#ASMEND
12462 ; GFX940-NEXT: ;;#ASMSTART
12463 ; GFX940-NEXT: ; def s[0:3]
12464 ; GFX940-NEXT: ;;#ASMEND
12465 ; GFX940-NEXT: s_mov_b32 s9, s1
12466 ; GFX940-NEXT: s_mov_b32 s10, s1
12467 ; GFX940-NEXT: ;;#ASMSTART
12468 ; GFX940-NEXT: ; use s[8:10]
12469 ; GFX940-NEXT: ;;#ASMEND
12470 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12471 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12472 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12473 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 5, i32 5>
12474 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12478 define void @s_shuffle_v3p3_v4p3__1_5_5() {
12479 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_5_5:
12481 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12482 ; GFX900-NEXT: ;;#ASMSTART
12483 ; GFX900-NEXT: ; def s[8:11]
12484 ; GFX900-NEXT: ;;#ASMEND
12485 ; GFX900-NEXT: ;;#ASMSTART
12486 ; GFX900-NEXT: ; def s[4:7]
12487 ; GFX900-NEXT: ;;#ASMEND
12488 ; GFX900-NEXT: s_mov_b32 s8, s5
12489 ; GFX900-NEXT: s_mov_b32 s10, s9
12490 ; GFX900-NEXT: ;;#ASMSTART
12491 ; GFX900-NEXT: ; use s[8:10]
12492 ; GFX900-NEXT: ;;#ASMEND
12493 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12495 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_5_5:
12497 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12498 ; GFX90A-NEXT: ;;#ASMSTART
12499 ; GFX90A-NEXT: ; def s[8:11]
12500 ; GFX90A-NEXT: ;;#ASMEND
12501 ; GFX90A-NEXT: ;;#ASMSTART
12502 ; GFX90A-NEXT: ; def s[4:7]
12503 ; GFX90A-NEXT: ;;#ASMEND
12504 ; GFX90A-NEXT: s_mov_b32 s8, s5
12505 ; GFX90A-NEXT: s_mov_b32 s10, s9
12506 ; GFX90A-NEXT: ;;#ASMSTART
12507 ; GFX90A-NEXT: ; use s[8:10]
12508 ; GFX90A-NEXT: ;;#ASMEND
12509 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12511 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__1_5_5:
12513 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12514 ; GFX940-NEXT: ;;#ASMSTART
12515 ; GFX940-NEXT: ; def s[8:11]
12516 ; GFX940-NEXT: ;;#ASMEND
12517 ; GFX940-NEXT: ;;#ASMSTART
12518 ; GFX940-NEXT: ; def s[0:3]
12519 ; GFX940-NEXT: ;;#ASMEND
12520 ; GFX940-NEXT: s_mov_b32 s8, s1
12521 ; GFX940-NEXT: s_mov_b32 s10, s9
12522 ; GFX940-NEXT: ;;#ASMSTART
12523 ; GFX940-NEXT: ; use s[8:10]
12524 ; GFX940-NEXT: ;;#ASMEND
12525 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12526 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12527 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12528 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 5, i32 5>
12529 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12533 define void @s_shuffle_v3p3_v4p3__2_5_5() {
12534 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_5_5:
12536 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12537 ; GFX900-NEXT: ;;#ASMSTART
12538 ; GFX900-NEXT: ; def s[8:11]
12539 ; GFX900-NEXT: ;;#ASMEND
12540 ; GFX900-NEXT: ;;#ASMSTART
12541 ; GFX900-NEXT: ; def s[4:7]
12542 ; GFX900-NEXT: ;;#ASMEND
12543 ; GFX900-NEXT: s_mov_b32 s8, s6
12544 ; GFX900-NEXT: s_mov_b32 s10, s9
12545 ; GFX900-NEXT: ;;#ASMSTART
12546 ; GFX900-NEXT: ; use s[8:10]
12547 ; GFX900-NEXT: ;;#ASMEND
12548 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12550 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_5_5:
12552 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12553 ; GFX90A-NEXT: ;;#ASMSTART
12554 ; GFX90A-NEXT: ; def s[8:11]
12555 ; GFX90A-NEXT: ;;#ASMEND
12556 ; GFX90A-NEXT: ;;#ASMSTART
12557 ; GFX90A-NEXT: ; def s[4:7]
12558 ; GFX90A-NEXT: ;;#ASMEND
12559 ; GFX90A-NEXT: s_mov_b32 s8, s6
12560 ; GFX90A-NEXT: s_mov_b32 s10, s9
12561 ; GFX90A-NEXT: ;;#ASMSTART
12562 ; GFX90A-NEXT: ; use s[8:10]
12563 ; GFX90A-NEXT: ;;#ASMEND
12564 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12566 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__2_5_5:
12568 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12569 ; GFX940-NEXT: ;;#ASMSTART
12570 ; GFX940-NEXT: ; def s[8:11]
12571 ; GFX940-NEXT: ;;#ASMEND
12572 ; GFX940-NEXT: ;;#ASMSTART
12573 ; GFX940-NEXT: ; def s[0:3]
12574 ; GFX940-NEXT: ;;#ASMEND
12575 ; GFX940-NEXT: s_mov_b32 s8, s2
12576 ; GFX940-NEXT: s_mov_b32 s10, s9
12577 ; GFX940-NEXT: ;;#ASMSTART
12578 ; GFX940-NEXT: ; use s[8:10]
12579 ; GFX940-NEXT: ;;#ASMEND
12580 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12581 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12582 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12583 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 5, i32 5>
12584 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12588 define void @s_shuffle_v3p3_v4p3__3_5_5() {
12589 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_5_5:
12591 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12592 ; GFX900-NEXT: ;;#ASMSTART
12593 ; GFX900-NEXT: ; def s[8:11]
12594 ; GFX900-NEXT: ;;#ASMEND
12595 ; GFX900-NEXT: ;;#ASMSTART
12596 ; GFX900-NEXT: ; def s[4:7]
12597 ; GFX900-NEXT: ;;#ASMEND
12598 ; GFX900-NEXT: s_mov_b32 s8, s7
12599 ; GFX900-NEXT: s_mov_b32 s10, s9
12600 ; GFX900-NEXT: ;;#ASMSTART
12601 ; GFX900-NEXT: ; use s[8:10]
12602 ; GFX900-NEXT: ;;#ASMEND
12603 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12605 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_5_5:
12607 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12608 ; GFX90A-NEXT: ;;#ASMSTART
12609 ; GFX90A-NEXT: ; def s[8:11]
12610 ; GFX90A-NEXT: ;;#ASMEND
12611 ; GFX90A-NEXT: ;;#ASMSTART
12612 ; GFX90A-NEXT: ; def s[4:7]
12613 ; GFX90A-NEXT: ;;#ASMEND
12614 ; GFX90A-NEXT: s_mov_b32 s8, s7
12615 ; GFX90A-NEXT: s_mov_b32 s10, s9
12616 ; GFX90A-NEXT: ;;#ASMSTART
12617 ; GFX90A-NEXT: ; use s[8:10]
12618 ; GFX90A-NEXT: ;;#ASMEND
12619 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12621 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__3_5_5:
12623 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12624 ; GFX940-NEXT: ;;#ASMSTART
12625 ; GFX940-NEXT: ; def s[8:11]
12626 ; GFX940-NEXT: ;;#ASMEND
12627 ; GFX940-NEXT: ;;#ASMSTART
12628 ; GFX940-NEXT: ; def s[0:3]
12629 ; GFX940-NEXT: ;;#ASMEND
12630 ; GFX940-NEXT: s_mov_b32 s8, s3
12631 ; GFX940-NEXT: s_mov_b32 s10, s9
12632 ; GFX940-NEXT: ;;#ASMSTART
12633 ; GFX940-NEXT: ; use s[8:10]
12634 ; GFX940-NEXT: ;;#ASMEND
12635 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12636 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12637 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12638 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 5, i32 5>
12639 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12643 define void @s_shuffle_v3p3_v4p3__4_5_5() {
12644 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_5_5:
12646 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12647 ; GFX9-NEXT: ;;#ASMSTART
12648 ; GFX9-NEXT: ; def s[8:11]
12649 ; GFX9-NEXT: ;;#ASMEND
12650 ; GFX9-NEXT: s_mov_b32 s10, s9
12651 ; GFX9-NEXT: ;;#ASMSTART
12652 ; GFX9-NEXT: ; use s[8:10]
12653 ; GFX9-NEXT: ;;#ASMEND
12654 ; GFX9-NEXT: s_setpc_b64 s[30:31]
12655 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12656 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12657 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 5, i32 5>
12658 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12662 define void @s_shuffle_v3p3_v4p3__5_5_5() {
12663 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__5_5_5:
12665 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12666 ; GFX9-NEXT: ;;#ASMSTART
12667 ; GFX9-NEXT: ; def s[8:11]
12668 ; GFX9-NEXT: ;;#ASMEND
12669 ; GFX9-NEXT: s_mov_b32 s8, s9
12670 ; GFX9-NEXT: s_mov_b32 s10, s9
12671 ; GFX9-NEXT: ;;#ASMSTART
12672 ; GFX9-NEXT: ; use s[8:10]
12673 ; GFX9-NEXT: ;;#ASMEND
12674 ; GFX9-NEXT: s_setpc_b64 s[30:31]
12675 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12676 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12677 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 5, i32 5>
12678 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12682 define void @s_shuffle_v3p3_v4p3__6_5_5() {
12683 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__6_5_5:
12685 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12686 ; GFX9-NEXT: ;;#ASMSTART
12687 ; GFX9-NEXT: ; def s[8:11]
12688 ; GFX9-NEXT: ;;#ASMEND
12689 ; GFX9-NEXT: s_mov_b32 s8, s10
12690 ; GFX9-NEXT: s_mov_b32 s10, s9
12691 ; GFX9-NEXT: ;;#ASMSTART
12692 ; GFX9-NEXT: ; use s[8:10]
12693 ; GFX9-NEXT: ;;#ASMEND
12694 ; GFX9-NEXT: s_setpc_b64 s[30:31]
12695 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12696 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12697 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 5, i32 5>
12698 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12702 define void @s_shuffle_v3p3_v4p3__7_5_5() {
12703 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_5_5:
12705 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12706 ; GFX9-NEXT: ;;#ASMSTART
12707 ; GFX9-NEXT: ; def s[8:11]
12708 ; GFX9-NEXT: ;;#ASMEND
12709 ; GFX9-NEXT: s_mov_b32 s8, s11
12710 ; GFX9-NEXT: s_mov_b32 s10, s9
12711 ; GFX9-NEXT: ;;#ASMSTART
12712 ; GFX9-NEXT: ; use s[8:10]
12713 ; GFX9-NEXT: ;;#ASMEND
12714 ; GFX9-NEXT: s_setpc_b64 s[30:31]
12715 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12716 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12717 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 5>
12718 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12722 define void @s_shuffle_v3p3_v4p3__7_u_5() {
12723 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_5:
12725 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12726 ; GFX900-NEXT: ;;#ASMSTART
12727 ; GFX900-NEXT: ; def s[4:7]
12728 ; GFX900-NEXT: ;;#ASMEND
12729 ; GFX900-NEXT: s_mov_b32 s8, s7
12730 ; GFX900-NEXT: s_mov_b32 s10, s5
12731 ; GFX900-NEXT: ;;#ASMSTART
12732 ; GFX900-NEXT: ; use s[8:10]
12733 ; GFX900-NEXT: ;;#ASMEND
12734 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12736 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_5:
12738 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12739 ; GFX90A-NEXT: ;;#ASMSTART
12740 ; GFX90A-NEXT: ; def s[4:7]
12741 ; GFX90A-NEXT: ;;#ASMEND
12742 ; GFX90A-NEXT: s_mov_b32 s8, s7
12743 ; GFX90A-NEXT: s_mov_b32 s10, s5
12744 ; GFX90A-NEXT: ;;#ASMSTART
12745 ; GFX90A-NEXT: ; use s[8:10]
12746 ; GFX90A-NEXT: ;;#ASMEND
12747 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12749 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_u_5:
12751 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12752 ; GFX940-NEXT: ;;#ASMSTART
12753 ; GFX940-NEXT: ; def s[0:3]
12754 ; GFX940-NEXT: ;;#ASMEND
12755 ; GFX940-NEXT: s_mov_b32 s8, s3
12756 ; GFX940-NEXT: s_mov_b32 s10, s1
12757 ; GFX940-NEXT: ;;#ASMSTART
12758 ; GFX940-NEXT: ; use s[8:10]
12759 ; GFX940-NEXT: ;;#ASMEND
12760 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12761 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12762 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12763 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 5>
12764 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12768 define void @s_shuffle_v3p3_v4p3__7_0_5() {
12769 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_5:
12771 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12772 ; GFX900-NEXT: ;;#ASMSTART
12773 ; GFX900-NEXT: ; def s[4:7]
12774 ; GFX900-NEXT: ;;#ASMEND
12775 ; GFX900-NEXT: ;;#ASMSTART
12776 ; GFX900-NEXT: ; def s[12:15]
12777 ; GFX900-NEXT: ;;#ASMEND
12778 ; GFX900-NEXT: s_mov_b32 s8, s15
12779 ; GFX900-NEXT: s_mov_b32 s9, s4
12780 ; GFX900-NEXT: s_mov_b32 s10, s13
12781 ; GFX900-NEXT: ;;#ASMSTART
12782 ; GFX900-NEXT: ; use s[8:10]
12783 ; GFX900-NEXT: ;;#ASMEND
12784 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12786 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_5:
12788 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12789 ; GFX90A-NEXT: ;;#ASMSTART
12790 ; GFX90A-NEXT: ; def s[4:7]
12791 ; GFX90A-NEXT: ;;#ASMEND
12792 ; GFX90A-NEXT: ;;#ASMSTART
12793 ; GFX90A-NEXT: ; def s[12:15]
12794 ; GFX90A-NEXT: ;;#ASMEND
12795 ; GFX90A-NEXT: s_mov_b32 s8, s15
12796 ; GFX90A-NEXT: s_mov_b32 s9, s4
12797 ; GFX90A-NEXT: s_mov_b32 s10, s13
12798 ; GFX90A-NEXT: ;;#ASMSTART
12799 ; GFX90A-NEXT: ; use s[8:10]
12800 ; GFX90A-NEXT: ;;#ASMEND
12801 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12803 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_5:
12805 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12806 ; GFX940-NEXT: ;;#ASMSTART
12807 ; GFX940-NEXT: ; def s[0:3]
12808 ; GFX940-NEXT: ;;#ASMEND
12809 ; GFX940-NEXT: ;;#ASMSTART
12810 ; GFX940-NEXT: ; def s[4:7]
12811 ; GFX940-NEXT: ;;#ASMEND
12812 ; GFX940-NEXT: s_mov_b32 s8, s7
12813 ; GFX940-NEXT: s_mov_b32 s9, s0
12814 ; GFX940-NEXT: s_mov_b32 s10, s5
12815 ; GFX940-NEXT: ;;#ASMSTART
12816 ; GFX940-NEXT: ; use s[8:10]
12817 ; GFX940-NEXT: ;;#ASMEND
12818 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12819 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12820 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12821 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 5>
12822 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12826 define void @s_shuffle_v3p3_v4p3__7_1_5() {
12827 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_5:
12829 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12830 ; GFX900-NEXT: ;;#ASMSTART
12831 ; GFX900-NEXT: ; def s[8:11]
12832 ; GFX900-NEXT: ;;#ASMEND
12833 ; GFX900-NEXT: ;;#ASMSTART
12834 ; GFX900-NEXT: ; def s[4:7]
12835 ; GFX900-NEXT: ;;#ASMEND
12836 ; GFX900-NEXT: s_mov_b32 s8, s7
12837 ; GFX900-NEXT: s_mov_b32 s10, s5
12838 ; GFX900-NEXT: ;;#ASMSTART
12839 ; GFX900-NEXT: ; use s[8:10]
12840 ; GFX900-NEXT: ;;#ASMEND
12841 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12843 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_5:
12845 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12846 ; GFX90A-NEXT: ;;#ASMSTART
12847 ; GFX90A-NEXT: ; def s[8:11]
12848 ; GFX90A-NEXT: ;;#ASMEND
12849 ; GFX90A-NEXT: ;;#ASMSTART
12850 ; GFX90A-NEXT: ; def s[4:7]
12851 ; GFX90A-NEXT: ;;#ASMEND
12852 ; GFX90A-NEXT: s_mov_b32 s8, s7
12853 ; GFX90A-NEXT: s_mov_b32 s10, s5
12854 ; GFX90A-NEXT: ;;#ASMSTART
12855 ; GFX90A-NEXT: ; use s[8:10]
12856 ; GFX90A-NEXT: ;;#ASMEND
12857 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12859 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_5:
12861 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12862 ; GFX940-NEXT: ;;#ASMSTART
12863 ; GFX940-NEXT: ; def s[8:11]
12864 ; GFX940-NEXT: ;;#ASMEND
12865 ; GFX940-NEXT: ;;#ASMSTART
12866 ; GFX940-NEXT: ; def s[0:3]
12867 ; GFX940-NEXT: ;;#ASMEND
12868 ; GFX940-NEXT: s_mov_b32 s8, s3
12869 ; GFX940-NEXT: s_mov_b32 s10, s1
12870 ; GFX940-NEXT: ;;#ASMSTART
12871 ; GFX940-NEXT: ; use s[8:10]
12872 ; GFX940-NEXT: ;;#ASMEND
12873 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12874 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12875 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12876 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 5>
12877 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12881 define void @s_shuffle_v3p3_v4p3__7_2_5() {
12882 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_5:
12884 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12885 ; GFX900-NEXT: ;;#ASMSTART
12886 ; GFX900-NEXT: ; def s[4:7]
12887 ; GFX900-NEXT: ;;#ASMEND
12888 ; GFX900-NEXT: ;;#ASMSTART
12889 ; GFX900-NEXT: ; def s[12:15]
12890 ; GFX900-NEXT: ;;#ASMEND
12891 ; GFX900-NEXT: s_mov_b32 s8, s15
12892 ; GFX900-NEXT: s_mov_b32 s9, s6
12893 ; GFX900-NEXT: s_mov_b32 s10, s13
12894 ; GFX900-NEXT: ;;#ASMSTART
12895 ; GFX900-NEXT: ; use s[8:10]
12896 ; GFX900-NEXT: ;;#ASMEND
12897 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12899 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_5:
12901 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12902 ; GFX90A-NEXT: ;;#ASMSTART
12903 ; GFX90A-NEXT: ; def s[4:7]
12904 ; GFX90A-NEXT: ;;#ASMEND
12905 ; GFX90A-NEXT: ;;#ASMSTART
12906 ; GFX90A-NEXT: ; def s[12:15]
12907 ; GFX90A-NEXT: ;;#ASMEND
12908 ; GFX90A-NEXT: s_mov_b32 s8, s15
12909 ; GFX90A-NEXT: s_mov_b32 s9, s6
12910 ; GFX90A-NEXT: s_mov_b32 s10, s13
12911 ; GFX90A-NEXT: ;;#ASMSTART
12912 ; GFX90A-NEXT: ; use s[8:10]
12913 ; GFX90A-NEXT: ;;#ASMEND
12914 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12916 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_5:
12918 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12919 ; GFX940-NEXT: ;;#ASMSTART
12920 ; GFX940-NEXT: ; def s[0:3]
12921 ; GFX940-NEXT: ;;#ASMEND
12922 ; GFX940-NEXT: ;;#ASMSTART
12923 ; GFX940-NEXT: ; def s[4:7]
12924 ; GFX940-NEXT: ;;#ASMEND
12925 ; GFX940-NEXT: s_mov_b32 s8, s7
12926 ; GFX940-NEXT: s_mov_b32 s9, s2
12927 ; GFX940-NEXT: s_mov_b32 s10, s5
12928 ; GFX940-NEXT: ;;#ASMSTART
12929 ; GFX940-NEXT: ; use s[8:10]
12930 ; GFX940-NEXT: ;;#ASMEND
12931 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12932 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12933 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12934 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 5>
12935 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12939 define void @s_shuffle_v3p3_v4p3__7_3_5() {
12940 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_5:
12942 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12943 ; GFX900-NEXT: ;;#ASMSTART
12944 ; GFX900-NEXT: ; def s[4:7]
12945 ; GFX900-NEXT: ;;#ASMEND
12946 ; GFX900-NEXT: ;;#ASMSTART
12947 ; GFX900-NEXT: ; def s[12:15]
12948 ; GFX900-NEXT: ;;#ASMEND
12949 ; GFX900-NEXT: s_mov_b32 s8, s15
12950 ; GFX900-NEXT: s_mov_b32 s9, s7
12951 ; GFX900-NEXT: s_mov_b32 s10, s13
12952 ; GFX900-NEXT: ;;#ASMSTART
12953 ; GFX900-NEXT: ; use s[8:10]
12954 ; GFX900-NEXT: ;;#ASMEND
12955 ; GFX900-NEXT: s_setpc_b64 s[30:31]
12957 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_5:
12959 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12960 ; GFX90A-NEXT: ;;#ASMSTART
12961 ; GFX90A-NEXT: ; def s[4:7]
12962 ; GFX90A-NEXT: ;;#ASMEND
12963 ; GFX90A-NEXT: ;;#ASMSTART
12964 ; GFX90A-NEXT: ; def s[12:15]
12965 ; GFX90A-NEXT: ;;#ASMEND
12966 ; GFX90A-NEXT: s_mov_b32 s8, s15
12967 ; GFX90A-NEXT: s_mov_b32 s9, s7
12968 ; GFX90A-NEXT: s_mov_b32 s10, s13
12969 ; GFX90A-NEXT: ;;#ASMSTART
12970 ; GFX90A-NEXT: ; use s[8:10]
12971 ; GFX90A-NEXT: ;;#ASMEND
12972 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
12974 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_5:
12976 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12977 ; GFX940-NEXT: ;;#ASMSTART
12978 ; GFX940-NEXT: ; def s[0:3]
12979 ; GFX940-NEXT: ;;#ASMEND
12980 ; GFX940-NEXT: ;;#ASMSTART
12981 ; GFX940-NEXT: ; def s[4:7]
12982 ; GFX940-NEXT: ;;#ASMEND
12983 ; GFX940-NEXT: s_mov_b32 s8, s7
12984 ; GFX940-NEXT: s_mov_b32 s9, s3
12985 ; GFX940-NEXT: s_mov_b32 s10, s5
12986 ; GFX940-NEXT: ;;#ASMSTART
12987 ; GFX940-NEXT: ; use s[8:10]
12988 ; GFX940-NEXT: ;;#ASMEND
12989 ; GFX940-NEXT: s_setpc_b64 s[30:31]
12990 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12991 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
12992 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 5>
12993 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
12997 define void @s_shuffle_v3p3_v4p3__7_4_5() {
12998 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_5:
13000 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13001 ; GFX900-NEXT: ;;#ASMSTART
13002 ; GFX900-NEXT: ; def s[4:7]
13003 ; GFX900-NEXT: ;;#ASMEND
13004 ; GFX900-NEXT: s_mov_b32 s8, s7
13005 ; GFX900-NEXT: s_mov_b32 s9, s4
13006 ; GFX900-NEXT: s_mov_b32 s10, s5
13007 ; GFX900-NEXT: ;;#ASMSTART
13008 ; GFX900-NEXT: ; use s[8:10]
13009 ; GFX900-NEXT: ;;#ASMEND
13010 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13012 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_5:
13014 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13015 ; GFX90A-NEXT: ;;#ASMSTART
13016 ; GFX90A-NEXT: ; def s[4:7]
13017 ; GFX90A-NEXT: ;;#ASMEND
13018 ; GFX90A-NEXT: s_mov_b32 s8, s7
13019 ; GFX90A-NEXT: s_mov_b32 s9, s4
13020 ; GFX90A-NEXT: s_mov_b32 s10, s5
13021 ; GFX90A-NEXT: ;;#ASMSTART
13022 ; GFX90A-NEXT: ; use s[8:10]
13023 ; GFX90A-NEXT: ;;#ASMEND
13024 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13026 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_5:
13028 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13029 ; GFX940-NEXT: ;;#ASMSTART
13030 ; GFX940-NEXT: ; def s[0:3]
13031 ; GFX940-NEXT: ;;#ASMEND
13032 ; GFX940-NEXT: s_mov_b32 s8, s3
13033 ; GFX940-NEXT: s_mov_b32 s9, s0
13034 ; GFX940-NEXT: s_mov_b32 s10, s1
13035 ; GFX940-NEXT: ;;#ASMSTART
13036 ; GFX940-NEXT: ; use s[8:10]
13037 ; GFX940-NEXT: ;;#ASMEND
13038 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13039 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13040 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13041 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 5>
13042 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13046 define void @s_shuffle_v3p3_v4p3__7_6_5() {
13047 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_5:
13049 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13050 ; GFX900-NEXT: ;;#ASMSTART
13051 ; GFX900-NEXT: ; def s[4:7]
13052 ; GFX900-NEXT: ;;#ASMEND
13053 ; GFX900-NEXT: s_mov_b32 s8, s7
13054 ; GFX900-NEXT: s_mov_b32 s9, s6
13055 ; GFX900-NEXT: s_mov_b32 s10, s5
13056 ; GFX900-NEXT: ;;#ASMSTART
13057 ; GFX900-NEXT: ; use s[8:10]
13058 ; GFX900-NEXT: ;;#ASMEND
13059 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13061 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_5:
13063 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13064 ; GFX90A-NEXT: ;;#ASMSTART
13065 ; GFX90A-NEXT: ; def s[4:7]
13066 ; GFX90A-NEXT: ;;#ASMEND
13067 ; GFX90A-NEXT: s_mov_b32 s8, s7
13068 ; GFX90A-NEXT: s_mov_b32 s9, s6
13069 ; GFX90A-NEXT: s_mov_b32 s10, s5
13070 ; GFX90A-NEXT: ;;#ASMSTART
13071 ; GFX90A-NEXT: ; use s[8:10]
13072 ; GFX90A-NEXT: ;;#ASMEND
13073 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13075 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_6_5:
13077 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13078 ; GFX940-NEXT: ;;#ASMSTART
13079 ; GFX940-NEXT: ; def s[0:3]
13080 ; GFX940-NEXT: ;;#ASMEND
13081 ; GFX940-NEXT: s_mov_b32 s8, s3
13082 ; GFX940-NEXT: s_mov_b32 s9, s2
13083 ; GFX940-NEXT: s_mov_b32 s10, s1
13084 ; GFX940-NEXT: ;;#ASMSTART
13085 ; GFX940-NEXT: ; use s[8:10]
13086 ; GFX940-NEXT: ;;#ASMEND
13087 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13088 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13089 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13090 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 5>
13091 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13095 define void @s_shuffle_v3p3_v4p3__u_6_6() {
13096 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_6_6:
13098 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13099 ; GFX9-NEXT: ;;#ASMSTART
13100 ; GFX9-NEXT: ; def s[8:11]
13101 ; GFX9-NEXT: ;;#ASMEND
13102 ; GFX9-NEXT: s_mov_b32 s9, s10
13103 ; GFX9-NEXT: ;;#ASMSTART
13104 ; GFX9-NEXT: ; use s[8:10]
13105 ; GFX9-NEXT: ;;#ASMEND
13106 ; GFX9-NEXT: s_setpc_b64 s[30:31]
13107 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13108 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13109 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 6, i32 6>
13110 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13114 define void @s_shuffle_v3p3_v4p3__0_6_6() {
13115 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_6_6:
13117 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13118 ; GFX900-NEXT: ;;#ASMSTART
13119 ; GFX900-NEXT: ; def s[8:11]
13120 ; GFX900-NEXT: ;;#ASMEND
13121 ; GFX900-NEXT: ;;#ASMSTART
13122 ; GFX900-NEXT: ; def s[4:7]
13123 ; GFX900-NEXT: ;;#ASMEND
13124 ; GFX900-NEXT: s_mov_b32 s9, s6
13125 ; GFX900-NEXT: s_mov_b32 s10, s6
13126 ; GFX900-NEXT: ;;#ASMSTART
13127 ; GFX900-NEXT: ; use s[8:10]
13128 ; GFX900-NEXT: ;;#ASMEND
13129 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13131 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_6_6:
13133 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13134 ; GFX90A-NEXT: ;;#ASMSTART
13135 ; GFX90A-NEXT: ; def s[8:11]
13136 ; GFX90A-NEXT: ;;#ASMEND
13137 ; GFX90A-NEXT: ;;#ASMSTART
13138 ; GFX90A-NEXT: ; def s[4:7]
13139 ; GFX90A-NEXT: ;;#ASMEND
13140 ; GFX90A-NEXT: s_mov_b32 s9, s6
13141 ; GFX90A-NEXT: s_mov_b32 s10, s6
13142 ; GFX90A-NEXT: ;;#ASMSTART
13143 ; GFX90A-NEXT: ; use s[8:10]
13144 ; GFX90A-NEXT: ;;#ASMEND
13145 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13147 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__0_6_6:
13149 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13150 ; GFX940-NEXT: ;;#ASMSTART
13151 ; GFX940-NEXT: ; def s[8:11]
13152 ; GFX940-NEXT: ;;#ASMEND
13153 ; GFX940-NEXT: ;;#ASMSTART
13154 ; GFX940-NEXT: ; def s[0:3]
13155 ; GFX940-NEXT: ;;#ASMEND
13156 ; GFX940-NEXT: s_mov_b32 s9, s2
13157 ; GFX940-NEXT: s_mov_b32 s10, s2
13158 ; GFX940-NEXT: ;;#ASMSTART
13159 ; GFX940-NEXT: ; use s[8:10]
13160 ; GFX940-NEXT: ;;#ASMEND
13161 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13162 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13163 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13164 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 6, i32 6>
13165 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13169 define void @s_shuffle_v3p3_v4p3__1_6_6() {
13170 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_6_6:
13172 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13173 ; GFX900-NEXT: ;;#ASMSTART
13174 ; GFX900-NEXT: ; def s[8:11]
13175 ; GFX900-NEXT: ;;#ASMEND
13176 ; GFX900-NEXT: ;;#ASMSTART
13177 ; GFX900-NEXT: ; def s[4:7]
13178 ; GFX900-NEXT: ;;#ASMEND
13179 ; GFX900-NEXT: s_mov_b32 s8, s5
13180 ; GFX900-NEXT: s_mov_b32 s9, s10
13181 ; GFX900-NEXT: ;;#ASMSTART
13182 ; GFX900-NEXT: ; use s[8:10]
13183 ; GFX900-NEXT: ;;#ASMEND
13184 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13186 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_6_6:
13188 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13189 ; GFX90A-NEXT: ;;#ASMSTART
13190 ; GFX90A-NEXT: ; def s[8:11]
13191 ; GFX90A-NEXT: ;;#ASMEND
13192 ; GFX90A-NEXT: ;;#ASMSTART
13193 ; GFX90A-NEXT: ; def s[4:7]
13194 ; GFX90A-NEXT: ;;#ASMEND
13195 ; GFX90A-NEXT: s_mov_b32 s8, s5
13196 ; GFX90A-NEXT: s_mov_b32 s9, s10
13197 ; GFX90A-NEXT: ;;#ASMSTART
13198 ; GFX90A-NEXT: ; use s[8:10]
13199 ; GFX90A-NEXT: ;;#ASMEND
13200 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13202 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__1_6_6:
13204 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13205 ; GFX940-NEXT: ;;#ASMSTART
13206 ; GFX940-NEXT: ; def s[8:11]
13207 ; GFX940-NEXT: ;;#ASMEND
13208 ; GFX940-NEXT: ;;#ASMSTART
13209 ; GFX940-NEXT: ; def s[0:3]
13210 ; GFX940-NEXT: ;;#ASMEND
13211 ; GFX940-NEXT: s_mov_b32 s8, s1
13212 ; GFX940-NEXT: s_mov_b32 s9, s10
13213 ; GFX940-NEXT: ;;#ASMSTART
13214 ; GFX940-NEXT: ; use s[8:10]
13215 ; GFX940-NEXT: ;;#ASMEND
13216 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13217 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13218 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13219 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 6, i32 6>
13220 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13224 define void @s_shuffle_v3p3_v4p3__2_6_6() {
13225 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_6_6:
13227 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13228 ; GFX900-NEXT: ;;#ASMSTART
13229 ; GFX900-NEXT: ; def s[8:11]
13230 ; GFX900-NEXT: ;;#ASMEND
13231 ; GFX900-NEXT: ;;#ASMSTART
13232 ; GFX900-NEXT: ; def s[4:7]
13233 ; GFX900-NEXT: ;;#ASMEND
13234 ; GFX900-NEXT: s_mov_b32 s8, s6
13235 ; GFX900-NEXT: s_mov_b32 s9, s10
13236 ; GFX900-NEXT: ;;#ASMSTART
13237 ; GFX900-NEXT: ; use s[8:10]
13238 ; GFX900-NEXT: ;;#ASMEND
13239 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13241 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_6_6:
13243 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13244 ; GFX90A-NEXT: ;;#ASMSTART
13245 ; GFX90A-NEXT: ; def s[8:11]
13246 ; GFX90A-NEXT: ;;#ASMEND
13247 ; GFX90A-NEXT: ;;#ASMSTART
13248 ; GFX90A-NEXT: ; def s[4:7]
13249 ; GFX90A-NEXT: ;;#ASMEND
13250 ; GFX90A-NEXT: s_mov_b32 s8, s6
13251 ; GFX90A-NEXT: s_mov_b32 s9, s10
13252 ; GFX90A-NEXT: ;;#ASMSTART
13253 ; GFX90A-NEXT: ; use s[8:10]
13254 ; GFX90A-NEXT: ;;#ASMEND
13255 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13257 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__2_6_6:
13259 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13260 ; GFX940-NEXT: ;;#ASMSTART
13261 ; GFX940-NEXT: ; def s[8:11]
13262 ; GFX940-NEXT: ;;#ASMEND
13263 ; GFX940-NEXT: ;;#ASMSTART
13264 ; GFX940-NEXT: ; def s[0:3]
13265 ; GFX940-NEXT: ;;#ASMEND
13266 ; GFX940-NEXT: s_mov_b32 s8, s2
13267 ; GFX940-NEXT: s_mov_b32 s9, s10
13268 ; GFX940-NEXT: ;;#ASMSTART
13269 ; GFX940-NEXT: ; use s[8:10]
13270 ; GFX940-NEXT: ;;#ASMEND
13271 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13272 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13273 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13274 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 6, i32 6>
13275 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13279 define void @s_shuffle_v3p3_v4p3__3_6_6() {
13280 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_6_6:
13282 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13283 ; GFX900-NEXT: ;;#ASMSTART
13284 ; GFX900-NEXT: ; def s[8:11]
13285 ; GFX900-NEXT: ;;#ASMEND
13286 ; GFX900-NEXT: ;;#ASMSTART
13287 ; GFX900-NEXT: ; def s[4:7]
13288 ; GFX900-NEXT: ;;#ASMEND
13289 ; GFX900-NEXT: s_mov_b32 s8, s7
13290 ; GFX900-NEXT: s_mov_b32 s9, s10
13291 ; GFX900-NEXT: ;;#ASMSTART
13292 ; GFX900-NEXT: ; use s[8:10]
13293 ; GFX900-NEXT: ;;#ASMEND
13294 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13296 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_6_6:
13298 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13299 ; GFX90A-NEXT: ;;#ASMSTART
13300 ; GFX90A-NEXT: ; def s[8:11]
13301 ; GFX90A-NEXT: ;;#ASMEND
13302 ; GFX90A-NEXT: ;;#ASMSTART
13303 ; GFX90A-NEXT: ; def s[4:7]
13304 ; GFX90A-NEXT: ;;#ASMEND
13305 ; GFX90A-NEXT: s_mov_b32 s8, s7
13306 ; GFX90A-NEXT: s_mov_b32 s9, s10
13307 ; GFX90A-NEXT: ;;#ASMSTART
13308 ; GFX90A-NEXT: ; use s[8:10]
13309 ; GFX90A-NEXT: ;;#ASMEND
13310 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13312 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__3_6_6:
13314 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13315 ; GFX940-NEXT: ;;#ASMSTART
13316 ; GFX940-NEXT: ; def s[8:11]
13317 ; GFX940-NEXT: ;;#ASMEND
13318 ; GFX940-NEXT: ;;#ASMSTART
13319 ; GFX940-NEXT: ; def s[0:3]
13320 ; GFX940-NEXT: ;;#ASMEND
13321 ; GFX940-NEXT: s_mov_b32 s8, s3
13322 ; GFX940-NEXT: s_mov_b32 s9, s10
13323 ; GFX940-NEXT: ;;#ASMSTART
13324 ; GFX940-NEXT: ; use s[8:10]
13325 ; GFX940-NEXT: ;;#ASMEND
13326 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13327 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13328 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13329 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 6, i32 6>
13330 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13334 define void @s_shuffle_v3p3_v4p3__4_6_6() {
13335 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_6_6:
13337 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13338 ; GFX9-NEXT: ;;#ASMSTART
13339 ; GFX9-NEXT: ; def s[8:11]
13340 ; GFX9-NEXT: ;;#ASMEND
13341 ; GFX9-NEXT: s_mov_b32 s9, s10
13342 ; GFX9-NEXT: ;;#ASMSTART
13343 ; GFX9-NEXT: ; use s[8:10]
13344 ; GFX9-NEXT: ;;#ASMEND
13345 ; GFX9-NEXT: s_setpc_b64 s[30:31]
13346 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13347 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13348 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 6, i32 6>
13349 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13353 define void @s_shuffle_v3p3_v4p3__5_6_6() {
13354 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__5_6_6:
13356 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13357 ; GFX9-NEXT: ;;#ASMSTART
13358 ; GFX9-NEXT: ; def s[8:11]
13359 ; GFX9-NEXT: ;;#ASMEND
13360 ; GFX9-NEXT: s_mov_b32 s8, s9
13361 ; GFX9-NEXT: s_mov_b32 s9, s10
13362 ; GFX9-NEXT: ;;#ASMSTART
13363 ; GFX9-NEXT: ; use s[8:10]
13364 ; GFX9-NEXT: ;;#ASMEND
13365 ; GFX9-NEXT: s_setpc_b64 s[30:31]
13366 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13367 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13368 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 6, i32 6>
13369 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13373 define void @s_shuffle_v3p3_v4p3__6_6_6() {
13374 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__6_6_6:
13376 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13377 ; GFX9-NEXT: ;;#ASMSTART
13378 ; GFX9-NEXT: ; def s[8:11]
13379 ; GFX9-NEXT: ;;#ASMEND
13380 ; GFX9-NEXT: s_mov_b32 s8, s10
13381 ; GFX9-NEXT: s_mov_b32 s9, s10
13382 ; GFX9-NEXT: ;;#ASMSTART
13383 ; GFX9-NEXT: ; use s[8:10]
13384 ; GFX9-NEXT: ;;#ASMEND
13385 ; GFX9-NEXT: s_setpc_b64 s[30:31]
13386 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13387 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13388 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 6, i32 6>
13389 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13393 define void @s_shuffle_v3p3_v4p3__7_6_6() {
13394 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_6_6:
13396 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13397 ; GFX9-NEXT: ;;#ASMSTART
13398 ; GFX9-NEXT: ; def s[8:11]
13399 ; GFX9-NEXT: ;;#ASMEND
13400 ; GFX9-NEXT: s_mov_b32 s8, s11
13401 ; GFX9-NEXT: s_mov_b32 s9, s10
13402 ; GFX9-NEXT: ;;#ASMSTART
13403 ; GFX9-NEXT: ; use s[8:10]
13404 ; GFX9-NEXT: ;;#ASMEND
13405 ; GFX9-NEXT: s_setpc_b64 s[30:31]
13406 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13407 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13408 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 6>
13409 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13413 define void @s_shuffle_v3p3_v4p3__7_u_6() {
13414 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_u_6:
13416 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13417 ; GFX9-NEXT: ;;#ASMSTART
13418 ; GFX9-NEXT: ; def s[8:11]
13419 ; GFX9-NEXT: ;;#ASMEND
13420 ; GFX9-NEXT: s_mov_b32 s8, s11
13421 ; GFX9-NEXT: ;;#ASMSTART
13422 ; GFX9-NEXT: ; use s[8:10]
13423 ; GFX9-NEXT: ;;#ASMEND
13424 ; GFX9-NEXT: s_setpc_b64 s[30:31]
13425 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13426 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13427 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 6>
13428 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13432 define void @s_shuffle_v3p3_v4p3__7_0_6() {
13433 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_6:
13435 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13436 ; GFX900-NEXT: ;;#ASMSTART
13437 ; GFX900-NEXT: ; def s[8:11]
13438 ; GFX900-NEXT: ;;#ASMEND
13439 ; GFX900-NEXT: ;;#ASMSTART
13440 ; GFX900-NEXT: ; def s[4:7]
13441 ; GFX900-NEXT: ;;#ASMEND
13442 ; GFX900-NEXT: s_mov_b32 s8, s11
13443 ; GFX900-NEXT: s_mov_b32 s9, s4
13444 ; GFX900-NEXT: ;;#ASMSTART
13445 ; GFX900-NEXT: ; use s[8:10]
13446 ; GFX900-NEXT: ;;#ASMEND
13447 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13449 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_6:
13451 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13452 ; GFX90A-NEXT: ;;#ASMSTART
13453 ; GFX90A-NEXT: ; def s[8:11]
13454 ; GFX90A-NEXT: ;;#ASMEND
13455 ; GFX90A-NEXT: ;;#ASMSTART
13456 ; GFX90A-NEXT: ; def s[4:7]
13457 ; GFX90A-NEXT: ;;#ASMEND
13458 ; GFX90A-NEXT: s_mov_b32 s8, s11
13459 ; GFX90A-NEXT: s_mov_b32 s9, s4
13460 ; GFX90A-NEXT: ;;#ASMSTART
13461 ; GFX90A-NEXT: ; use s[8:10]
13462 ; GFX90A-NEXT: ;;#ASMEND
13463 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13465 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_6:
13467 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13468 ; GFX940-NEXT: ;;#ASMSTART
13469 ; GFX940-NEXT: ; def s[8:11]
13470 ; GFX940-NEXT: ;;#ASMEND
13471 ; GFX940-NEXT: ;;#ASMSTART
13472 ; GFX940-NEXT: ; def s[0:3]
13473 ; GFX940-NEXT: ;;#ASMEND
13474 ; GFX940-NEXT: s_mov_b32 s8, s11
13475 ; GFX940-NEXT: s_mov_b32 s9, s0
13476 ; GFX940-NEXT: ;;#ASMSTART
13477 ; GFX940-NEXT: ; use s[8:10]
13478 ; GFX940-NEXT: ;;#ASMEND
13479 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13480 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13481 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13482 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 6>
13483 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13487 define void @s_shuffle_v3p3_v4p3__7_1_6() {
13488 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_6:
13490 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13491 ; GFX900-NEXT: ;;#ASMSTART
13492 ; GFX900-NEXT: ; def s[8:11]
13493 ; GFX900-NEXT: ;;#ASMEND
13494 ; GFX900-NEXT: ;;#ASMSTART
13495 ; GFX900-NEXT: ; def s[4:7]
13496 ; GFX900-NEXT: ;;#ASMEND
13497 ; GFX900-NEXT: s_mov_b32 s8, s7
13498 ; GFX900-NEXT: s_mov_b32 s10, s6
13499 ; GFX900-NEXT: ;;#ASMSTART
13500 ; GFX900-NEXT: ; use s[8:10]
13501 ; GFX900-NEXT: ;;#ASMEND
13502 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13504 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_6:
13506 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13507 ; GFX90A-NEXT: ;;#ASMSTART
13508 ; GFX90A-NEXT: ; def s[8:11]
13509 ; GFX90A-NEXT: ;;#ASMEND
13510 ; GFX90A-NEXT: ;;#ASMSTART
13511 ; GFX90A-NEXT: ; def s[4:7]
13512 ; GFX90A-NEXT: ;;#ASMEND
13513 ; GFX90A-NEXT: s_mov_b32 s8, s7
13514 ; GFX90A-NEXT: s_mov_b32 s10, s6
13515 ; GFX90A-NEXT: ;;#ASMSTART
13516 ; GFX90A-NEXT: ; use s[8:10]
13517 ; GFX90A-NEXT: ;;#ASMEND
13518 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13520 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_6:
13522 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13523 ; GFX940-NEXT: ;;#ASMSTART
13524 ; GFX940-NEXT: ; def s[8:11]
13525 ; GFX940-NEXT: ;;#ASMEND
13526 ; GFX940-NEXT: ;;#ASMSTART
13527 ; GFX940-NEXT: ; def s[0:3]
13528 ; GFX940-NEXT: ;;#ASMEND
13529 ; GFX940-NEXT: s_mov_b32 s8, s3
13530 ; GFX940-NEXT: s_mov_b32 s10, s2
13531 ; GFX940-NEXT: ;;#ASMSTART
13532 ; GFX940-NEXT: ; use s[8:10]
13533 ; GFX940-NEXT: ;;#ASMEND
13534 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13535 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13536 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13537 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 6>
13538 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13542 define void @s_shuffle_v3p3_v4p3__7_2_6() {
13543 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_6:
13545 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13546 ; GFX900-NEXT: ;;#ASMSTART
13547 ; GFX900-NEXT: ; def s[8:11]
13548 ; GFX900-NEXT: ;;#ASMEND
13549 ; GFX900-NEXT: ;;#ASMSTART
13550 ; GFX900-NEXT: ; def s[4:7]
13551 ; GFX900-NEXT: ;;#ASMEND
13552 ; GFX900-NEXT: s_mov_b32 s8, s11
13553 ; GFX900-NEXT: s_mov_b32 s9, s6
13554 ; GFX900-NEXT: ;;#ASMSTART
13555 ; GFX900-NEXT: ; use s[8:10]
13556 ; GFX900-NEXT: ;;#ASMEND
13557 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13559 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_6:
13561 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13562 ; GFX90A-NEXT: ;;#ASMSTART
13563 ; GFX90A-NEXT: ; def s[8:11]
13564 ; GFX90A-NEXT: ;;#ASMEND
13565 ; GFX90A-NEXT: ;;#ASMSTART
13566 ; GFX90A-NEXT: ; def s[4:7]
13567 ; GFX90A-NEXT: ;;#ASMEND
13568 ; GFX90A-NEXT: s_mov_b32 s8, s11
13569 ; GFX90A-NEXT: s_mov_b32 s9, s6
13570 ; GFX90A-NEXT: ;;#ASMSTART
13571 ; GFX90A-NEXT: ; use s[8:10]
13572 ; GFX90A-NEXT: ;;#ASMEND
13573 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13575 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_6:
13577 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13578 ; GFX940-NEXT: ;;#ASMSTART
13579 ; GFX940-NEXT: ; def s[8:11]
13580 ; GFX940-NEXT: ;;#ASMEND
13581 ; GFX940-NEXT: ;;#ASMSTART
13582 ; GFX940-NEXT: ; def s[0:3]
13583 ; GFX940-NEXT: ;;#ASMEND
13584 ; GFX940-NEXT: s_mov_b32 s8, s11
13585 ; GFX940-NEXT: s_mov_b32 s9, s2
13586 ; GFX940-NEXT: ;;#ASMSTART
13587 ; GFX940-NEXT: ; use s[8:10]
13588 ; GFX940-NEXT: ;;#ASMEND
13589 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13590 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13591 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13592 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 6>
13593 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13597 define void @s_shuffle_v3p3_v4p3__7_3_6() {
13598 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_6:
13600 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13601 ; GFX900-NEXT: ;;#ASMSTART
13602 ; GFX900-NEXT: ; def s[8:11]
13603 ; GFX900-NEXT: ;;#ASMEND
13604 ; GFX900-NEXT: ;;#ASMSTART
13605 ; GFX900-NEXT: ; def s[4:7]
13606 ; GFX900-NEXT: ;;#ASMEND
13607 ; GFX900-NEXT: s_mov_b32 s8, s11
13608 ; GFX900-NEXT: s_mov_b32 s9, s7
13609 ; GFX900-NEXT: ;;#ASMSTART
13610 ; GFX900-NEXT: ; use s[8:10]
13611 ; GFX900-NEXT: ;;#ASMEND
13612 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13614 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_6:
13616 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13617 ; GFX90A-NEXT: ;;#ASMSTART
13618 ; GFX90A-NEXT: ; def s[8:11]
13619 ; GFX90A-NEXT: ;;#ASMEND
13620 ; GFX90A-NEXT: ;;#ASMSTART
13621 ; GFX90A-NEXT: ; def s[4:7]
13622 ; GFX90A-NEXT: ;;#ASMEND
13623 ; GFX90A-NEXT: s_mov_b32 s8, s11
13624 ; GFX90A-NEXT: s_mov_b32 s9, s7
13625 ; GFX90A-NEXT: ;;#ASMSTART
13626 ; GFX90A-NEXT: ; use s[8:10]
13627 ; GFX90A-NEXT: ;;#ASMEND
13628 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13630 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_6:
13632 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13633 ; GFX940-NEXT: ;;#ASMSTART
13634 ; GFX940-NEXT: ; def s[8:11]
13635 ; GFX940-NEXT: ;;#ASMEND
13636 ; GFX940-NEXT: ;;#ASMSTART
13637 ; GFX940-NEXT: ; def s[0:3]
13638 ; GFX940-NEXT: ;;#ASMEND
13639 ; GFX940-NEXT: s_mov_b32 s8, s11
13640 ; GFX940-NEXT: s_mov_b32 s9, s3
13641 ; GFX940-NEXT: ;;#ASMSTART
13642 ; GFX940-NEXT: ; use s[8:10]
13643 ; GFX940-NEXT: ;;#ASMEND
13644 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13645 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13646 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13647 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 6>
13648 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13652 define void @s_shuffle_v3p3_v4p3__7_4_6() {
13653 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_6:
13655 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13656 ; GFX900-NEXT: ;;#ASMSTART
13657 ; GFX900-NEXT: ; def s[4:7]
13658 ; GFX900-NEXT: ;;#ASMEND
13659 ; GFX900-NEXT: s_mov_b32 s8, s7
13660 ; GFX900-NEXT: s_mov_b32 s9, s4
13661 ; GFX900-NEXT: s_mov_b32 s10, s6
13662 ; GFX900-NEXT: ;;#ASMSTART
13663 ; GFX900-NEXT: ; use s[8:10]
13664 ; GFX900-NEXT: ;;#ASMEND
13665 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13667 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_6:
13669 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13670 ; GFX90A-NEXT: ;;#ASMSTART
13671 ; GFX90A-NEXT: ; def s[4:7]
13672 ; GFX90A-NEXT: ;;#ASMEND
13673 ; GFX90A-NEXT: s_mov_b32 s8, s7
13674 ; GFX90A-NEXT: s_mov_b32 s9, s4
13675 ; GFX90A-NEXT: s_mov_b32 s10, s6
13676 ; GFX90A-NEXT: ;;#ASMSTART
13677 ; GFX90A-NEXT: ; use s[8:10]
13678 ; GFX90A-NEXT: ;;#ASMEND
13679 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13681 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_6:
13683 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13684 ; GFX940-NEXT: ;;#ASMSTART
13685 ; GFX940-NEXT: ; def s[0:3]
13686 ; GFX940-NEXT: ;;#ASMEND
13687 ; GFX940-NEXT: s_mov_b32 s8, s3
13688 ; GFX940-NEXT: s_mov_b32 s9, s0
13689 ; GFX940-NEXT: s_mov_b32 s10, s2
13690 ; GFX940-NEXT: ;;#ASMSTART
13691 ; GFX940-NEXT: ; use s[8:10]
13692 ; GFX940-NEXT: ;;#ASMEND
13693 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13694 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13695 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13696 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 6>
13697 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13701 define void @s_shuffle_v3p3_v4p3__7_5_6() {
13702 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_5_6:
13704 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13705 ; GFX9-NEXT: ;;#ASMSTART
13706 ; GFX9-NEXT: ; def s[8:11]
13707 ; GFX9-NEXT: ;;#ASMEND
13708 ; GFX9-NEXT: s_mov_b32 s8, s11
13709 ; GFX9-NEXT: ;;#ASMSTART
13710 ; GFX9-NEXT: ; use s[8:10]
13711 ; GFX9-NEXT: ;;#ASMEND
13712 ; GFX9-NEXT: s_setpc_b64 s[30:31]
13713 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13714 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13715 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 6>
13716 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13720 define void @s_shuffle_v3p3_v4p3__u_7_7() {
13721 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__u_7_7:
13723 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13724 ; GFX900-NEXT: ;;#ASMSTART
13725 ; GFX900-NEXT: ; def s[4:7]
13726 ; GFX900-NEXT: ;;#ASMEND
13727 ; GFX900-NEXT: s_mov_b32 s9, s7
13728 ; GFX900-NEXT: s_mov_b32 s10, s7
13729 ; GFX900-NEXT: ;;#ASMSTART
13730 ; GFX900-NEXT: ; use s[8:10]
13731 ; GFX900-NEXT: ;;#ASMEND
13732 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13734 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__u_7_7:
13736 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13737 ; GFX90A-NEXT: ;;#ASMSTART
13738 ; GFX90A-NEXT: ; def s[4:7]
13739 ; GFX90A-NEXT: ;;#ASMEND
13740 ; GFX90A-NEXT: s_mov_b32 s9, s7
13741 ; GFX90A-NEXT: s_mov_b32 s10, s7
13742 ; GFX90A-NEXT: ;;#ASMSTART
13743 ; GFX90A-NEXT: ; use s[8:10]
13744 ; GFX90A-NEXT: ;;#ASMEND
13745 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13747 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__u_7_7:
13749 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13750 ; GFX940-NEXT: ;;#ASMSTART
13751 ; GFX940-NEXT: ; def s[0:3]
13752 ; GFX940-NEXT: ;;#ASMEND
13753 ; GFX940-NEXT: s_mov_b32 s9, s3
13754 ; GFX940-NEXT: s_mov_b32 s10, s3
13755 ; GFX940-NEXT: ;;#ASMSTART
13756 ; GFX940-NEXT: ; use s[8:10]
13757 ; GFX940-NEXT: ;;#ASMEND
13758 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13759 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13760 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13761 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 7, i32 7>
13762 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13766 define void @s_shuffle_v3p3_v4p3__0_7_7() {
13767 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_7_7:
13769 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13770 ; GFX900-NEXT: ;;#ASMSTART
13771 ; GFX900-NEXT: ; def s[8:11]
13772 ; GFX900-NEXT: ;;#ASMEND
13773 ; GFX900-NEXT: ;;#ASMSTART
13774 ; GFX900-NEXT: ; def s[4:7]
13775 ; GFX900-NEXT: ;;#ASMEND
13776 ; GFX900-NEXT: s_mov_b32 s9, s7
13777 ; GFX900-NEXT: s_mov_b32 s10, s7
13778 ; GFX900-NEXT: ;;#ASMSTART
13779 ; GFX900-NEXT: ; use s[8:10]
13780 ; GFX900-NEXT: ;;#ASMEND
13781 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13783 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_7_7:
13785 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13786 ; GFX90A-NEXT: ;;#ASMSTART
13787 ; GFX90A-NEXT: ; def s[8:11]
13788 ; GFX90A-NEXT: ;;#ASMEND
13789 ; GFX90A-NEXT: ;;#ASMSTART
13790 ; GFX90A-NEXT: ; def s[4:7]
13791 ; GFX90A-NEXT: ;;#ASMEND
13792 ; GFX90A-NEXT: s_mov_b32 s9, s7
13793 ; GFX90A-NEXT: s_mov_b32 s10, s7
13794 ; GFX90A-NEXT: ;;#ASMSTART
13795 ; GFX90A-NEXT: ; use s[8:10]
13796 ; GFX90A-NEXT: ;;#ASMEND
13797 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13799 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__0_7_7:
13801 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13802 ; GFX940-NEXT: ;;#ASMSTART
13803 ; GFX940-NEXT: ; def s[8:11]
13804 ; GFX940-NEXT: ;;#ASMEND
13805 ; GFX940-NEXT: ;;#ASMSTART
13806 ; GFX940-NEXT: ; def s[0:3]
13807 ; GFX940-NEXT: ;;#ASMEND
13808 ; GFX940-NEXT: s_mov_b32 s9, s3
13809 ; GFX940-NEXT: s_mov_b32 s10, s3
13810 ; GFX940-NEXT: ;;#ASMSTART
13811 ; GFX940-NEXT: ; use s[8:10]
13812 ; GFX940-NEXT: ;;#ASMEND
13813 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13814 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13815 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13816 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 7, i32 7>
13817 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13821 define void @s_shuffle_v3p3_v4p3__1_7_7() {
13822 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_7_7:
13824 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13825 ; GFX900-NEXT: ;;#ASMSTART
13826 ; GFX900-NEXT: ; def s[8:11]
13827 ; GFX900-NEXT: ;;#ASMEND
13828 ; GFX900-NEXT: ;;#ASMSTART
13829 ; GFX900-NEXT: ; def s[4:7]
13830 ; GFX900-NEXT: ;;#ASMEND
13831 ; GFX900-NEXT: s_mov_b32 s8, s5
13832 ; GFX900-NEXT: s_mov_b32 s9, s11
13833 ; GFX900-NEXT: s_mov_b32 s10, s11
13834 ; GFX900-NEXT: ;;#ASMSTART
13835 ; GFX900-NEXT: ; use s[8:10]
13836 ; GFX900-NEXT: ;;#ASMEND
13837 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13839 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_7_7:
13841 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13842 ; GFX90A-NEXT: ;;#ASMSTART
13843 ; GFX90A-NEXT: ; def s[8:11]
13844 ; GFX90A-NEXT: ;;#ASMEND
13845 ; GFX90A-NEXT: ;;#ASMSTART
13846 ; GFX90A-NEXT: ; def s[4:7]
13847 ; GFX90A-NEXT: ;;#ASMEND
13848 ; GFX90A-NEXT: s_mov_b32 s8, s5
13849 ; GFX90A-NEXT: s_mov_b32 s9, s11
13850 ; GFX90A-NEXT: s_mov_b32 s10, s11
13851 ; GFX90A-NEXT: ;;#ASMSTART
13852 ; GFX90A-NEXT: ; use s[8:10]
13853 ; GFX90A-NEXT: ;;#ASMEND
13854 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13856 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__1_7_7:
13858 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13859 ; GFX940-NEXT: ;;#ASMSTART
13860 ; GFX940-NEXT: ; def s[0:3]
13861 ; GFX940-NEXT: ;;#ASMEND
13862 ; GFX940-NEXT: ;;#ASMSTART
13863 ; GFX940-NEXT: ; def s[4:7]
13864 ; GFX940-NEXT: ;;#ASMEND
13865 ; GFX940-NEXT: s_mov_b32 s8, s1
13866 ; GFX940-NEXT: s_mov_b32 s9, s7
13867 ; GFX940-NEXT: s_mov_b32 s10, s7
13868 ; GFX940-NEXT: ;;#ASMSTART
13869 ; GFX940-NEXT: ; use s[8:10]
13870 ; GFX940-NEXT: ;;#ASMEND
13871 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13872 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13873 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13874 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 7, i32 7>
13875 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13879 define void @s_shuffle_v3p3_v4p3__2_7_7() {
13880 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_7_7:
13882 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13883 ; GFX900-NEXT: ;;#ASMSTART
13884 ; GFX900-NEXT: ; def s[8:11]
13885 ; GFX900-NEXT: ;;#ASMEND
13886 ; GFX900-NEXT: ;;#ASMSTART
13887 ; GFX900-NEXT: ; def s[4:7]
13888 ; GFX900-NEXT: ;;#ASMEND
13889 ; GFX900-NEXT: s_mov_b32 s8, s6
13890 ; GFX900-NEXT: s_mov_b32 s9, s11
13891 ; GFX900-NEXT: s_mov_b32 s10, s11
13892 ; GFX900-NEXT: ;;#ASMSTART
13893 ; GFX900-NEXT: ; use s[8:10]
13894 ; GFX900-NEXT: ;;#ASMEND
13895 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13897 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_7_7:
13899 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13900 ; GFX90A-NEXT: ;;#ASMSTART
13901 ; GFX90A-NEXT: ; def s[8:11]
13902 ; GFX90A-NEXT: ;;#ASMEND
13903 ; GFX90A-NEXT: ;;#ASMSTART
13904 ; GFX90A-NEXT: ; def s[4:7]
13905 ; GFX90A-NEXT: ;;#ASMEND
13906 ; GFX90A-NEXT: s_mov_b32 s8, s6
13907 ; GFX90A-NEXT: s_mov_b32 s9, s11
13908 ; GFX90A-NEXT: s_mov_b32 s10, s11
13909 ; GFX90A-NEXT: ;;#ASMSTART
13910 ; GFX90A-NEXT: ; use s[8:10]
13911 ; GFX90A-NEXT: ;;#ASMEND
13912 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13914 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__2_7_7:
13916 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13917 ; GFX940-NEXT: ;;#ASMSTART
13918 ; GFX940-NEXT: ; def s[0:3]
13919 ; GFX940-NEXT: ;;#ASMEND
13920 ; GFX940-NEXT: ;;#ASMSTART
13921 ; GFX940-NEXT: ; def s[4:7]
13922 ; GFX940-NEXT: ;;#ASMEND
13923 ; GFX940-NEXT: s_mov_b32 s8, s2
13924 ; GFX940-NEXT: s_mov_b32 s9, s7
13925 ; GFX940-NEXT: s_mov_b32 s10, s7
13926 ; GFX940-NEXT: ;;#ASMSTART
13927 ; GFX940-NEXT: ; use s[8:10]
13928 ; GFX940-NEXT: ;;#ASMEND
13929 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13930 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13931 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13932 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 7, i32 7>
13933 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13937 define void @s_shuffle_v3p3_v4p3__3_7_7() {
13938 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_7_7:
13940 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13941 ; GFX900-NEXT: ;;#ASMSTART
13942 ; GFX900-NEXT: ; def s[8:11]
13943 ; GFX900-NEXT: ;;#ASMEND
13944 ; GFX900-NEXT: ;;#ASMSTART
13945 ; GFX900-NEXT: ; def s[4:7]
13946 ; GFX900-NEXT: ;;#ASMEND
13947 ; GFX900-NEXT: s_mov_b32 s8, s7
13948 ; GFX900-NEXT: s_mov_b32 s9, s11
13949 ; GFX900-NEXT: s_mov_b32 s10, s11
13950 ; GFX900-NEXT: ;;#ASMSTART
13951 ; GFX900-NEXT: ; use s[8:10]
13952 ; GFX900-NEXT: ;;#ASMEND
13953 ; GFX900-NEXT: s_setpc_b64 s[30:31]
13955 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_7_7:
13957 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13958 ; GFX90A-NEXT: ;;#ASMSTART
13959 ; GFX90A-NEXT: ; def s[8:11]
13960 ; GFX90A-NEXT: ;;#ASMEND
13961 ; GFX90A-NEXT: ;;#ASMSTART
13962 ; GFX90A-NEXT: ; def s[4:7]
13963 ; GFX90A-NEXT: ;;#ASMEND
13964 ; GFX90A-NEXT: s_mov_b32 s8, s7
13965 ; GFX90A-NEXT: s_mov_b32 s9, s11
13966 ; GFX90A-NEXT: s_mov_b32 s10, s11
13967 ; GFX90A-NEXT: ;;#ASMSTART
13968 ; GFX90A-NEXT: ; use s[8:10]
13969 ; GFX90A-NEXT: ;;#ASMEND
13970 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
13972 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__3_7_7:
13974 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13975 ; GFX940-NEXT: ;;#ASMSTART
13976 ; GFX940-NEXT: ; def s[0:3]
13977 ; GFX940-NEXT: ;;#ASMEND
13978 ; GFX940-NEXT: ;;#ASMSTART
13979 ; GFX940-NEXT: ; def s[4:7]
13980 ; GFX940-NEXT: ;;#ASMEND
13981 ; GFX940-NEXT: s_mov_b32 s8, s3
13982 ; GFX940-NEXT: s_mov_b32 s9, s7
13983 ; GFX940-NEXT: s_mov_b32 s10, s7
13984 ; GFX940-NEXT: ;;#ASMSTART
13985 ; GFX940-NEXT: ; use s[8:10]
13986 ; GFX940-NEXT: ;;#ASMEND
13987 ; GFX940-NEXT: s_setpc_b64 s[30:31]
13988 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13989 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
13990 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 7, i32 7>
13991 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
13995 define void @s_shuffle_v3p3_v4p3__4_7_7() {
13996 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_7_7:
13998 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13999 ; GFX9-NEXT: ;;#ASMSTART
14000 ; GFX9-NEXT: ; def s[8:11]
14001 ; GFX9-NEXT: ;;#ASMEND
14002 ; GFX9-NEXT: s_mov_b32 s9, s11
14003 ; GFX9-NEXT: s_mov_b32 s10, s11
14004 ; GFX9-NEXT: ;;#ASMSTART
14005 ; GFX9-NEXT: ; use s[8:10]
14006 ; GFX9-NEXT: ;;#ASMEND
14007 ; GFX9-NEXT: s_setpc_b64 s[30:31]
14008 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14009 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14010 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 7, i32 7>
14011 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14015 define void @s_shuffle_v3p3_v4p3__5_7_7() {
14016 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_7_7:
14018 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14019 ; GFX900-NEXT: ;;#ASMSTART
14020 ; GFX900-NEXT: ; def s[4:7]
14021 ; GFX900-NEXT: ;;#ASMEND
14022 ; GFX900-NEXT: s_mov_b32 s8, s5
14023 ; GFX900-NEXT: s_mov_b32 s9, s7
14024 ; GFX900-NEXT: s_mov_b32 s10, s7
14025 ; GFX900-NEXT: ;;#ASMSTART
14026 ; GFX900-NEXT: ; use s[8:10]
14027 ; GFX900-NEXT: ;;#ASMEND
14028 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14030 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_7_7:
14032 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14033 ; GFX90A-NEXT: ;;#ASMSTART
14034 ; GFX90A-NEXT: ; def s[4:7]
14035 ; GFX90A-NEXT: ;;#ASMEND
14036 ; GFX90A-NEXT: s_mov_b32 s8, s5
14037 ; GFX90A-NEXT: s_mov_b32 s9, s7
14038 ; GFX90A-NEXT: s_mov_b32 s10, s7
14039 ; GFX90A-NEXT: ;;#ASMSTART
14040 ; GFX90A-NEXT: ; use s[8:10]
14041 ; GFX90A-NEXT: ;;#ASMEND
14042 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14044 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__5_7_7:
14046 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14047 ; GFX940-NEXT: ;;#ASMSTART
14048 ; GFX940-NEXT: ; def s[0:3]
14049 ; GFX940-NEXT: ;;#ASMEND
14050 ; GFX940-NEXT: s_mov_b32 s8, s1
14051 ; GFX940-NEXT: s_mov_b32 s9, s3
14052 ; GFX940-NEXT: s_mov_b32 s10, s3
14053 ; GFX940-NEXT: ;;#ASMSTART
14054 ; GFX940-NEXT: ; use s[8:10]
14055 ; GFX940-NEXT: ;;#ASMEND
14056 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14057 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14058 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14059 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 7, i32 7>
14060 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14064 define void @s_shuffle_v3p3_v4p3__6_7_7() {
14065 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_7_7:
14067 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14068 ; GFX900-NEXT: ;;#ASMSTART
14069 ; GFX900-NEXT: ; def s[4:7]
14070 ; GFX900-NEXT: ;;#ASMEND
14071 ; GFX900-NEXT: s_mov_b32 s8, s6
14072 ; GFX900-NEXT: s_mov_b32 s9, s7
14073 ; GFX900-NEXT: s_mov_b32 s10, s7
14074 ; GFX900-NEXT: ;;#ASMSTART
14075 ; GFX900-NEXT: ; use s[8:10]
14076 ; GFX900-NEXT: ;;#ASMEND
14077 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14079 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_7_7:
14081 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14082 ; GFX90A-NEXT: ;;#ASMSTART
14083 ; GFX90A-NEXT: ; def s[4:7]
14084 ; GFX90A-NEXT: ;;#ASMEND
14085 ; GFX90A-NEXT: s_mov_b32 s8, s6
14086 ; GFX90A-NEXT: s_mov_b32 s9, s7
14087 ; GFX90A-NEXT: s_mov_b32 s10, s7
14088 ; GFX90A-NEXT: ;;#ASMSTART
14089 ; GFX90A-NEXT: ; use s[8:10]
14090 ; GFX90A-NEXT: ;;#ASMEND
14091 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14093 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__6_7_7:
14095 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14096 ; GFX940-NEXT: ;;#ASMSTART
14097 ; GFX940-NEXT: ; def s[0:3]
14098 ; GFX940-NEXT: ;;#ASMEND
14099 ; GFX940-NEXT: s_mov_b32 s8, s2
14100 ; GFX940-NEXT: s_mov_b32 s9, s3
14101 ; GFX940-NEXT: s_mov_b32 s10, s3
14102 ; GFX940-NEXT: ;;#ASMSTART
14103 ; GFX940-NEXT: ; use s[8:10]
14104 ; GFX940-NEXT: ;;#ASMEND
14105 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14106 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14107 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14108 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 7, i32 7>
14109 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14113 define void @s_shuffle_v3p3_v4p3__7_u_7() {
14114 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_7:
14116 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14117 ; GFX900-NEXT: ;;#ASMSTART
14118 ; GFX900-NEXT: ; def s[4:7]
14119 ; GFX900-NEXT: ;;#ASMEND
14120 ; GFX900-NEXT: s_mov_b32 s8, s7
14121 ; GFX900-NEXT: s_mov_b32 s10, s7
14122 ; GFX900-NEXT: ;;#ASMSTART
14123 ; GFX900-NEXT: ; use s[8:10]
14124 ; GFX900-NEXT: ;;#ASMEND
14125 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14127 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_7:
14129 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14130 ; GFX90A-NEXT: ;;#ASMSTART
14131 ; GFX90A-NEXT: ; def s[4:7]
14132 ; GFX90A-NEXT: ;;#ASMEND
14133 ; GFX90A-NEXT: s_mov_b32 s8, s7
14134 ; GFX90A-NEXT: s_mov_b32 s10, s7
14135 ; GFX90A-NEXT: ;;#ASMSTART
14136 ; GFX90A-NEXT: ; use s[8:10]
14137 ; GFX90A-NEXT: ;;#ASMEND
14138 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14140 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_u_7:
14142 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14143 ; GFX940-NEXT: ;;#ASMSTART
14144 ; GFX940-NEXT: ; def s[0:3]
14145 ; GFX940-NEXT: ;;#ASMEND
14146 ; GFX940-NEXT: s_mov_b32 s8, s3
14147 ; GFX940-NEXT: s_mov_b32 s10, s3
14148 ; GFX940-NEXT: ;;#ASMSTART
14149 ; GFX940-NEXT: ; use s[8:10]
14150 ; GFX940-NEXT: ;;#ASMEND
14151 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14152 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14153 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14154 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 7>
14155 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14159 define void @s_shuffle_v3p3_v4p3__7_0_7() {
14160 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_7:
14162 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14163 ; GFX900-NEXT: ;;#ASMSTART
14164 ; GFX900-NEXT: ; def s[8:11]
14165 ; GFX900-NEXT: ;;#ASMEND
14166 ; GFX900-NEXT: ;;#ASMSTART
14167 ; GFX900-NEXT: ; def s[4:7]
14168 ; GFX900-NEXT: ;;#ASMEND
14169 ; GFX900-NEXT: s_mov_b32 s8, s11
14170 ; GFX900-NEXT: s_mov_b32 s9, s4
14171 ; GFX900-NEXT: s_mov_b32 s10, s11
14172 ; GFX900-NEXT: ;;#ASMSTART
14173 ; GFX900-NEXT: ; use s[8:10]
14174 ; GFX900-NEXT: ;;#ASMEND
14175 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14177 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_7:
14179 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14180 ; GFX90A-NEXT: ;;#ASMSTART
14181 ; GFX90A-NEXT: ; def s[8:11]
14182 ; GFX90A-NEXT: ;;#ASMEND
14183 ; GFX90A-NEXT: ;;#ASMSTART
14184 ; GFX90A-NEXT: ; def s[4:7]
14185 ; GFX90A-NEXT: ;;#ASMEND
14186 ; GFX90A-NEXT: s_mov_b32 s8, s11
14187 ; GFX90A-NEXT: s_mov_b32 s9, s4
14188 ; GFX90A-NEXT: s_mov_b32 s10, s11
14189 ; GFX90A-NEXT: ;;#ASMSTART
14190 ; GFX90A-NEXT: ; use s[8:10]
14191 ; GFX90A-NEXT: ;;#ASMEND
14192 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14194 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_0_7:
14196 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14197 ; GFX940-NEXT: ;;#ASMSTART
14198 ; GFX940-NEXT: ; def s[0:3]
14199 ; GFX940-NEXT: ;;#ASMEND
14200 ; GFX940-NEXT: ;;#ASMSTART
14201 ; GFX940-NEXT: ; def s[4:7]
14202 ; GFX940-NEXT: ;;#ASMEND
14203 ; GFX940-NEXT: s_mov_b32 s8, s7
14204 ; GFX940-NEXT: s_mov_b32 s9, s0
14205 ; GFX940-NEXT: s_mov_b32 s10, s7
14206 ; GFX940-NEXT: ;;#ASMSTART
14207 ; GFX940-NEXT: ; use s[8:10]
14208 ; GFX940-NEXT: ;;#ASMEND
14209 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14210 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14211 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14212 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 7>
14213 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14217 define void @s_shuffle_v3p3_v4p3__7_1_7() {
14218 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_7:
14220 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14221 ; GFX900-NEXT: ;;#ASMSTART
14222 ; GFX900-NEXT: ; def s[8:11]
14223 ; GFX900-NEXT: ;;#ASMEND
14224 ; GFX900-NEXT: ;;#ASMSTART
14225 ; GFX900-NEXT: ; def s[4:7]
14226 ; GFX900-NEXT: ;;#ASMEND
14227 ; GFX900-NEXT: s_mov_b32 s8, s7
14228 ; GFX900-NEXT: s_mov_b32 s10, s7
14229 ; GFX900-NEXT: ;;#ASMSTART
14230 ; GFX900-NEXT: ; use s[8:10]
14231 ; GFX900-NEXT: ;;#ASMEND
14232 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14234 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_7:
14236 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14237 ; GFX90A-NEXT: ;;#ASMSTART
14238 ; GFX90A-NEXT: ; def s[8:11]
14239 ; GFX90A-NEXT: ;;#ASMEND
14240 ; GFX90A-NEXT: ;;#ASMSTART
14241 ; GFX90A-NEXT: ; def s[4:7]
14242 ; GFX90A-NEXT: ;;#ASMEND
14243 ; GFX90A-NEXT: s_mov_b32 s8, s7
14244 ; GFX90A-NEXT: s_mov_b32 s10, s7
14245 ; GFX90A-NEXT: ;;#ASMSTART
14246 ; GFX90A-NEXT: ; use s[8:10]
14247 ; GFX90A-NEXT: ;;#ASMEND
14248 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14250 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_1_7:
14252 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14253 ; GFX940-NEXT: ;;#ASMSTART
14254 ; GFX940-NEXT: ; def s[8:11]
14255 ; GFX940-NEXT: ;;#ASMEND
14256 ; GFX940-NEXT: ;;#ASMSTART
14257 ; GFX940-NEXT: ; def s[0:3]
14258 ; GFX940-NEXT: ;;#ASMEND
14259 ; GFX940-NEXT: s_mov_b32 s8, s3
14260 ; GFX940-NEXT: s_mov_b32 s10, s3
14261 ; GFX940-NEXT: ;;#ASMSTART
14262 ; GFX940-NEXT: ; use s[8:10]
14263 ; GFX940-NEXT: ;;#ASMEND
14264 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14265 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14266 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14267 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 7>
14268 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14272 define void @s_shuffle_v3p3_v4p3__7_2_7() {
14273 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_7:
14275 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14276 ; GFX900-NEXT: ;;#ASMSTART
14277 ; GFX900-NEXT: ; def s[8:11]
14278 ; GFX900-NEXT: ;;#ASMEND
14279 ; GFX900-NEXT: ;;#ASMSTART
14280 ; GFX900-NEXT: ; def s[4:7]
14281 ; GFX900-NEXT: ;;#ASMEND
14282 ; GFX900-NEXT: s_mov_b32 s8, s11
14283 ; GFX900-NEXT: s_mov_b32 s9, s6
14284 ; GFX900-NEXT: s_mov_b32 s10, s11
14285 ; GFX900-NEXT: ;;#ASMSTART
14286 ; GFX900-NEXT: ; use s[8:10]
14287 ; GFX900-NEXT: ;;#ASMEND
14288 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14290 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_7:
14292 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14293 ; GFX90A-NEXT: ;;#ASMSTART
14294 ; GFX90A-NEXT: ; def s[8:11]
14295 ; GFX90A-NEXT: ;;#ASMEND
14296 ; GFX90A-NEXT: ;;#ASMSTART
14297 ; GFX90A-NEXT: ; def s[4:7]
14298 ; GFX90A-NEXT: ;;#ASMEND
14299 ; GFX90A-NEXT: s_mov_b32 s8, s11
14300 ; GFX90A-NEXT: s_mov_b32 s9, s6
14301 ; GFX90A-NEXT: s_mov_b32 s10, s11
14302 ; GFX90A-NEXT: ;;#ASMSTART
14303 ; GFX90A-NEXT: ; use s[8:10]
14304 ; GFX90A-NEXT: ;;#ASMEND
14305 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14307 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_2_7:
14309 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14310 ; GFX940-NEXT: ;;#ASMSTART
14311 ; GFX940-NEXT: ; def s[0:3]
14312 ; GFX940-NEXT: ;;#ASMEND
14313 ; GFX940-NEXT: ;;#ASMSTART
14314 ; GFX940-NEXT: ; def s[4:7]
14315 ; GFX940-NEXT: ;;#ASMEND
14316 ; GFX940-NEXT: s_mov_b32 s8, s7
14317 ; GFX940-NEXT: s_mov_b32 s9, s2
14318 ; GFX940-NEXT: s_mov_b32 s10, s7
14319 ; GFX940-NEXT: ;;#ASMSTART
14320 ; GFX940-NEXT: ; use s[8:10]
14321 ; GFX940-NEXT: ;;#ASMEND
14322 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14323 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14324 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14325 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 7>
14326 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14330 define void @s_shuffle_v3p3_v4p3__7_3_7() {
14331 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_7:
14333 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14334 ; GFX900-NEXT: ;;#ASMSTART
14335 ; GFX900-NEXT: ; def s[8:11]
14336 ; GFX900-NEXT: ;;#ASMEND
14337 ; GFX900-NEXT: ;;#ASMSTART
14338 ; GFX900-NEXT: ; def s[4:7]
14339 ; GFX900-NEXT: ;;#ASMEND
14340 ; GFX900-NEXT: s_mov_b32 s8, s11
14341 ; GFX900-NEXT: s_mov_b32 s9, s7
14342 ; GFX900-NEXT: s_mov_b32 s10, s11
14343 ; GFX900-NEXT: ;;#ASMSTART
14344 ; GFX900-NEXT: ; use s[8:10]
14345 ; GFX900-NEXT: ;;#ASMEND
14346 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14348 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_7:
14350 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14351 ; GFX90A-NEXT: ;;#ASMSTART
14352 ; GFX90A-NEXT: ; def s[8:11]
14353 ; GFX90A-NEXT: ;;#ASMEND
14354 ; GFX90A-NEXT: ;;#ASMSTART
14355 ; GFX90A-NEXT: ; def s[4:7]
14356 ; GFX90A-NEXT: ;;#ASMEND
14357 ; GFX90A-NEXT: s_mov_b32 s8, s11
14358 ; GFX90A-NEXT: s_mov_b32 s9, s7
14359 ; GFX90A-NEXT: s_mov_b32 s10, s11
14360 ; GFX90A-NEXT: ;;#ASMSTART
14361 ; GFX90A-NEXT: ; use s[8:10]
14362 ; GFX90A-NEXT: ;;#ASMEND
14363 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14365 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_3_7:
14367 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14368 ; GFX940-NEXT: ;;#ASMSTART
14369 ; GFX940-NEXT: ; def s[0:3]
14370 ; GFX940-NEXT: ;;#ASMEND
14371 ; GFX940-NEXT: ;;#ASMSTART
14372 ; GFX940-NEXT: ; def s[4:7]
14373 ; GFX940-NEXT: ;;#ASMEND
14374 ; GFX940-NEXT: s_mov_b32 s8, s7
14375 ; GFX940-NEXT: s_mov_b32 s9, s3
14376 ; GFX940-NEXT: s_mov_b32 s10, s7
14377 ; GFX940-NEXT: ;;#ASMSTART
14378 ; GFX940-NEXT: ; use s[8:10]
14379 ; GFX940-NEXT: ;;#ASMEND
14380 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14381 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14382 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14383 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 7>
14384 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14388 define void @s_shuffle_v3p3_v4p3__7_4_7() {
14389 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_7:
14391 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14392 ; GFX900-NEXT: ;;#ASMSTART
14393 ; GFX900-NEXT: ; def s[4:7]
14394 ; GFX900-NEXT: ;;#ASMEND
14395 ; GFX900-NEXT: s_mov_b32 s8, s7
14396 ; GFX900-NEXT: s_mov_b32 s9, s4
14397 ; GFX900-NEXT: s_mov_b32 s10, s7
14398 ; GFX900-NEXT: ;;#ASMSTART
14399 ; GFX900-NEXT: ; use s[8:10]
14400 ; GFX900-NEXT: ;;#ASMEND
14401 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14403 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_7:
14405 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14406 ; GFX90A-NEXT: ;;#ASMSTART
14407 ; GFX90A-NEXT: ; def s[4:7]
14408 ; GFX90A-NEXT: ;;#ASMEND
14409 ; GFX90A-NEXT: s_mov_b32 s8, s7
14410 ; GFX90A-NEXT: s_mov_b32 s9, s4
14411 ; GFX90A-NEXT: s_mov_b32 s10, s7
14412 ; GFX90A-NEXT: ;;#ASMSTART
14413 ; GFX90A-NEXT: ; use s[8:10]
14414 ; GFX90A-NEXT: ;;#ASMEND
14415 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14417 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_4_7:
14419 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14420 ; GFX940-NEXT: ;;#ASMSTART
14421 ; GFX940-NEXT: ; def s[0:3]
14422 ; GFX940-NEXT: ;;#ASMEND
14423 ; GFX940-NEXT: s_mov_b32 s8, s3
14424 ; GFX940-NEXT: s_mov_b32 s9, s0
14425 ; GFX940-NEXT: s_mov_b32 s10, s3
14426 ; GFX940-NEXT: ;;#ASMSTART
14427 ; GFX940-NEXT: ; use s[8:10]
14428 ; GFX940-NEXT: ;;#ASMEND
14429 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14430 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14431 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14432 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 7>
14433 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14437 define void @s_shuffle_v3p3_v4p3__7_5_7() {
14438 ; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_5_7:
14440 ; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14441 ; GFX9-NEXT: ;;#ASMSTART
14442 ; GFX9-NEXT: ; def s[8:11]
14443 ; GFX9-NEXT: ;;#ASMEND
14444 ; GFX9-NEXT: s_mov_b32 s8, s11
14445 ; GFX9-NEXT: s_mov_b32 s10, s11
14446 ; GFX9-NEXT: ;;#ASMSTART
14447 ; GFX9-NEXT: ; use s[8:10]
14448 ; GFX9-NEXT: ;;#ASMEND
14449 ; GFX9-NEXT: s_setpc_b64 s[30:31]
14450 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14451 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14452 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 7>
14453 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14457 define void @s_shuffle_v3p3_v4p3__7_6_7() {
14458 ; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_7:
14460 ; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14461 ; GFX900-NEXT: ;;#ASMSTART
14462 ; GFX900-NEXT: ; def s[4:7]
14463 ; GFX900-NEXT: ;;#ASMEND
14464 ; GFX900-NEXT: s_mov_b32 s8, s7
14465 ; GFX900-NEXT: s_mov_b32 s9, s6
14466 ; GFX900-NEXT: s_mov_b32 s10, s7
14467 ; GFX900-NEXT: ;;#ASMSTART
14468 ; GFX900-NEXT: ; use s[8:10]
14469 ; GFX900-NEXT: ;;#ASMEND
14470 ; GFX900-NEXT: s_setpc_b64 s[30:31]
14472 ; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_7:
14474 ; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14475 ; GFX90A-NEXT: ;;#ASMSTART
14476 ; GFX90A-NEXT: ; def s[4:7]
14477 ; GFX90A-NEXT: ;;#ASMEND
14478 ; GFX90A-NEXT: s_mov_b32 s8, s7
14479 ; GFX90A-NEXT: s_mov_b32 s9, s6
14480 ; GFX90A-NEXT: s_mov_b32 s10, s7
14481 ; GFX90A-NEXT: ;;#ASMSTART
14482 ; GFX90A-NEXT: ; use s[8:10]
14483 ; GFX90A-NEXT: ;;#ASMEND
14484 ; GFX90A-NEXT: s_setpc_b64 s[30:31]
14486 ; GFX940-LABEL: s_shuffle_v3p3_v4p3__7_6_7:
14488 ; GFX940-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14489 ; GFX940-NEXT: ;;#ASMSTART
14490 ; GFX940-NEXT: ; def s[0:3]
14491 ; GFX940-NEXT: ;;#ASMEND
14492 ; GFX940-NEXT: s_mov_b32 s8, s3
14493 ; GFX940-NEXT: s_mov_b32 s9, s2
14494 ; GFX940-NEXT: s_mov_b32 s10, s3
14495 ; GFX940-NEXT: ;;#ASMSTART
14496 ; GFX940-NEXT: ; use s[8:10]
14497 ; GFX940-NEXT: ;;#ASMEND
14498 ; GFX940-NEXT: s_setpc_b64 s[30:31]
14499 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14500 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()
14501 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 7>
14502 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)
14505 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
14506 ; GFX90APLUS: {{.*}}