[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / shufflevector.v4f32.v3f32.ll
blob31c458f5338cb99ad575e136fbbeb5de19bc010b
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_v4f32_v3f32__u_u_u_u(ptr addrspace(1) inreg %ptr) {
8 ; GFX9-LABEL: v_shuffle_v4f32_v3f32__u_u_u_u:
9 ; GFX9:       ; %bb.0:
10 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
12   %vec0 = call <3 x float> asm "; def $0", "=v"()
13   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> poison
14   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
15   ret void
18 define void @v_shuffle_v4f32_v3f32__0_u_u_u(ptr addrspace(1) inreg %ptr) {
19 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__0_u_u_u:
20 ; GFX900:       ; %bb.0:
21 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
23 ; GFX900-NEXT:    ;;#ASMSTART
24 ; GFX900-NEXT:    ; def v[0:2]
25 ; GFX900-NEXT:    ;;#ASMEND
26 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
27 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
28 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
30 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__0_u_u_u:
31 ; GFX90A:       ; %bb.0:
32 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
34 ; GFX90A-NEXT:    ;;#ASMSTART
35 ; GFX90A-NEXT:    ; def v[0:2]
36 ; GFX90A-NEXT:    ;;#ASMEND
37 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
38 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
39 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__0_u_u_u:
42 ; GFX940:       ; %bb.0:
43 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
45 ; GFX940-NEXT:    ;;#ASMSTART
46 ; GFX940-NEXT:    ; def v[0:2]
47 ; GFX940-NEXT:    ;;#ASMEND
48 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
49 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
50 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
51   %vec0 = call <3 x float> asm "; def $0", "=v"()
52   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
53   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
54   ret void
57 define void @v_shuffle_v4f32_v3f32__1_u_u_u(ptr addrspace(1) inreg %ptr) {
58 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__1_u_u_u:
59 ; GFX900:       ; %bb.0:
60 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61 ; GFX900-NEXT:    ;;#ASMSTART
62 ; GFX900-NEXT:    ; def v[0:2]
63 ; GFX900-NEXT:    ;;#ASMEND
64 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
65 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
66 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
67 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
68 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
70 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__1_u_u_u:
71 ; GFX90A:       ; %bb.0:
72 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73 ; GFX90A-NEXT:    ;;#ASMSTART
74 ; GFX90A-NEXT:    ; def v[0:2]
75 ; GFX90A-NEXT:    ;;#ASMEND
76 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
77 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
78 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
79 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
80 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
82 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__1_u_u_u:
83 ; GFX940:       ; %bb.0:
84 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
85 ; GFX940-NEXT:    ;;#ASMSTART
86 ; GFX940-NEXT:    ; def v[0:2]
87 ; GFX940-NEXT:    ;;#ASMEND
88 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
89 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
90 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
91 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
92 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
93   %vec0 = call <3 x float> asm "; def $0", "=v"()
94   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
95   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
96   ret void
99 define void @v_shuffle_v4f32_v3f32__2_u_u_u(ptr addrspace(1) inreg %ptr) {
100 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__2_u_u_u:
101 ; GFX900:       ; %bb.0:
102 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
103 ; GFX900-NEXT:    ;;#ASMSTART
104 ; GFX900-NEXT:    ; def v[0:2]
105 ; GFX900-NEXT:    ;;#ASMEND
106 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
107 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
108 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
109 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
110 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
112 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__2_u_u_u:
113 ; GFX90A:       ; %bb.0:
114 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
115 ; GFX90A-NEXT:    ;;#ASMSTART
116 ; GFX90A-NEXT:    ; def v[0:2]
117 ; GFX90A-NEXT:    ;;#ASMEND
118 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
119 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
120 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
121 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
122 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
124 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__2_u_u_u:
125 ; GFX940:       ; %bb.0:
126 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
127 ; GFX940-NEXT:    ;;#ASMSTART
128 ; GFX940-NEXT:    ; def v[0:2]
129 ; GFX940-NEXT:    ;;#ASMEND
130 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
131 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
132 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
133 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
134 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
135   %vec0 = call <3 x float> asm "; def $0", "=v"()
136   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
137   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
138   ret void
141 define void @v_shuffle_v4f32_v3f32__3_u_u_u(ptr addrspace(1) inreg %ptr) {
142 ; GFX9-LABEL: v_shuffle_v4f32_v3f32__3_u_u_u:
143 ; GFX9:       ; %bb.0:
144 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
145 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
146   %vec0 = call <3 x float> asm "; def $0", "=v"()
147   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
148   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
149   ret void
152 define void @v_shuffle_v4f32_v3f32__4_u_u_u(ptr addrspace(1) inreg %ptr) {
153 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__4_u_u_u:
154 ; GFX900:       ; %bb.0:
155 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
156 ; GFX900-NEXT:    ;;#ASMSTART
157 ; GFX900-NEXT:    ; def v[0:2]
158 ; GFX900-NEXT:    ;;#ASMEND
159 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
160 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
161 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
162 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
163 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
165 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__4_u_u_u:
166 ; GFX90A:       ; %bb.0:
167 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
168 ; GFX90A-NEXT:    ;;#ASMSTART
169 ; GFX90A-NEXT:    ; def v[0:2]
170 ; GFX90A-NEXT:    ;;#ASMEND
171 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
172 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
173 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
174 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
175 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
177 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__4_u_u_u:
178 ; GFX940:       ; %bb.0:
179 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
180 ; GFX940-NEXT:    ;;#ASMSTART
181 ; GFX940-NEXT:    ; def v[0:2]
182 ; GFX940-NEXT:    ;;#ASMEND
183 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
184 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
185 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
186 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
187 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
188   %vec0 = call <3 x float> asm "; def $0", "=v"()
189   %vec1 = call <3 x float> asm "; def $0", "=v"()
190   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>
191   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
192   ret void
195 define void @v_shuffle_v4f32_v3f32__5_u_u_u(ptr addrspace(1) inreg %ptr) {
196 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_u_u_u:
197 ; GFX900:       ; %bb.0:
198 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
199 ; GFX900-NEXT:    ;;#ASMSTART
200 ; GFX900-NEXT:    ; def v[0:2]
201 ; GFX900-NEXT:    ;;#ASMEND
202 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
203 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
204 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
205 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
206 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
208 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_u_u_u:
209 ; GFX90A:       ; %bb.0:
210 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
211 ; GFX90A-NEXT:    ;;#ASMSTART
212 ; GFX90A-NEXT:    ; def v[0:2]
213 ; GFX90A-NEXT:    ;;#ASMEND
214 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
215 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
216 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
217 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
218 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
220 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_u_u_u:
221 ; GFX940:       ; %bb.0:
222 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
223 ; GFX940-NEXT:    ;;#ASMSTART
224 ; GFX940-NEXT:    ; def v[0:2]
225 ; GFX940-NEXT:    ;;#ASMEND
226 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
227 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
228 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
229 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
230 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
231   %vec0 = call <3 x float> asm "; def $0", "=v"()
232   %vec1 = call <3 x float> asm "; def $0", "=v"()
233   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>
234   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
235   ret void
238 define void @v_shuffle_v4f32_v3f32__5_0_u_u(ptr addrspace(1) inreg %ptr) {
239 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_0_u_u:
240 ; GFX900:       ; %bb.0:
241 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
242 ; GFX900-NEXT:    ;;#ASMSTART
243 ; GFX900-NEXT:    ; def v[1:3]
244 ; GFX900-NEXT:    ;;#ASMEND
245 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
246 ; GFX900-NEXT:    ;;#ASMSTART
247 ; GFX900-NEXT:    ; def v[2:4]
248 ; GFX900-NEXT:    ;;#ASMEND
249 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
250 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
251 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
252 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
254 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_0_u_u:
255 ; GFX90A:       ; %bb.0:
256 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
257 ; GFX90A-NEXT:    ;;#ASMSTART
258 ; GFX90A-NEXT:    ; def v[2:4]
259 ; GFX90A-NEXT:    ;;#ASMEND
260 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
261 ; GFX90A-NEXT:    ;;#ASMSTART
262 ; GFX90A-NEXT:    ; def v[4:6]
263 ; GFX90A-NEXT:    ;;#ASMEND
264 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
265 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
266 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
267 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
268 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
270 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_0_u_u:
271 ; GFX940:       ; %bb.0:
272 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
273 ; GFX940-NEXT:    ;;#ASMSTART
274 ; GFX940-NEXT:    ; def v[2:4]
275 ; GFX940-NEXT:    ;;#ASMEND
276 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
277 ; GFX940-NEXT:    ;;#ASMSTART
278 ; GFX940-NEXT:    ; def v[4:6]
279 ; GFX940-NEXT:    ;;#ASMEND
280 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
281 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
282 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
283 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
284 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
285   %vec0 = call <3 x float> asm "; def $0", "=v"()
286   %vec1 = call <3 x float> asm "; def $0", "=v"()
287   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>
288   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
289   ret void
292 define void @v_shuffle_v4f32_v3f32__5_1_u_u(ptr addrspace(1) inreg %ptr) {
293 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_1_u_u:
294 ; GFX900:       ; %bb.0:
295 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
296 ; GFX900-NEXT:    ;;#ASMSTART
297 ; GFX900-NEXT:    ; def v[0:2]
298 ; GFX900-NEXT:    ;;#ASMEND
299 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
300 ; GFX900-NEXT:    ;;#ASMSTART
301 ; GFX900-NEXT:    ; def v[2:4]
302 ; GFX900-NEXT:    ;;#ASMEND
303 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
304 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
305 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
306 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
308 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_1_u_u:
309 ; GFX90A:       ; %bb.0:
310 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
311 ; GFX90A-NEXT:    ;;#ASMSTART
312 ; GFX90A-NEXT:    ; def v[0:2]
313 ; GFX90A-NEXT:    ;;#ASMEND
314 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
315 ; GFX90A-NEXT:    ;;#ASMSTART
316 ; GFX90A-NEXT:    ; def v[2:4]
317 ; GFX90A-NEXT:    ;;#ASMEND
318 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
319 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
320 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
321 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
323 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_1_u_u:
324 ; GFX940:       ; %bb.0:
325 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
326 ; GFX940-NEXT:    ;;#ASMSTART
327 ; GFX940-NEXT:    ; def v[0:2]
328 ; GFX940-NEXT:    ;;#ASMEND
329 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
330 ; GFX940-NEXT:    ;;#ASMSTART
331 ; GFX940-NEXT:    ; def v[2:4]
332 ; GFX940-NEXT:    ;;#ASMEND
333 ; GFX940-NEXT:    s_nop 0
334 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
335 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
336 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
337 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
338   %vec0 = call <3 x float> asm "; def $0", "=v"()
339   %vec1 = call <3 x float> asm "; def $0", "=v"()
340   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>
341   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
342   ret void
345 define void @v_shuffle_v4f32_v3f32__5_2_u_u(ptr addrspace(1) inreg %ptr) {
346 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_2_u_u:
347 ; GFX900:       ; %bb.0:
348 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
349 ; GFX900-NEXT:    ;;#ASMSTART
350 ; GFX900-NEXT:    ; def v[0:2]
351 ; GFX900-NEXT:    ;;#ASMEND
352 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
353 ; GFX900-NEXT:    ;;#ASMSTART
354 ; GFX900-NEXT:    ; def v[3:5]
355 ; GFX900-NEXT:    ;;#ASMEND
356 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
357 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
358 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
359 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
360 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
362 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_2_u_u:
363 ; GFX90A:       ; %bb.0:
364 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
365 ; GFX90A-NEXT:    ;;#ASMSTART
366 ; GFX90A-NEXT:    ; def v[0:2]
367 ; GFX90A-NEXT:    ;;#ASMEND
368 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
369 ; GFX90A-NEXT:    ;;#ASMSTART
370 ; GFX90A-NEXT:    ; def v[4:6]
371 ; GFX90A-NEXT:    ;;#ASMEND
372 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
373 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
374 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
375 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
376 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
378 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_2_u_u:
379 ; GFX940:       ; %bb.0:
380 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
381 ; GFX940-NEXT:    ;;#ASMSTART
382 ; GFX940-NEXT:    ; def v[0:2]
383 ; GFX940-NEXT:    ;;#ASMEND
384 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
385 ; GFX940-NEXT:    ;;#ASMSTART
386 ; GFX940-NEXT:    ; def v[4:6]
387 ; GFX940-NEXT:    ;;#ASMEND
388 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
389 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
390 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
391 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
392 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
393   %vec0 = call <3 x float> asm "; def $0", "=v"()
394   %vec1 = call <3 x float> asm "; def $0", "=v"()
395   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>
396   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
397   ret void
400 define void @v_shuffle_v4f32_v3f32__5_3_u_u(ptr addrspace(1) inreg %ptr) {
401 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_3_u_u:
402 ; GFX900:       ; %bb.0:
403 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
404 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
405 ; GFX900-NEXT:    ;;#ASMSTART
406 ; GFX900-NEXT:    ; def v[1:3]
407 ; GFX900-NEXT:    ;;#ASMEND
408 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
409 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
410 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
411 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
413 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_3_u_u:
414 ; GFX90A:       ; %bb.0:
415 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
416 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
417 ; GFX90A-NEXT:    ;;#ASMSTART
418 ; GFX90A-NEXT:    ; def v[2:4]
419 ; GFX90A-NEXT:    ;;#ASMEND
420 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
421 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
422 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
423 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
424 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
426 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_3_u_u:
427 ; GFX940:       ; %bb.0:
428 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
429 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
430 ; GFX940-NEXT:    ;;#ASMSTART
431 ; GFX940-NEXT:    ; def v[2:4]
432 ; GFX940-NEXT:    ;;#ASMEND
433 ; GFX940-NEXT:    s_nop 0
434 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
435 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
436 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
437 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
438 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
439   %vec0 = call <3 x float> asm "; def $0", "=v"()
440   %vec1 = call <3 x float> asm "; def $0", "=v"()
441   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>
442   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
443   ret void
446 define void @v_shuffle_v4f32_v3f32__5_4_u_u(ptr addrspace(1) inreg %ptr) {
447 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_4_u_u:
448 ; GFX900:       ; %bb.0:
449 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
450 ; GFX900-NEXT:    ;;#ASMSTART
451 ; GFX900-NEXT:    ; def v[0:2]
452 ; GFX900-NEXT:    ;;#ASMEND
453 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
454 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
455 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
456 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
457 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
459 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_4_u_u:
460 ; GFX90A:       ; %bb.0:
461 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
462 ; GFX90A-NEXT:    ;;#ASMSTART
463 ; GFX90A-NEXT:    ; def v[0:2]
464 ; GFX90A-NEXT:    ;;#ASMEND
465 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
466 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
467 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
468 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
469 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
471 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_4_u_u:
472 ; GFX940:       ; %bb.0:
473 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
474 ; GFX940-NEXT:    ;;#ASMSTART
475 ; GFX940-NEXT:    ; def v[0:2]
476 ; GFX940-NEXT:    ;;#ASMEND
477 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
478 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
479 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
480 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
481 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
482   %vec0 = call <3 x float> asm "; def $0", "=v"()
483   %vec1 = call <3 x float> asm "; def $0", "=v"()
484   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>
485   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
486   ret void
489 define void @v_shuffle_v4f32_v3f32__5_5_u_u(ptr addrspace(1) inreg %ptr) {
490 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_u_u:
491 ; GFX900:       ; %bb.0:
492 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
493 ; GFX900-NEXT:    ;;#ASMSTART
494 ; GFX900-NEXT:    ; def v[0:2]
495 ; GFX900-NEXT:    ;;#ASMEND
496 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
497 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
498 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
499 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
500 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
501 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
503 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_u_u:
504 ; GFX90A:       ; %bb.0:
505 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
506 ; GFX90A-NEXT:    ;;#ASMSTART
507 ; GFX90A-NEXT:    ; def v[0:2]
508 ; GFX90A-NEXT:    ;;#ASMEND
509 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
510 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
511 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
512 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
513 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
514 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
516 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_u_u:
517 ; GFX940:       ; %bb.0:
518 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
519 ; GFX940-NEXT:    ;;#ASMSTART
520 ; GFX940-NEXT:    ; def v[0:2]
521 ; GFX940-NEXT:    ;;#ASMEND
522 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
523 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
524 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
525 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
526 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
527 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
528   %vec0 = call <3 x float> asm "; def $0", "=v"()
529   %vec1 = call <3 x float> asm "; def $0", "=v"()
530   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>
531   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
532   ret void
535 define void @v_shuffle_v4f32_v3f32__5_5_0_u(ptr addrspace(1) inreg %ptr) {
536 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_0_u:
537 ; GFX900:       ; %bb.0:
538 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
539 ; GFX900-NEXT:    ;;#ASMSTART
540 ; GFX900-NEXT:    ; def v[2:4]
541 ; GFX900-NEXT:    ;;#ASMEND
542 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
543 ; GFX900-NEXT:    ;;#ASMSTART
544 ; GFX900-NEXT:    ; def v[3:5]
545 ; GFX900-NEXT:    ;;#ASMEND
546 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
547 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
548 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
549 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
550 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
552 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_0_u:
553 ; GFX90A:       ; %bb.0:
554 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
555 ; GFX90A-NEXT:    ;;#ASMSTART
556 ; GFX90A-NEXT:    ; def v[2:4]
557 ; GFX90A-NEXT:    ;;#ASMEND
558 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
559 ; GFX90A-NEXT:    ;;#ASMSTART
560 ; GFX90A-NEXT:    ; def v[4:6]
561 ; GFX90A-NEXT:    ;;#ASMEND
562 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
563 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
564 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
565 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
566 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
568 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_0_u:
569 ; GFX940:       ; %bb.0:
570 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
571 ; GFX940-NEXT:    ;;#ASMSTART
572 ; GFX940-NEXT:    ; def v[2:4]
573 ; GFX940-NEXT:    ;;#ASMEND
574 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
575 ; GFX940-NEXT:    ;;#ASMSTART
576 ; GFX940-NEXT:    ; def v[4:6]
577 ; GFX940-NEXT:    ;;#ASMEND
578 ; GFX940-NEXT:    s_nop 0
579 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
580 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
581 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
582 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
583 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
584   %vec0 = call <3 x float> asm "; def $0", "=v"()
585   %vec1 = call <3 x float> asm "; def $0", "=v"()
586   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>
587   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
588   ret void
591 define void @v_shuffle_v4f32_v3f32__5_5_1_u(ptr addrspace(1) inreg %ptr) {
592 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_1_u:
593 ; GFX900:       ; %bb.0:
594 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
595 ; GFX900-NEXT:    ;;#ASMSTART
596 ; GFX900-NEXT:    ; def v[1:3]
597 ; GFX900-NEXT:    ;;#ASMEND
598 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
599 ; GFX900-NEXT:    ;;#ASMSTART
600 ; GFX900-NEXT:    ; def v[3:5]
601 ; GFX900-NEXT:    ;;#ASMEND
602 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
603 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
604 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
605 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
606 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
608 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_1_u:
609 ; GFX90A:       ; %bb.0:
610 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
611 ; GFX90A-NEXT:    ;;#ASMSTART
612 ; GFX90A-NEXT:    ; def v[2:4]
613 ; GFX90A-NEXT:    ;;#ASMEND
614 ; GFX90A-NEXT:    ;;#ASMSTART
615 ; GFX90A-NEXT:    ; def v[0:2]
616 ; GFX90A-NEXT:    ;;#ASMEND
617 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
618 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
619 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
620 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
621 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
622 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
623 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
625 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_1_u:
626 ; GFX940:       ; %bb.0:
627 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
628 ; GFX940-NEXT:    ;;#ASMSTART
629 ; GFX940-NEXT:    ; def v[2:4]
630 ; GFX940-NEXT:    ;;#ASMEND
631 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
632 ; GFX940-NEXT:    ;;#ASMSTART
633 ; GFX940-NEXT:    ; def v[0:2]
634 ; GFX940-NEXT:    ;;#ASMEND
635 ; GFX940-NEXT:    s_nop 0
636 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
637 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
638 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
639 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
640 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
641 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
642   %vec0 = call <3 x float> asm "; def $0", "=v"()
643   %vec1 = call <3 x float> asm "; def $0", "=v"()
644   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>
645   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
646   ret void
649 define void @v_shuffle_v4f32_v3f32__5_5_2_u(ptr addrspace(1) inreg %ptr) {
650 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_2_u:
651 ; GFX900:       ; %bb.0:
652 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
653 ; GFX900-NEXT:    ;;#ASMSTART
654 ; GFX900-NEXT:    ; def v[0:2]
655 ; GFX900-NEXT:    ;;#ASMEND
656 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
657 ; GFX900-NEXT:    ;;#ASMSTART
658 ; GFX900-NEXT:    ; def v[3:5]
659 ; GFX900-NEXT:    ;;#ASMEND
660 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
661 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
662 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
663 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
664 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
666 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_2_u:
667 ; GFX90A:       ; %bb.0:
668 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
669 ; GFX90A-NEXT:    ;;#ASMSTART
670 ; GFX90A-NEXT:    ; def v[0:2]
671 ; GFX90A-NEXT:    ;;#ASMEND
672 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
673 ; GFX90A-NEXT:    ;;#ASMSTART
674 ; GFX90A-NEXT:    ; def v[4:6]
675 ; GFX90A-NEXT:    ;;#ASMEND
676 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
677 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
678 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
679 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
680 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
682 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_2_u:
683 ; GFX940:       ; %bb.0:
684 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
685 ; GFX940-NEXT:    ;;#ASMSTART
686 ; GFX940-NEXT:    ; def v[0:2]
687 ; GFX940-NEXT:    ;;#ASMEND
688 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
689 ; GFX940-NEXT:    ;;#ASMSTART
690 ; GFX940-NEXT:    ; def v[4:6]
691 ; GFX940-NEXT:    ;;#ASMEND
692 ; GFX940-NEXT:    s_nop 0
693 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
694 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
695 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
696 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
697 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
698   %vec0 = call <3 x float> asm "; def $0", "=v"()
699   %vec1 = call <3 x float> asm "; def $0", "=v"()
700   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>
701   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
702   ret void
705 define void @v_shuffle_v4f32_v3f32__5_5_3_u(ptr addrspace(1) inreg %ptr) {
706 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_3_u:
707 ; GFX900:       ; %bb.0:
708 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
709 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
710 ; GFX900-NEXT:    ;;#ASMSTART
711 ; GFX900-NEXT:    ; def v[2:4]
712 ; GFX900-NEXT:    ;;#ASMEND
713 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
714 ; GFX900-NEXT:    v_mov_b32_e32 v1, v4
715 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
716 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
717 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
719 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_3_u:
720 ; GFX90A:       ; %bb.0:
721 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
722 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
723 ; GFX90A-NEXT:    ;;#ASMSTART
724 ; GFX90A-NEXT:    ; def v[2:4]
725 ; GFX90A-NEXT:    ;;#ASMEND
726 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
727 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
728 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
729 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
730 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
732 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_3_u:
733 ; GFX940:       ; %bb.0:
734 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
735 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
736 ; GFX940-NEXT:    ;;#ASMSTART
737 ; GFX940-NEXT:    ; def v[2:4]
738 ; GFX940-NEXT:    ;;#ASMEND
739 ; GFX940-NEXT:    s_nop 0
740 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
741 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
742 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
743 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
744 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
745   %vec0 = call <3 x float> asm "; def $0", "=v"()
746   %vec1 = call <3 x float> asm "; def $0", "=v"()
747   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>
748   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
749   ret void
752 define void @v_shuffle_v4f32_v3f32__5_5_4_u(ptr addrspace(1) inreg %ptr) {
753 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_4_u:
754 ; GFX900:       ; %bb.0:
755 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
756 ; GFX900-NEXT:    ;;#ASMSTART
757 ; GFX900-NEXT:    ; def v[1:3]
758 ; GFX900-NEXT:    ;;#ASMEND
759 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
760 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
761 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
762 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
763 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
764 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
766 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_4_u:
767 ; GFX90A:       ; %bb.0:
768 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
769 ; GFX90A-NEXT:    ;;#ASMSTART
770 ; GFX90A-NEXT:    ; def v[2:4]
771 ; GFX90A-NEXT:    ;;#ASMEND
772 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
773 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
774 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
775 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
776 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
777 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
778 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
780 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_4_u:
781 ; GFX940:       ; %bb.0:
782 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
783 ; GFX940-NEXT:    ;;#ASMSTART
784 ; GFX940-NEXT:    ; def v[2:4]
785 ; GFX940-NEXT:    ;;#ASMEND
786 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
787 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
788 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
789 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
790 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
791 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
792 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
793   %vec0 = call <3 x float> asm "; def $0", "=v"()
794   %vec1 = call <3 x float> asm "; def $0", "=v"()
795   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>
796   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
797   ret void
800 define void @v_shuffle_v4f32_v3f32__5_5_5_u(ptr addrspace(1) inreg %ptr) {
801 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_5_u:
802 ; GFX900:       ; %bb.0:
803 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
804 ; GFX900-NEXT:    ;;#ASMSTART
805 ; GFX900-NEXT:    ; def v[0:2]
806 ; GFX900-NEXT:    ;;#ASMEND
807 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
808 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
809 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
810 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
811 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
812 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
814 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_5_u:
815 ; GFX90A:       ; %bb.0:
816 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
817 ; GFX90A-NEXT:    ;;#ASMSTART
818 ; GFX90A-NEXT:    ; def v[0:2]
819 ; GFX90A-NEXT:    ;;#ASMEND
820 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
821 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
822 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
823 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
824 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
825 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
827 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_5_u:
828 ; GFX940:       ; %bb.0:
829 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
830 ; GFX940-NEXT:    ;;#ASMSTART
831 ; GFX940-NEXT:    ; def v[0:2]
832 ; GFX940-NEXT:    ;;#ASMEND
833 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
834 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
835 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
836 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
837 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
838 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
839   %vec0 = call <3 x float> asm "; def $0", "=v"()
840   %vec1 = call <3 x float> asm "; def $0", "=v"()
841   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>
842   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
843   ret void
846 define void @v_shuffle_v4f32_v3f32__5_5_5_0(ptr addrspace(1) inreg %ptr) {
847 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_5_0:
848 ; GFX900:       ; %bb.0:
849 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
850 ; GFX900-NEXT:    ;;#ASMSTART
851 ; GFX900-NEXT:    ; def v[0:2]
852 ; GFX900-NEXT:    ;;#ASMEND
853 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
854 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
855 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
856 ; GFX900-NEXT:    ;;#ASMSTART
857 ; GFX900-NEXT:    ; def v[3:5]
858 ; GFX900-NEXT:    ;;#ASMEND
859 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
860 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
861 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
863 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_5_0:
864 ; GFX90A:       ; %bb.0:
865 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
866 ; GFX90A-NEXT:    ;;#ASMSTART
867 ; GFX90A-NEXT:    ; def v[0:2]
868 ; GFX90A-NEXT:    ;;#ASMEND
869 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
870 ; GFX90A-NEXT:    ;;#ASMSTART
871 ; GFX90A-NEXT:    ; def v[4:6]
872 ; GFX90A-NEXT:    ;;#ASMEND
873 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
874 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
875 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
876 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
877 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
878 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
880 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_5_0:
881 ; GFX940:       ; %bb.0:
882 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
883 ; GFX940-NEXT:    ;;#ASMSTART
884 ; GFX940-NEXT:    ; def v[0:2]
885 ; GFX940-NEXT:    ;;#ASMEND
886 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
887 ; GFX940-NEXT:    ;;#ASMSTART
888 ; GFX940-NEXT:    ; def v[4:6]
889 ; GFX940-NEXT:    ;;#ASMEND
890 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
891 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
892 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
893 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
894 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
895 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
896   %vec0 = call <3 x float> asm "; def $0", "=v"()
897   %vec1 = call <3 x float> asm "; def $0", "=v"()
898   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 0>
899   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
900   ret void
903 define void @v_shuffle_v4f32_v3f32__5_5_5_1(ptr addrspace(1) inreg %ptr) {
904 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_5_1:
905 ; GFX900:       ; %bb.0:
906 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
907 ; GFX900-NEXT:    ;;#ASMSTART
908 ; GFX900-NEXT:    ; def v[2:4]
909 ; GFX900-NEXT:    ;;#ASMEND
910 ; GFX900-NEXT:    ;;#ASMSTART
911 ; GFX900-NEXT:    ; def v[0:2]
912 ; GFX900-NEXT:    ;;#ASMEND
913 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
914 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
915 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
916 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
917 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
918 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
920 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_5_1:
921 ; GFX90A:       ; %bb.0:
922 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
923 ; GFX90A-NEXT:    ;;#ASMSTART
924 ; GFX90A-NEXT:    ; def v[2:4]
925 ; GFX90A-NEXT:    ;;#ASMEND
926 ; GFX90A-NEXT:    ;;#ASMSTART
927 ; GFX90A-NEXT:    ; def v[0:2]
928 ; GFX90A-NEXT:    ;;#ASMEND
929 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
930 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
931 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
932 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
933 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
934 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
936 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_5_1:
937 ; GFX940:       ; %bb.0:
938 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
939 ; GFX940-NEXT:    ;;#ASMSTART
940 ; GFX940-NEXT:    ; def v[2:4]
941 ; GFX940-NEXT:    ;;#ASMEND
942 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
943 ; GFX940-NEXT:    ;;#ASMSTART
944 ; GFX940-NEXT:    ; def v[0:2]
945 ; GFX940-NEXT:    ;;#ASMEND
946 ; GFX940-NEXT:    s_nop 0
947 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
948 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
949 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
950 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
951 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
952   %vec0 = call <3 x float> asm "; def $0", "=v"()
953   %vec1 = call <3 x float> asm "; def $0", "=v"()
954   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 1>
955   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
956   ret void
959 define void @v_shuffle_v4f32_v3f32__5_5_5_2(ptr addrspace(1) inreg %ptr) {
960 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_5_2:
961 ; GFX900:       ; %bb.0:
962 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
963 ; GFX900-NEXT:    ;;#ASMSTART
964 ; GFX900-NEXT:    ; def v[1:3]
965 ; GFX900-NEXT:    ;;#ASMEND
966 ; GFX900-NEXT:    ;;#ASMSTART
967 ; GFX900-NEXT:    ; def v[0:2]
968 ; GFX900-NEXT:    ;;#ASMEND
969 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
970 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
971 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
972 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
973 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
974 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
976 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_5_2:
977 ; GFX90A:       ; %bb.0:
978 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
979 ; GFX90A-NEXT:    ;;#ASMSTART
980 ; GFX90A-NEXT:    ; def v[2:4]
981 ; GFX90A-NEXT:    ;;#ASMEND
982 ; GFX90A-NEXT:    ;;#ASMSTART
983 ; GFX90A-NEXT:    ; def v[0:2]
984 ; GFX90A-NEXT:    ;;#ASMEND
985 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
986 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
987 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
988 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
989 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
990 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
991 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
993 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_5_2:
994 ; GFX940:       ; %bb.0:
995 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
996 ; GFX940-NEXT:    ;;#ASMSTART
997 ; GFX940-NEXT:    ; def v[2:4]
998 ; GFX940-NEXT:    ;;#ASMEND
999 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
1000 ; GFX940-NEXT:    ;;#ASMSTART
1001 ; GFX940-NEXT:    ; def v[0:2]
1002 ; GFX940-NEXT:    ;;#ASMEND
1003 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1004 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1005 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1006 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
1007 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1008 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1009   %vec0 = call <3 x float> asm "; def $0", "=v"()
1010   %vec1 = call <3 x float> asm "; def $0", "=v"()
1011   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 2>
1012   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1013   ret void
1016 define void @v_shuffle_v4f32_v3f32__5_5_5_3(ptr addrspace(1) inreg %ptr) {
1017 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_5_3:
1018 ; GFX900:       ; %bb.0:
1019 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1020 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1021 ; GFX900-NEXT:    ;;#ASMSTART
1022 ; GFX900-NEXT:    ; def v[3:5]
1023 ; GFX900-NEXT:    ;;#ASMEND
1024 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
1025 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
1026 ; GFX900-NEXT:    v_mov_b32_e32 v2, v5
1027 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1028 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1029 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1031 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_5_3:
1032 ; GFX90A:       ; %bb.0:
1033 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1034 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1035 ; GFX90A-NEXT:    ;;#ASMSTART
1036 ; GFX90A-NEXT:    ; def v[4:6]
1037 ; GFX90A-NEXT:    ;;#ASMEND
1038 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
1039 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
1040 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
1041 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1042 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1043 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1044 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1046 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_5_3:
1047 ; GFX940:       ; %bb.0:
1048 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1049 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1050 ; GFX940-NEXT:    ;;#ASMSTART
1051 ; GFX940-NEXT:    ; def v[4:6]
1052 ; GFX940-NEXT:    ;;#ASMEND
1053 ; GFX940-NEXT:    s_nop 0
1054 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
1055 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
1056 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
1057 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1058 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1059 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1060 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1061   %vec0 = call <3 x float> asm "; def $0", "=v"()
1062   %vec1 = call <3 x float> asm "; def $0", "=v"()
1063   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 3>
1064   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1065   ret void
1068 define void @v_shuffle_v4f32_v3f32__5_5_5_4(ptr addrspace(1) inreg %ptr) {
1069 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_5_4:
1070 ; GFX900:       ; %bb.0:
1071 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1072 ; GFX900-NEXT:    ;;#ASMSTART
1073 ; GFX900-NEXT:    ; def v[2:4]
1074 ; GFX900-NEXT:    ;;#ASMEND
1075 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
1076 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
1077 ; GFX900-NEXT:    v_mov_b32_e32 v1, v4
1078 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
1079 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
1080 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1081 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1083 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_5_4:
1084 ; GFX90A:       ; %bb.0:
1085 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1086 ; GFX90A-NEXT:    ;;#ASMSTART
1087 ; GFX90A-NEXT:    ; def v[2:4]
1088 ; GFX90A-NEXT:    ;;#ASMEND
1089 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
1090 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
1091 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
1092 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1093 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
1094 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1095 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1097 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_5_4:
1098 ; GFX940:       ; %bb.0:
1099 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1100 ; GFX940-NEXT:    ;;#ASMSTART
1101 ; GFX940-NEXT:    ; def v[2:4]
1102 ; GFX940-NEXT:    ;;#ASMEND
1103 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
1104 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
1105 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
1106 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1107 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
1108 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1109 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1110   %vec0 = call <3 x float> asm "; def $0", "=v"()
1111   %vec1 = call <3 x float> asm "; def $0", "=v"()
1112   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 4>
1113   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1114   ret void
1117 define void @v_shuffle_v4f32_v3f32__5_5_5_5(ptr addrspace(1) inreg %ptr) {
1118 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_5_5:
1119 ; GFX900:       ; %bb.0:
1120 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1121 ; GFX900-NEXT:    ;;#ASMSTART
1122 ; GFX900-NEXT:    ; def v[0:2]
1123 ; GFX900-NEXT:    ;;#ASMEND
1124 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1125 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1126 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1127 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
1128 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1129 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1130 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1132 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_5_5:
1133 ; GFX90A:       ; %bb.0:
1134 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1135 ; GFX90A-NEXT:    ;;#ASMSTART
1136 ; GFX90A-NEXT:    ; def v[0:2]
1137 ; GFX90A-NEXT:    ;;#ASMEND
1138 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1139 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1140 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1141 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
1142 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1143 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1144 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1146 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_5_5:
1147 ; GFX940:       ; %bb.0:
1148 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1149 ; GFX940-NEXT:    ;;#ASMSTART
1150 ; GFX940-NEXT:    ; def v[0:2]
1151 ; GFX940-NEXT:    ;;#ASMEND
1152 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1153 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1154 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1155 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
1156 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1157 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1158 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1159   %vec0 = call <3 x float> asm "; def $0", "=v"()
1160   %vec1 = call <3 x float> asm "; def $0", "=v"()
1161   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>
1162   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1163   ret void
1166 define void @v_shuffle_v4f32_v3f32__u_0_0_0(ptr addrspace(1) inreg %ptr) {
1167 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__u_0_0_0:
1168 ; GFX900:       ; %bb.0:
1169 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1170 ; GFX900-NEXT:    ;;#ASMSTART
1171 ; GFX900-NEXT:    ; def v[1:3]
1172 ; GFX900-NEXT:    ;;#ASMEND
1173 ; GFX900-NEXT:    v_mov_b32_e32 v0, 0
1174 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1175 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
1176 ; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]
1177 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1178 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1180 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__u_0_0_0:
1181 ; GFX90A:       ; %bb.0:
1182 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1183 ; GFX90A-NEXT:    ;;#ASMSTART
1184 ; GFX90A-NEXT:    ; def v[0:2]
1185 ; GFX90A-NEXT:    ;;#ASMEND
1186 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1187 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
1188 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
1189 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
1190 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1191 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1192 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1194 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__u_0_0_0:
1195 ; GFX940:       ; %bb.0:
1196 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1197 ; GFX940-NEXT:    ;;#ASMSTART
1198 ; GFX940-NEXT:    ; def v[0:2]
1199 ; GFX940-NEXT:    ;;#ASMEND
1200 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1201 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
1202 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
1203 ; GFX940-NEXT:    v_mov_b32_e32 v3, v0
1204 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1205 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1206 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1207   %vec0 = call <3 x float> asm "; def $0", "=v"()
1208   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>
1209   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1210   ret void
1213 define void @v_shuffle_v4f32_v3f32__0_0_0_0(ptr addrspace(1) inreg %ptr) {
1214 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__0_0_0_0:
1215 ; GFX900:       ; %bb.0:
1216 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1217 ; GFX900-NEXT:    ;;#ASMSTART
1218 ; GFX900-NEXT:    ; def v[0:2]
1219 ; GFX900-NEXT:    ;;#ASMEND
1220 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1221 ; GFX900-NEXT:    v_mov_b32_e32 v1, v0
1222 ; GFX900-NEXT:    v_mov_b32_e32 v2, v0
1223 ; GFX900-NEXT:    v_mov_b32_e32 v3, v0
1224 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1225 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1226 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1228 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__0_0_0_0:
1229 ; GFX90A:       ; %bb.0:
1230 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1231 ; GFX90A-NEXT:    ;;#ASMSTART
1232 ; GFX90A-NEXT:    ; def v[0:2]
1233 ; GFX90A-NEXT:    ;;#ASMEND
1234 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1235 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
1236 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
1237 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
1238 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1239 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1240 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1242 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__0_0_0_0:
1243 ; GFX940:       ; %bb.0:
1244 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1245 ; GFX940-NEXT:    ;;#ASMSTART
1246 ; GFX940-NEXT:    ; def v[0:2]
1247 ; GFX940-NEXT:    ;;#ASMEND
1248 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1249 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
1250 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
1251 ; GFX940-NEXT:    v_mov_b32_e32 v3, v0
1252 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1253 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1254 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1255   %vec0 = call <3 x float> asm "; def $0", "=v"()
1256   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> zeroinitializer
1257   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1258   ret void
1261 define void @v_shuffle_v4f32_v3f32__1_0_0_0(ptr addrspace(1) inreg %ptr) {
1262 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__1_0_0_0:
1263 ; GFX900:       ; %bb.0:
1264 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1265 ; GFX900-NEXT:    ;;#ASMSTART
1266 ; GFX900-NEXT:    ; def v[1:3]
1267 ; GFX900-NEXT:    ;;#ASMEND
1268 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1269 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1270 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1271 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
1272 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1273 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1274 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1276 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__1_0_0_0:
1277 ; GFX90A:       ; %bb.0:
1278 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1279 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1280 ; GFX90A-NEXT:    ;;#ASMSTART
1281 ; GFX90A-NEXT:    ; def v[4:6]
1282 ; GFX90A-NEXT:    ;;#ASMEND
1283 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[4:5] op_sel:[1,0]
1284 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1285 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1286 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1287 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1288 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1290 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__1_0_0_0:
1291 ; GFX940:       ; %bb.0:
1292 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1293 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1294 ; GFX940-NEXT:    ;;#ASMSTART
1295 ; GFX940-NEXT:    ; def v[4:6]
1296 ; GFX940-NEXT:    ;;#ASMEND
1297 ; GFX940-NEXT:    s_nop 0
1298 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[4:5] op_sel:[1,0]
1299 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1300 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1301 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1302 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1303 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1304   %vec0 = call <3 x float> asm "; def $0", "=v"()
1305   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
1306   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1307   ret void
1310 define void @v_shuffle_v4f32_v3f32__2_0_0_0(ptr addrspace(1) inreg %ptr) {
1311 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__2_0_0_0:
1312 ; GFX900:       ; %bb.0:
1313 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1314 ; GFX900-NEXT:    ;;#ASMSTART
1315 ; GFX900-NEXT:    ; def v[1:3]
1316 ; GFX900-NEXT:    ;;#ASMEND
1317 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1318 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1319 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1320 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
1321 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1322 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1323 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1325 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__2_0_0_0:
1326 ; GFX90A:       ; %bb.0:
1327 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1328 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1329 ; GFX90A-NEXT:    ;;#ASMSTART
1330 ; GFX90A-NEXT:    ; def v[4:6]
1331 ; GFX90A-NEXT:    ;;#ASMEND
1332 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
1333 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
1334 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1335 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1336 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1337 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1338 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1340 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__2_0_0_0:
1341 ; GFX940:       ; %bb.0:
1342 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1343 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1344 ; GFX940-NEXT:    ;;#ASMSTART
1345 ; GFX940-NEXT:    ; def v[4:6]
1346 ; GFX940-NEXT:    ;;#ASMEND
1347 ; GFX940-NEXT:    s_nop 0
1348 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
1349 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
1350 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1351 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1352 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1353 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1354 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1355   %vec0 = call <3 x float> asm "; def $0", "=v"()
1356   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
1357   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1358   ret void
1361 define void @v_shuffle_v4f32_v3f32__3_0_0_0(ptr addrspace(1) inreg %ptr) {
1362 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__3_0_0_0:
1363 ; GFX900:       ; %bb.0:
1364 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1365 ; GFX900-NEXT:    ;;#ASMSTART
1366 ; GFX900-NEXT:    ; def v[1:3]
1367 ; GFX900-NEXT:    ;;#ASMEND
1368 ; GFX900-NEXT:    v_mov_b32_e32 v0, 0
1369 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1370 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
1371 ; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]
1372 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1373 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1375 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__3_0_0_0:
1376 ; GFX90A:       ; %bb.0:
1377 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1378 ; GFX90A-NEXT:    ;;#ASMSTART
1379 ; GFX90A-NEXT:    ; def v[0:2]
1380 ; GFX90A-NEXT:    ;;#ASMEND
1381 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1382 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
1383 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
1384 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
1385 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1386 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1387 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1389 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__3_0_0_0:
1390 ; GFX940:       ; %bb.0:
1391 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1392 ; GFX940-NEXT:    ;;#ASMSTART
1393 ; GFX940-NEXT:    ; def v[0:2]
1394 ; GFX940-NEXT:    ;;#ASMEND
1395 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1396 ; GFX940-NEXT:    v_mov_b32_e32 v1, v0
1397 ; GFX940-NEXT:    v_mov_b32_e32 v2, v0
1398 ; GFX940-NEXT:    v_mov_b32_e32 v3, v0
1399 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1400 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1401 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1402   %vec0 = call <3 x float> asm "; def $0", "=v"()
1403   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
1404   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1405   ret void
1408 define void @v_shuffle_v4f32_v3f32__4_0_0_0(ptr addrspace(1) inreg %ptr) {
1409 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__4_0_0_0:
1410 ; GFX900:       ; %bb.0:
1411 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1412 ; GFX900-NEXT:    ;;#ASMSTART
1413 ; GFX900-NEXT:    ; def v[1:3]
1414 ; GFX900-NEXT:    ;;#ASMEND
1415 ; GFX900-NEXT:    ;;#ASMSTART
1416 ; GFX900-NEXT:    ; def v[2:4]
1417 ; GFX900-NEXT:    ;;#ASMEND
1418 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
1419 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1420 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1421 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
1422 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
1423 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1424 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1426 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__4_0_0_0:
1427 ; GFX90A:       ; %bb.0:
1428 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1429 ; GFX90A-NEXT:    ;;#ASMSTART
1430 ; GFX90A-NEXT:    ; def v[0:2]
1431 ; GFX90A-NEXT:    ;;#ASMEND
1432 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1433 ; GFX90A-NEXT:    ;;#ASMSTART
1434 ; GFX90A-NEXT:    ; def v[4:6]
1435 ; GFX90A-NEXT:    ;;#ASMEND
1436 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[4:5] op_sel:[1,0]
1437 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1438 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1439 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1440 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1441 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1443 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__4_0_0_0:
1444 ; GFX940:       ; %bb.0:
1445 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1446 ; GFX940-NEXT:    ;;#ASMSTART
1447 ; GFX940-NEXT:    ; def v[0:2]
1448 ; GFX940-NEXT:    ;;#ASMEND
1449 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1450 ; GFX940-NEXT:    ;;#ASMSTART
1451 ; GFX940-NEXT:    ; def v[4:6]
1452 ; GFX940-NEXT:    ;;#ASMEND
1453 ; GFX940-NEXT:    s_nop 0
1454 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[4:5] op_sel:[1,0]
1455 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1456 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1457 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1458 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1459 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1460   %vec0 = call <3 x float> asm "; def $0", "=v"()
1461   %vec1 = call <3 x float> asm "; def $0", "=v"()
1462   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 0, i32 0, i32 0>
1463   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1464   ret void
1467 define void @v_shuffle_v4f32_v3f32__5_0_0_0(ptr addrspace(1) inreg %ptr) {
1468 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_0_0_0:
1469 ; GFX900:       ; %bb.0:
1470 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1471 ; GFX900-NEXT:    ;;#ASMSTART
1472 ; GFX900-NEXT:    ; def v[1:3]
1473 ; GFX900-NEXT:    ;;#ASMEND
1474 ; GFX900-NEXT:    ;;#ASMSTART
1475 ; GFX900-NEXT:    ; def v[2:4]
1476 ; GFX900-NEXT:    ;;#ASMEND
1477 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
1478 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
1479 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1480 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
1481 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
1482 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1483 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1485 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_0_0_0:
1486 ; GFX90A:       ; %bb.0:
1487 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1488 ; GFX90A-NEXT:    ;;#ASMSTART
1489 ; GFX90A-NEXT:    ; def v[0:2]
1490 ; GFX90A-NEXT:    ;;#ASMEND
1491 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1492 ; GFX90A-NEXT:    ;;#ASMSTART
1493 ; GFX90A-NEXT:    ; def v[4:6]
1494 ; GFX90A-NEXT:    ;;#ASMEND
1495 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1496 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
1497 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1498 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1499 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1500 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1501 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1503 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_0_0_0:
1504 ; GFX940:       ; %bb.0:
1505 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1506 ; GFX940-NEXT:    ;;#ASMSTART
1507 ; GFX940-NEXT:    ; def v[0:2]
1508 ; GFX940-NEXT:    ;;#ASMEND
1509 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1510 ; GFX940-NEXT:    ;;#ASMSTART
1511 ; GFX940-NEXT:    ; def v[4:6]
1512 ; GFX940-NEXT:    ;;#ASMEND
1513 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1514 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
1515 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1516 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1517 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1518 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1519 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1520   %vec0 = call <3 x float> asm "; def $0", "=v"()
1521   %vec1 = call <3 x float> asm "; def $0", "=v"()
1522   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>
1523   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1524   ret void
1527 define void @v_shuffle_v4f32_v3f32__5_u_0_0(ptr addrspace(1) inreg %ptr) {
1528 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_u_0_0:
1529 ; GFX900:       ; %bb.0:
1530 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1531 ; GFX900-NEXT:    ;;#ASMSTART
1532 ; GFX900-NEXT:    ; def v[1:3]
1533 ; GFX900-NEXT:    ;;#ASMEND
1534 ; GFX900-NEXT:    ;;#ASMSTART
1535 ; GFX900-NEXT:    ; def v[2:4]
1536 ; GFX900-NEXT:    ;;#ASMEND
1537 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
1538 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
1539 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
1540 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
1541 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
1542 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1543 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1545 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_u_0_0:
1546 ; GFX90A:       ; %bb.0:
1547 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1548 ; GFX90A-NEXT:    ;;#ASMSTART
1549 ; GFX90A-NEXT:    ; def v[0:2]
1550 ; GFX90A-NEXT:    ;;#ASMEND
1551 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1552 ; GFX90A-NEXT:    ;;#ASMSTART
1553 ; GFX90A-NEXT:    ; def v[4:6]
1554 ; GFX90A-NEXT:    ;;#ASMEND
1555 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1556 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1557 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1558 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1559 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1560 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1562 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_u_0_0:
1563 ; GFX940:       ; %bb.0:
1564 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1565 ; GFX940-NEXT:    ;;#ASMSTART
1566 ; GFX940-NEXT:    ; def v[0:2]
1567 ; GFX940-NEXT:    ;;#ASMEND
1568 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1569 ; GFX940-NEXT:    ;;#ASMSTART
1570 ; GFX940-NEXT:    ; def v[4:6]
1571 ; GFX940-NEXT:    ;;#ASMEND
1572 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1573 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1574 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1575 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1576 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1577 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1578   %vec0 = call <3 x float> asm "; def $0", "=v"()
1579   %vec1 = call <3 x float> asm "; def $0", "=v"()
1580   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>
1581   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1582   ret void
1585 define void @v_shuffle_v4f32_v3f32__5_1_0_0(ptr addrspace(1) inreg %ptr) {
1586 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_1_0_0:
1587 ; GFX900:       ; %bb.0:
1588 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1589 ; GFX900-NEXT:    ;;#ASMSTART
1590 ; GFX900-NEXT:    ; def v[0:2]
1591 ; GFX900-NEXT:    ;;#ASMEND
1592 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1593 ; GFX900-NEXT:    ;;#ASMSTART
1594 ; GFX900-NEXT:    ; def v[3:5]
1595 ; GFX900-NEXT:    ;;#ASMEND
1596 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1597 ; GFX900-NEXT:    v_mov_b32_e32 v1, v4
1598 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
1599 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1600 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1601 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1603 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_1_0_0:
1604 ; GFX90A:       ; %bb.0:
1605 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1606 ; GFX90A-NEXT:    ;;#ASMSTART
1607 ; GFX90A-NEXT:    ; def v[0:2]
1608 ; GFX90A-NEXT:    ;;#ASMEND
1609 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1610 ; GFX90A-NEXT:    ;;#ASMSTART
1611 ; GFX90A-NEXT:    ; def v[4:6]
1612 ; GFX90A-NEXT:    ;;#ASMEND
1613 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1614 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
1615 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1616 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1617 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1618 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1619 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1621 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_1_0_0:
1622 ; GFX940:       ; %bb.0:
1623 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1624 ; GFX940-NEXT:    ;;#ASMSTART
1625 ; GFX940-NEXT:    ; def v[0:2]
1626 ; GFX940-NEXT:    ;;#ASMEND
1627 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1628 ; GFX940-NEXT:    ;;#ASMSTART
1629 ; GFX940-NEXT:    ; def v[4:6]
1630 ; GFX940-NEXT:    ;;#ASMEND
1631 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1632 ; GFX940-NEXT:    v_mov_b32_e32 v1, v5
1633 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1634 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1635 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1636 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1637 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1638   %vec0 = call <3 x float> asm "; def $0", "=v"()
1639   %vec1 = call <3 x float> asm "; def $0", "=v"()
1640   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 0, i32 0>
1641   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1642   ret void
1645 define void @v_shuffle_v4f32_v3f32__5_2_0_0(ptr addrspace(1) inreg %ptr) {
1646 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_2_0_0:
1647 ; GFX900:       ; %bb.0:
1648 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1649 ; GFX900-NEXT:    ;;#ASMSTART
1650 ; GFX900-NEXT:    ; def v[0:2]
1651 ; GFX900-NEXT:    ;;#ASMEND
1652 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1653 ; GFX900-NEXT:    ;;#ASMSTART
1654 ; GFX900-NEXT:    ; def v[3:5]
1655 ; GFX900-NEXT:    ;;#ASMEND
1656 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1657 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
1658 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
1659 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1660 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1661 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1663 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_2_0_0:
1664 ; GFX90A:       ; %bb.0:
1665 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1666 ; GFX90A-NEXT:    ;;#ASMSTART
1667 ; GFX90A-NEXT:    ; def v[0:2]
1668 ; GFX90A-NEXT:    ;;#ASMEND
1669 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1670 ; GFX90A-NEXT:    ;;#ASMSTART
1671 ; GFX90A-NEXT:    ; def v[4:6]
1672 ; GFX90A-NEXT:    ;;#ASMEND
1673 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1674 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
1675 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1676 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1677 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1678 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1679 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1681 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_2_0_0:
1682 ; GFX940:       ; %bb.0:
1683 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1684 ; GFX940-NEXT:    ;;#ASMSTART
1685 ; GFX940-NEXT:    ; def v[0:2]
1686 ; GFX940-NEXT:    ;;#ASMEND
1687 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1688 ; GFX940-NEXT:    ;;#ASMSTART
1689 ; GFX940-NEXT:    ; def v[4:6]
1690 ; GFX940-NEXT:    ;;#ASMEND
1691 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1692 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
1693 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1694 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1695 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1696 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1697 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1698   %vec0 = call <3 x float> asm "; def $0", "=v"()
1699   %vec1 = call <3 x float> asm "; def $0", "=v"()
1700   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 0, i32 0>
1701   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1702   ret void
1705 define void @v_shuffle_v4f32_v3f32__5_3_0_0(ptr addrspace(1) inreg %ptr) {
1706 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_3_0_0:
1707 ; GFX900:       ; %bb.0:
1708 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1709 ; GFX900-NEXT:    ;;#ASMSTART
1710 ; GFX900-NEXT:    ; def v[1:3]
1711 ; GFX900-NEXT:    ;;#ASMEND
1712 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
1713 ; GFX900-NEXT:    ;;#ASMSTART
1714 ; GFX900-NEXT:    ; def v[4:6]
1715 ; GFX900-NEXT:    ;;#ASMEND
1716 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1717 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
1718 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
1719 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1720 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1721 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1723 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_3_0_0:
1724 ; GFX90A:       ; %bb.0:
1725 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1726 ; GFX90A-NEXT:    ;;#ASMSTART
1727 ; GFX90A-NEXT:    ; def v[4:6]
1728 ; GFX90A-NEXT:    ;;#ASMEND
1729 ; GFX90A-NEXT:    v_mov_b32_e32 v9, 0
1730 ; GFX90A-NEXT:    ;;#ASMSTART
1731 ; GFX90A-NEXT:    ; def v[6:8]
1732 ; GFX90A-NEXT:    ;;#ASMEND
1733 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v8
1734 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
1735 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1736 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1737 ; GFX90A-NEXT:    global_store_dwordx4 v9, v[0:3], s[16:17]
1738 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1739 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1741 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_3_0_0:
1742 ; GFX940:       ; %bb.0:
1743 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1744 ; GFX940-NEXT:    ;;#ASMSTART
1745 ; GFX940-NEXT:    ; def v[4:6]
1746 ; GFX940-NEXT:    ;;#ASMEND
1747 ; GFX940-NEXT:    v_mov_b32_e32 v9, 0
1748 ; GFX940-NEXT:    ;;#ASMSTART
1749 ; GFX940-NEXT:    ; def v[6:8]
1750 ; GFX940-NEXT:    ;;#ASMEND
1751 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1752 ; GFX940-NEXT:    v_mov_b32_e32 v0, v8
1753 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
1754 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1755 ; GFX940-NEXT:    global_store_dwordx4 v9, v[0:3], s[0:1] sc0 sc1
1756 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1757 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1758   %vec0 = call <3 x float> asm "; def $0", "=v"()
1759   %vec1 = call <3 x float> asm "; def $0", "=v"()
1760   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 0, i32 0>
1761   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1762   ret void
1765 define void @v_shuffle_v4f32_v3f32__5_4_0_0(ptr addrspace(1) inreg %ptr) {
1766 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_4_0_0:
1767 ; GFX900:       ; %bb.0:
1768 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1769 ; GFX900-NEXT:    ;;#ASMSTART
1770 ; GFX900-NEXT:    ; def v[0:2]
1771 ; GFX900-NEXT:    ;;#ASMEND
1772 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1773 ; GFX900-NEXT:    ;;#ASMSTART
1774 ; GFX900-NEXT:    ; def v[3:5]
1775 ; GFX900-NEXT:    ;;#ASMEND
1776 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1777 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
1778 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1779 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1780 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1782 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_4_0_0:
1783 ; GFX90A:       ; %bb.0:
1784 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1785 ; GFX90A-NEXT:    ;;#ASMSTART
1786 ; GFX90A-NEXT:    ; def v[0:2]
1787 ; GFX90A-NEXT:    ;;#ASMEND
1788 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1789 ; GFX90A-NEXT:    ;;#ASMSTART
1790 ; GFX90A-NEXT:    ; def v[4:6]
1791 ; GFX90A-NEXT:    ;;#ASMEND
1792 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1793 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1794 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1795 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1796 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1797 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1799 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_4_0_0:
1800 ; GFX940:       ; %bb.0:
1801 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1802 ; GFX940-NEXT:    ;;#ASMSTART
1803 ; GFX940-NEXT:    ; def v[0:2]
1804 ; GFX940-NEXT:    ;;#ASMEND
1805 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1806 ; GFX940-NEXT:    ;;#ASMSTART
1807 ; GFX940-NEXT:    ; def v[4:6]
1808 ; GFX940-NEXT:    ;;#ASMEND
1809 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1810 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1811 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1812 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1813 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1814 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1815   %vec0 = call <3 x float> asm "; def $0", "=v"()
1816   %vec1 = call <3 x float> asm "; def $0", "=v"()
1817   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 0, i32 0>
1818   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1819   ret void
1822 define void @v_shuffle_v4f32_v3f32__5_5_0_0(ptr addrspace(1) inreg %ptr) {
1823 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_0_0:
1824 ; GFX900:       ; %bb.0:
1825 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1826 ; GFX900-NEXT:    ;;#ASMSTART
1827 ; GFX900-NEXT:    ; def v[0:2]
1828 ; GFX900-NEXT:    ;;#ASMEND
1829 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1830 ; GFX900-NEXT:    ;;#ASMSTART
1831 ; GFX900-NEXT:    ; def v[3:5]
1832 ; GFX900-NEXT:    ;;#ASMEND
1833 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1834 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1835 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
1836 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1837 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1838 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1840 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_0_0:
1841 ; GFX90A:       ; %bb.0:
1842 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1843 ; GFX90A-NEXT:    ;;#ASMSTART
1844 ; GFX90A-NEXT:    ; def v[0:2]
1845 ; GFX90A-NEXT:    ;;#ASMEND
1846 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1847 ; GFX90A-NEXT:    ;;#ASMSTART
1848 ; GFX90A-NEXT:    ; def v[4:6]
1849 ; GFX90A-NEXT:    ;;#ASMEND
1850 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1851 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1852 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1853 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
1854 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1855 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1856 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1858 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_0_0:
1859 ; GFX940:       ; %bb.0:
1860 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1861 ; GFX940-NEXT:    ;;#ASMSTART
1862 ; GFX940-NEXT:    ; def v[0:2]
1863 ; GFX940-NEXT:    ;;#ASMEND
1864 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1865 ; GFX940-NEXT:    ;;#ASMSTART
1866 ; GFX940-NEXT:    ; def v[4:6]
1867 ; GFX940-NEXT:    ;;#ASMEND
1868 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1869 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1870 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
1871 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
1872 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1873 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1874 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1875   %vec0 = call <3 x float> asm "; def $0", "=v"()
1876   %vec1 = call <3 x float> asm "; def $0", "=v"()
1877   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 0>
1878   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1879   ret void
1882 define void @v_shuffle_v4f32_v3f32__5_5_u_0(ptr addrspace(1) inreg %ptr) {
1883 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_u_0:
1884 ; GFX900:       ; %bb.0:
1885 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1886 ; GFX900-NEXT:    ;;#ASMSTART
1887 ; GFX900-NEXT:    ; def v[2:4]
1888 ; GFX900-NEXT:    ;;#ASMEND
1889 ; GFX900-NEXT:    ;;#ASMSTART
1890 ; GFX900-NEXT:    ; def v[3:5]
1891 ; GFX900-NEXT:    ;;#ASMEND
1892 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1893 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
1894 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
1895 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
1896 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1897 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1898 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1900 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_u_0:
1901 ; GFX90A:       ; %bb.0:
1902 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1903 ; GFX90A-NEXT:    ;;#ASMSTART
1904 ; GFX90A-NEXT:    ; def v[2:4]
1905 ; GFX90A-NEXT:    ;;#ASMEND
1906 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
1907 ; GFX90A-NEXT:    ;;#ASMSTART
1908 ; GFX90A-NEXT:    ; def v[4:6]
1909 ; GFX90A-NEXT:    ;;#ASMEND
1910 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
1911 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
1912 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
1913 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
1914 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1915 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1917 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_u_0:
1918 ; GFX940:       ; %bb.0:
1919 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1920 ; GFX940-NEXT:    ;;#ASMSTART
1921 ; GFX940-NEXT:    ; def v[2:4]
1922 ; GFX940-NEXT:    ;;#ASMEND
1923 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
1924 ; GFX940-NEXT:    ;;#ASMSTART
1925 ; GFX940-NEXT:    ; def v[4:6]
1926 ; GFX940-NEXT:    ;;#ASMEND
1927 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
1928 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
1929 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
1930 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
1931 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1932 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1933   %vec0 = call <3 x float> asm "; def $0", "=v"()
1934   %vec1 = call <3 x float> asm "; def $0", "=v"()
1935   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>
1936   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1937   ret void
1940 define void @v_shuffle_v4f32_v3f32__5_5_1_0(ptr addrspace(1) inreg %ptr) {
1941 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_1_0:
1942 ; GFX900:       ; %bb.0:
1943 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1944 ; GFX900-NEXT:    ;;#ASMSTART
1945 ; GFX900-NEXT:    ; def v[0:2]
1946 ; GFX900-NEXT:    ;;#ASMEND
1947 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1948 ; GFX900-NEXT:    ;;#ASMSTART
1949 ; GFX900-NEXT:    ; def v[3:5]
1950 ; GFX900-NEXT:    ;;#ASMEND
1951 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1952 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
1953 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
1954 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
1955 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
1956 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
1958 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_1_0:
1959 ; GFX90A:       ; %bb.0:
1960 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1961 ; GFX90A-NEXT:    ;;#ASMSTART
1962 ; GFX90A-NEXT:    ; def v[0:2]
1963 ; GFX90A-NEXT:    ;;#ASMEND
1964 ; GFX90A-NEXT:    ;;#ASMSTART
1965 ; GFX90A-NEXT:    ; def v[2:4]
1966 ; GFX90A-NEXT:    ;;#ASMEND
1967 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
1968 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]
1969 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
1970 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
1971 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
1972 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1973 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1975 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_1_0:
1976 ; GFX940:       ; %bb.0:
1977 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1978 ; GFX940-NEXT:    ;;#ASMSTART
1979 ; GFX940-NEXT:    ; def v[0:2]
1980 ; GFX940-NEXT:    ;;#ASMEND
1981 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
1982 ; GFX940-NEXT:    ;;#ASMSTART
1983 ; GFX940-NEXT:    ; def v[2:4]
1984 ; GFX940-NEXT:    ;;#ASMEND
1985 ; GFX940-NEXT:    s_nop 0
1986 ; GFX940-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]
1987 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
1988 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
1989 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
1990 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
1991 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
1992   %vec0 = call <3 x float> asm "; def $0", "=v"()
1993   %vec1 = call <3 x float> asm "; def $0", "=v"()
1994   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 0>
1995   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1996   ret void
1999 define void @v_shuffle_v4f32_v3f32__5_5_2_0(ptr addrspace(1) inreg %ptr) {
2000 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_2_0:
2001 ; GFX900:       ; %bb.0:
2002 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2003 ; GFX900-NEXT:    ;;#ASMSTART
2004 ; GFX900-NEXT:    ; def v[0:2]
2005 ; GFX900-NEXT:    ;;#ASMEND
2006 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2007 ; GFX900-NEXT:    ;;#ASMSTART
2008 ; GFX900-NEXT:    ; def v[3:5]
2009 ; GFX900-NEXT:    ;;#ASMEND
2010 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2011 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
2012 ; GFX900-NEXT:    v_mov_b32_e32 v2, v5
2013 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
2014 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2015 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2017 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_2_0:
2018 ; GFX90A:       ; %bb.0:
2019 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2020 ; GFX90A-NEXT:    ;;#ASMSTART
2021 ; GFX90A-NEXT:    ; def v[0:2]
2022 ; GFX90A-NEXT:    ;;#ASMEND
2023 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
2024 ; GFX90A-NEXT:    ;;#ASMSTART
2025 ; GFX90A-NEXT:    ; def v[4:6]
2026 ; GFX90A-NEXT:    ;;#ASMEND
2027 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
2028 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2029 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
2030 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
2031 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
2032 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2033 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2035 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_2_0:
2036 ; GFX940:       ; %bb.0:
2037 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2038 ; GFX940-NEXT:    ;;#ASMSTART
2039 ; GFX940-NEXT:    ; def v[0:2]
2040 ; GFX940-NEXT:    ;;#ASMEND
2041 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
2042 ; GFX940-NEXT:    ;;#ASMSTART
2043 ; GFX940-NEXT:    ; def v[4:6]
2044 ; GFX940-NEXT:    ;;#ASMEND
2045 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
2046 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2047 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
2048 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
2049 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
2050 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2051 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2052   %vec0 = call <3 x float> asm "; def $0", "=v"()
2053   %vec1 = call <3 x float> asm "; def $0", "=v"()
2054   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 0>
2055   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2056   ret void
2059 define void @v_shuffle_v4f32_v3f32__5_5_3_0(ptr addrspace(1) inreg %ptr) {
2060 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_3_0:
2061 ; GFX900:       ; %bb.0:
2062 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2063 ; GFX900-NEXT:    ;;#ASMSTART
2064 ; GFX900-NEXT:    ; def v[3:5]
2065 ; GFX900-NEXT:    ;;#ASMEND
2066 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
2067 ; GFX900-NEXT:    ;;#ASMSTART
2068 ; GFX900-NEXT:    ; def v[4:6]
2069 ; GFX900-NEXT:    ;;#ASMEND
2070 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
2071 ; GFX900-NEXT:    v_mov_b32_e32 v1, v6
2072 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
2073 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
2074 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2075 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2077 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_3_0:
2078 ; GFX90A:       ; %bb.0:
2079 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2080 ; GFX90A-NEXT:    ;;#ASMSTART
2081 ; GFX90A-NEXT:    ; def v[4:6]
2082 ; GFX90A-NEXT:    ;;#ASMEND
2083 ; GFX90A-NEXT:    v_mov_b32_e32 v9, 0
2084 ; GFX90A-NEXT:    ;;#ASMSTART
2085 ; GFX90A-NEXT:    ; def v[6:8]
2086 ; GFX90A-NEXT:    ;;#ASMEND
2087 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v8
2088 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v8
2089 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
2090 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
2091 ; GFX90A-NEXT:    global_store_dwordx4 v9, v[0:3], s[16:17]
2092 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2093 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2095 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_3_0:
2096 ; GFX940:       ; %bb.0:
2097 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2098 ; GFX940-NEXT:    ;;#ASMSTART
2099 ; GFX940-NEXT:    ; def v[4:6]
2100 ; GFX940-NEXT:    ;;#ASMEND
2101 ; GFX940-NEXT:    v_mov_b32_e32 v9, 0
2102 ; GFX940-NEXT:    ;;#ASMSTART
2103 ; GFX940-NEXT:    ; def v[6:8]
2104 ; GFX940-NEXT:    ;;#ASMEND
2105 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
2106 ; GFX940-NEXT:    v_mov_b32_e32 v0, v8
2107 ; GFX940-NEXT:    v_mov_b32_e32 v1, v8
2108 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
2109 ; GFX940-NEXT:    global_store_dwordx4 v9, v[0:3], s[0:1] sc0 sc1
2110 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2111 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2112   %vec0 = call <3 x float> asm "; def $0", "=v"()
2113   %vec1 = call <3 x float> asm "; def $0", "=v"()
2114   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 0>
2115   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2116   ret void
2119 define void @v_shuffle_v4f32_v3f32__5_5_4_0(ptr addrspace(1) inreg %ptr) {
2120 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_4_0:
2121 ; GFX900:       ; %bb.0:
2122 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2123 ; GFX900-NEXT:    ;;#ASMSTART
2124 ; GFX900-NEXT:    ; def v[1:3]
2125 ; GFX900-NEXT:    ;;#ASMEND
2126 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
2127 ; GFX900-NEXT:    ;;#ASMSTART
2128 ; GFX900-NEXT:    ; def v[4:6]
2129 ; GFX900-NEXT:    ;;#ASMEND
2130 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
2131 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
2132 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
2133 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
2134 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2135 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2137 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_4_0:
2138 ; GFX90A:       ; %bb.0:
2139 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2140 ; GFX90A-NEXT:    ;;#ASMSTART
2141 ; GFX90A-NEXT:    ; def v[0:2]
2142 ; GFX90A-NEXT:    ;;#ASMEND
2143 ; GFX90A-NEXT:    ;;#ASMSTART
2144 ; GFX90A-NEXT:    ; def v[2:4]
2145 ; GFX90A-NEXT:    ;;#ASMEND
2146 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2147 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]
2148 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
2149 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
2150 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2151 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2152 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2154 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_4_0:
2155 ; GFX940:       ; %bb.0:
2156 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2157 ; GFX940-NEXT:    ;;#ASMSTART
2158 ; GFX940-NEXT:    ; def v[0:2]
2159 ; GFX940-NEXT:    ;;#ASMEND
2160 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2161 ; GFX940-NEXT:    ;;#ASMSTART
2162 ; GFX940-NEXT:    ; def v[2:4]
2163 ; GFX940-NEXT:    ;;#ASMEND
2164 ; GFX940-NEXT:    s_nop 0
2165 ; GFX940-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]
2166 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
2167 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
2168 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
2169 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2170 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2171   %vec0 = call <3 x float> asm "; def $0", "=v"()
2172   %vec1 = call <3 x float> asm "; def $0", "=v"()
2173   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 0>
2174   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2175   ret void
2178 define void @v_shuffle_v4f32_v3f32__u_1_1_1(ptr addrspace(1) inreg %ptr) {
2179 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__u_1_1_1:
2180 ; GFX900:       ; %bb.0:
2181 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2182 ; GFX900-NEXT:    ;;#ASMSTART
2183 ; GFX900-NEXT:    ; def v[0:2]
2184 ; GFX900-NEXT:    ;;#ASMEND
2185 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2186 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
2187 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
2188 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2189 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2190 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2192 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__u_1_1_1:
2193 ; GFX90A:       ; %bb.0:
2194 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2195 ; GFX90A-NEXT:    ;;#ASMSTART
2196 ; GFX90A-NEXT:    ; def v[0:2]
2197 ; GFX90A-NEXT:    ;;#ASMEND
2198 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2199 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
2200 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
2201 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2202 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2203 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2205 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__u_1_1_1:
2206 ; GFX940:       ; %bb.0:
2207 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2208 ; GFX940-NEXT:    ;;#ASMSTART
2209 ; GFX940-NEXT:    ; def v[0:2]
2210 ; GFX940-NEXT:    ;;#ASMEND
2211 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2212 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
2213 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
2214 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2215 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2216 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2217   %vec0 = call <3 x float> asm "; def $0", "=v"()
2218   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>
2219   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2220   ret void
2223 define void @v_shuffle_v4f32_v3f32__0_1_1_1(ptr addrspace(1) inreg %ptr) {
2224 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__0_1_1_1:
2225 ; GFX900:       ; %bb.0:
2226 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2227 ; GFX900-NEXT:    ;;#ASMSTART
2228 ; GFX900-NEXT:    ; def v[0:2]
2229 ; GFX900-NEXT:    ;;#ASMEND
2230 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2231 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
2232 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
2233 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2234 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2235 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2237 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__0_1_1_1:
2238 ; GFX90A:       ; %bb.0:
2239 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2240 ; GFX90A-NEXT:    ;;#ASMSTART
2241 ; GFX90A-NEXT:    ; def v[0:2]
2242 ; GFX90A-NEXT:    ;;#ASMEND
2243 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2244 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
2245 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
2246 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2247 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2248 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2250 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__0_1_1_1:
2251 ; GFX940:       ; %bb.0:
2252 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2253 ; GFX940-NEXT:    ;;#ASMSTART
2254 ; GFX940-NEXT:    ; def v[0:2]
2255 ; GFX940-NEXT:    ;;#ASMEND
2256 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2257 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
2258 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
2259 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2260 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2261 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2262   %vec0 = call <3 x float> asm "; def $0", "=v"()
2263   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
2264   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2265   ret void
2268 define void @v_shuffle_v4f32_v3f32__1_1_1_1(ptr addrspace(1) inreg %ptr) {
2269 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__1_1_1_1:
2270 ; GFX900:       ; %bb.0:
2271 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2272 ; GFX900-NEXT:    ;;#ASMSTART
2273 ; GFX900-NEXT:    ; def v[0:2]
2274 ; GFX900-NEXT:    ;;#ASMEND
2275 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2276 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
2277 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
2278 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
2279 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2280 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2281 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2283 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__1_1_1_1:
2284 ; GFX90A:       ; %bb.0:
2285 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2286 ; GFX90A-NEXT:    ;;#ASMSTART
2287 ; GFX90A-NEXT:    ; def v[0:2]
2288 ; GFX90A-NEXT:    ;;#ASMEND
2289 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2290 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
2291 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
2292 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
2293 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2294 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2295 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2297 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__1_1_1_1:
2298 ; GFX940:       ; %bb.0:
2299 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2300 ; GFX940-NEXT:    ;;#ASMSTART
2301 ; GFX940-NEXT:    ; def v[0:2]
2302 ; GFX940-NEXT:    ;;#ASMEND
2303 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2304 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
2305 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
2306 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
2307 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2308 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2309 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2310   %vec0 = call <3 x float> asm "; def $0", "=v"()
2311   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
2312   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2313   ret void
2316 define void @v_shuffle_v4f32_v3f32__2_1_1_1(ptr addrspace(1) inreg %ptr) {
2317 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__2_1_1_1:
2318 ; GFX900:       ; %bb.0:
2319 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2320 ; GFX900-NEXT:    ;;#ASMSTART
2321 ; GFX900-NEXT:    ; def v[0:2]
2322 ; GFX900-NEXT:    ;;#ASMEND
2323 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2324 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2325 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
2326 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
2327 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2328 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2329 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2331 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__2_1_1_1:
2332 ; GFX90A:       ; %bb.0:
2333 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2334 ; GFX90A-NEXT:    ;;#ASMSTART
2335 ; GFX90A-NEXT:    ; def v[0:2]
2336 ; GFX90A-NEXT:    ;;#ASMEND
2337 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2338 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
2339 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
2340 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
2341 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2342 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2343 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2345 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__2_1_1_1:
2346 ; GFX940:       ; %bb.0:
2347 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2348 ; GFX940-NEXT:    ;;#ASMSTART
2349 ; GFX940-NEXT:    ; def v[0:2]
2350 ; GFX940-NEXT:    ;;#ASMEND
2351 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2352 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
2353 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
2354 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
2355 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2356 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2357 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2358   %vec0 = call <3 x float> asm "; def $0", "=v"()
2359   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>
2360   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2361   ret void
2364 define void @v_shuffle_v4f32_v3f32__3_1_1_1(ptr addrspace(1) inreg %ptr) {
2365 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__3_1_1_1:
2366 ; GFX900:       ; %bb.0:
2367 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2368 ; GFX900-NEXT:    ;;#ASMSTART
2369 ; GFX900-NEXT:    ; def v[0:2]
2370 ; GFX900-NEXT:    ;;#ASMEND
2371 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2372 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
2373 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
2374 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2375 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2376 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2378 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__3_1_1_1:
2379 ; GFX90A:       ; %bb.0:
2380 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2381 ; GFX90A-NEXT:    ;;#ASMSTART
2382 ; GFX90A-NEXT:    ; def v[0:2]
2383 ; GFX90A-NEXT:    ;;#ASMEND
2384 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2385 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
2386 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
2387 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2388 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2389 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2391 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__3_1_1_1:
2392 ; GFX940:       ; %bb.0:
2393 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2394 ; GFX940-NEXT:    ;;#ASMSTART
2395 ; GFX940-NEXT:    ; def v[0:2]
2396 ; GFX940-NEXT:    ;;#ASMEND
2397 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2398 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
2399 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
2400 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2401 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2402 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2403   %vec0 = call <3 x float> asm "; def $0", "=v"()
2404   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>
2405   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2406   ret void
2409 define void @v_shuffle_v4f32_v3f32__4_1_1_1(ptr addrspace(1) inreg %ptr) {
2410 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__4_1_1_1:
2411 ; GFX900:       ; %bb.0:
2412 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2413 ; GFX900-NEXT:    ;;#ASMSTART
2414 ; GFX900-NEXT:    ; def v[0:2]
2415 ; GFX900-NEXT:    ;;#ASMEND
2416 ; GFX900-NEXT:    ;;#ASMSTART
2417 ; GFX900-NEXT:    ; def v[2:4]
2418 ; GFX900-NEXT:    ;;#ASMEND
2419 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
2420 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
2421 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
2422 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
2423 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2424 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2425 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2427 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__4_1_1_1:
2428 ; GFX90A:       ; %bb.0:
2429 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2430 ; GFX90A-NEXT:    ;;#ASMSTART
2431 ; GFX90A-NEXT:    ; def v[0:2]
2432 ; GFX90A-NEXT:    ;;#ASMEND
2433 ; GFX90A-NEXT:    ;;#ASMSTART
2434 ; GFX90A-NEXT:    ; def v[2:4]
2435 ; GFX90A-NEXT:    ;;#ASMEND
2436 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2437 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2438 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
2439 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
2440 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2441 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2442 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2444 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__4_1_1_1:
2445 ; GFX940:       ; %bb.0:
2446 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2447 ; GFX940-NEXT:    ;;#ASMSTART
2448 ; GFX940-NEXT:    ; def v[0:2]
2449 ; GFX940-NEXT:    ;;#ASMEND
2450 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2451 ; GFX940-NEXT:    ;;#ASMSTART
2452 ; GFX940-NEXT:    ; def v[2:4]
2453 ; GFX940-NEXT:    ;;#ASMEND
2454 ; GFX940-NEXT:    s_nop 0
2455 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2456 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
2457 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
2458 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
2459 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2460 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2461   %vec0 = call <3 x float> asm "; def $0", "=v"()
2462   %vec1 = call <3 x float> asm "; def $0", "=v"()
2463   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 1, i32 1, i32 1>
2464   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2465   ret void
2468 define void @v_shuffle_v4f32_v3f32__5_1_1_1(ptr addrspace(1) inreg %ptr) {
2469 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_1_1_1:
2470 ; GFX900:       ; %bb.0:
2471 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2472 ; GFX900-NEXT:    ;;#ASMSTART
2473 ; GFX900-NEXT:    ; def v[0:2]
2474 ; GFX900-NEXT:    ;;#ASMEND
2475 ; GFX900-NEXT:    ;;#ASMSTART
2476 ; GFX900-NEXT:    ; def v[2:4]
2477 ; GFX900-NEXT:    ;;#ASMEND
2478 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
2479 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
2480 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
2481 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
2482 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2483 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2484 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2486 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_1_1_1:
2487 ; GFX90A:       ; %bb.0:
2488 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2489 ; GFX90A-NEXT:    ;;#ASMSTART
2490 ; GFX90A-NEXT:    ; def v[0:2]
2491 ; GFX90A-NEXT:    ;;#ASMEND
2492 ; GFX90A-NEXT:    ;;#ASMSTART
2493 ; GFX90A-NEXT:    ; def v[2:4]
2494 ; GFX90A-NEXT:    ;;#ASMEND
2495 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2496 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
2497 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
2498 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
2499 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2500 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2501 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2503 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_1_1_1:
2504 ; GFX940:       ; %bb.0:
2505 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2506 ; GFX940-NEXT:    ;;#ASMSTART
2507 ; GFX940-NEXT:    ; def v[0:2]
2508 ; GFX940-NEXT:    ;;#ASMEND
2509 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2510 ; GFX940-NEXT:    ;;#ASMSTART
2511 ; GFX940-NEXT:    ; def v[2:4]
2512 ; GFX940-NEXT:    ;;#ASMEND
2513 ; GFX940-NEXT:    s_nop 0
2514 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
2515 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
2516 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
2517 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
2518 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2519 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2520   %vec0 = call <3 x float> asm "; def $0", "=v"()
2521   %vec1 = call <3 x float> asm "; def $0", "=v"()
2522   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>
2523   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2524   ret void
2527 define void @v_shuffle_v4f32_v3f32__5_u_1_1(ptr addrspace(1) inreg %ptr) {
2528 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_u_1_1:
2529 ; GFX900:       ; %bb.0:
2530 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2531 ; GFX900-NEXT:    ;;#ASMSTART
2532 ; GFX900-NEXT:    ; def v[1:3]
2533 ; GFX900-NEXT:    ;;#ASMEND
2534 ; GFX900-NEXT:    ;;#ASMSTART
2535 ; GFX900-NEXT:    ; def v[3:5]
2536 ; GFX900-NEXT:    ;;#ASMEND
2537 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2538 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
2539 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
2540 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
2541 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2542 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2544 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_u_1_1:
2545 ; GFX90A:       ; %bb.0:
2546 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2547 ; GFX90A-NEXT:    ;;#ASMSTART
2548 ; GFX90A-NEXT:    ; def v[0:2]
2549 ; GFX90A-NEXT:    ;;#ASMEND
2550 ; GFX90A-NEXT:    ;;#ASMSTART
2551 ; GFX90A-NEXT:    ; def v[2:4]
2552 ; GFX90A-NEXT:    ;;#ASMEND
2553 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2554 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
2555 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
2556 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
2557 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2558 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2559 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2561 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_u_1_1:
2562 ; GFX940:       ; %bb.0:
2563 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2564 ; GFX940-NEXT:    ;;#ASMSTART
2565 ; GFX940-NEXT:    ; def v[0:2]
2566 ; GFX940-NEXT:    ;;#ASMEND
2567 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2568 ; GFX940-NEXT:    ;;#ASMSTART
2569 ; GFX940-NEXT:    ; def v[2:4]
2570 ; GFX940-NEXT:    ;;#ASMEND
2571 ; GFX940-NEXT:    s_nop 0
2572 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
2573 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
2574 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
2575 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
2576 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2577 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2578   %vec0 = call <3 x float> asm "; def $0", "=v"()
2579   %vec1 = call <3 x float> asm "; def $0", "=v"()
2580   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>
2581   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2582   ret void
2585 define void @v_shuffle_v4f32_v3f32__5_0_1_1(ptr addrspace(1) inreg %ptr) {
2586 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_0_1_1:
2587 ; GFX900:       ; %bb.0:
2588 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2589 ; GFX900-NEXT:    ;;#ASMSTART
2590 ; GFX900-NEXT:    ; def v[1:3]
2591 ; GFX900-NEXT:    ;;#ASMEND
2592 ; GFX900-NEXT:    ;;#ASMSTART
2593 ; GFX900-NEXT:    ; def v[3:5]
2594 ; GFX900-NEXT:    ;;#ASMEND
2595 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2596 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
2597 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
2598 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
2599 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2600 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2602 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_0_1_1:
2603 ; GFX90A:       ; %bb.0:
2604 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2605 ; GFX90A-NEXT:    ;;#ASMSTART
2606 ; GFX90A-NEXT:    ; def v[2:4]
2607 ; GFX90A-NEXT:    ;;#ASMEND
2608 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
2609 ; GFX90A-NEXT:    ;;#ASMSTART
2610 ; GFX90A-NEXT:    ; def v[4:6]
2611 ; GFX90A-NEXT:    ;;#ASMEND
2612 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
2613 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2614 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
2615 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
2616 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2617 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2619 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_0_1_1:
2620 ; GFX940:       ; %bb.0:
2621 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2622 ; GFX940-NEXT:    ;;#ASMSTART
2623 ; GFX940-NEXT:    ; def v[2:4]
2624 ; GFX940-NEXT:    ;;#ASMEND
2625 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
2626 ; GFX940-NEXT:    ;;#ASMSTART
2627 ; GFX940-NEXT:    ; def v[4:6]
2628 ; GFX940-NEXT:    ;;#ASMEND
2629 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2630 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
2631 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
2632 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
2633 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2634 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2635   %vec0 = call <3 x float> asm "; def $0", "=v"()
2636   %vec1 = call <3 x float> asm "; def $0", "=v"()
2637   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 1, i32 1>
2638   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2639   ret void
2642 define void @v_shuffle_v4f32_v3f32__5_2_1_1(ptr addrspace(1) inreg %ptr) {
2643 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_2_1_1:
2644 ; GFX900:       ; %bb.0:
2645 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2646 ; GFX900-NEXT:    ;;#ASMSTART
2647 ; GFX900-NEXT:    ; def v[1:3]
2648 ; GFX900-NEXT:    ;;#ASMEND
2649 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
2650 ; GFX900-NEXT:    ;;#ASMSTART
2651 ; GFX900-NEXT:    ; def v[4:6]
2652 ; GFX900-NEXT:    ;;#ASMEND
2653 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
2654 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
2655 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
2656 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
2657 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2658 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2660 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_2_1_1:
2661 ; GFX90A:       ; %bb.0:
2662 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2663 ; GFX90A-NEXT:    ;;#ASMSTART
2664 ; GFX90A-NEXT:    ; def v[2:4]
2665 ; GFX90A-NEXT:    ;;#ASMEND
2666 ; GFX90A-NEXT:    ;;#ASMSTART
2667 ; GFX90A-NEXT:    ; def v[0:2]
2668 ; GFX90A-NEXT:    ;;#ASMEND
2669 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2670 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
2671 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
2672 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
2673 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2674 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2675 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2677 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_2_1_1:
2678 ; GFX940:       ; %bb.0:
2679 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2680 ; GFX940-NEXT:    ;;#ASMSTART
2681 ; GFX940-NEXT:    ; def v[2:4]
2682 ; GFX940-NEXT:    ;;#ASMEND
2683 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2684 ; GFX940-NEXT:    ;;#ASMSTART
2685 ; GFX940-NEXT:    ; def v[0:2]
2686 ; GFX940-NEXT:    ;;#ASMEND
2687 ; GFX940-NEXT:    s_nop 0
2688 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
2689 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
2690 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
2691 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
2692 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2693 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2694   %vec0 = call <3 x float> asm "; def $0", "=v"()
2695   %vec1 = call <3 x float> asm "; def $0", "=v"()
2696   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 1, i32 1>
2697   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2698   ret void
2701 define void @v_shuffle_v4f32_v3f32__5_3_1_1(ptr addrspace(1) inreg %ptr) {
2702 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_3_1_1:
2703 ; GFX900:       ; %bb.0:
2704 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2705 ; GFX900-NEXT:    ;;#ASMSTART
2706 ; GFX900-NEXT:    ; def v[3:5]
2707 ; GFX900-NEXT:    ;;#ASMEND
2708 ; GFX900-NEXT:    ;;#ASMSTART
2709 ; GFX900-NEXT:    ; def v[1:3]
2710 ; GFX900-NEXT:    ;;#ASMEND
2711 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2712 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
2713 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
2714 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
2715 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
2716 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2717 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2719 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_3_1_1:
2720 ; GFX90A:       ; %bb.0:
2721 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2722 ; GFX90A-NEXT:    ;;#ASMSTART
2723 ; GFX90A-NEXT:    ; def v[2:4]
2724 ; GFX90A-NEXT:    ;;#ASMEND
2725 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
2726 ; GFX90A-NEXT:    ;;#ASMSTART
2727 ; GFX90A-NEXT:    ; def v[4:6]
2728 ; GFX90A-NEXT:    ;;#ASMEND
2729 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
2730 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
2731 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
2732 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
2733 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2734 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2736 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_3_1_1:
2737 ; GFX940:       ; %bb.0:
2738 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2739 ; GFX940-NEXT:    ;;#ASMSTART
2740 ; GFX940-NEXT:    ; def v[2:4]
2741 ; GFX940-NEXT:    ;;#ASMEND
2742 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
2743 ; GFX940-NEXT:    ;;#ASMSTART
2744 ; GFX940-NEXT:    ; def v[4:6]
2745 ; GFX940-NEXT:    ;;#ASMEND
2746 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
2747 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
2748 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
2749 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
2750 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2751 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2752   %vec0 = call <3 x float> asm "; def $0", "=v"()
2753   %vec1 = call <3 x float> asm "; def $0", "=v"()
2754   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 1, i32 1>
2755   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2756   ret void
2759 define void @v_shuffle_v4f32_v3f32__5_4_1_1(ptr addrspace(1) inreg %ptr) {
2760 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_4_1_1:
2761 ; GFX900:       ; %bb.0:
2762 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2763 ; GFX900-NEXT:    ;;#ASMSTART
2764 ; GFX900-NEXT:    ; def v[2:4]
2765 ; GFX900-NEXT:    ;;#ASMEND
2766 ; GFX900-NEXT:    ;;#ASMSTART
2767 ; GFX900-NEXT:    ; def v[0:2]
2768 ; GFX900-NEXT:    ;;#ASMEND
2769 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
2770 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2771 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
2772 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2773 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2774 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2776 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_4_1_1:
2777 ; GFX90A:       ; %bb.0:
2778 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2779 ; GFX90A-NEXT:    ;;#ASMSTART
2780 ; GFX90A-NEXT:    ; def v[2:4]
2781 ; GFX90A-NEXT:    ;;#ASMEND
2782 ; GFX90A-NEXT:    ;;#ASMSTART
2783 ; GFX90A-NEXT:    ; def v[0:2]
2784 ; GFX90A-NEXT:    ;;#ASMEND
2785 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2786 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
2787 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
2788 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2789 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2790 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2792 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_4_1_1:
2793 ; GFX940:       ; %bb.0:
2794 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2795 ; GFX940-NEXT:    ;;#ASMSTART
2796 ; GFX940-NEXT:    ; def v[2:4]
2797 ; GFX940-NEXT:    ;;#ASMEND
2798 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2799 ; GFX940-NEXT:    ;;#ASMSTART
2800 ; GFX940-NEXT:    ; def v[0:2]
2801 ; GFX940-NEXT:    ;;#ASMEND
2802 ; GFX940-NEXT:    s_nop 0
2803 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
2804 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
2805 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
2806 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2807 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2808   %vec0 = call <3 x float> asm "; def $0", "=v"()
2809   %vec1 = call <3 x float> asm "; def $0", "=v"()
2810   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 1, i32 1>
2811   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2812   ret void
2815 define void @v_shuffle_v4f32_v3f32__5_5_1_1(ptr addrspace(1) inreg %ptr) {
2816 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_1_1:
2817 ; GFX900:       ; %bb.0:
2818 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2819 ; GFX900-NEXT:    ;;#ASMSTART
2820 ; GFX900-NEXT:    ; def v[1:3]
2821 ; GFX900-NEXT:    ;;#ASMEND
2822 ; GFX900-NEXT:    ;;#ASMSTART
2823 ; GFX900-NEXT:    ; def v[3:5]
2824 ; GFX900-NEXT:    ;;#ASMEND
2825 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2826 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
2827 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
2828 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
2829 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
2830 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2831 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2833 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_1_1:
2834 ; GFX90A:       ; %bb.0:
2835 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2836 ; GFX90A-NEXT:    ;;#ASMSTART
2837 ; GFX90A-NEXT:    ; def v[2:4]
2838 ; GFX90A-NEXT:    ;;#ASMEND
2839 ; GFX90A-NEXT:    ;;#ASMSTART
2840 ; GFX90A-NEXT:    ; def v[0:2]
2841 ; GFX90A-NEXT:    ;;#ASMEND
2842 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2843 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
2844 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2845 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
2846 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2847 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2848 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2850 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_1_1:
2851 ; GFX940:       ; %bb.0:
2852 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2853 ; GFX940-NEXT:    ;;#ASMSTART
2854 ; GFX940-NEXT:    ; def v[2:4]
2855 ; GFX940-NEXT:    ;;#ASMEND
2856 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2857 ; GFX940-NEXT:    ;;#ASMSTART
2858 ; GFX940-NEXT:    ; def v[0:2]
2859 ; GFX940-NEXT:    ;;#ASMEND
2860 ; GFX940-NEXT:    s_nop 0
2861 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
2862 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2863 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
2864 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
2865 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2866 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2867   %vec0 = call <3 x float> asm "; def $0", "=v"()
2868   %vec1 = call <3 x float> asm "; def $0", "=v"()
2869   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 1>
2870   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2871   ret void
2874 define void @v_shuffle_v4f32_v3f32__5_5_u_1(ptr addrspace(1) inreg %ptr) {
2875 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_u_1:
2876 ; GFX900:       ; %bb.0:
2877 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2878 ; GFX900-NEXT:    ;;#ASMSTART
2879 ; GFX900-NEXT:    ; def v[1:3]
2880 ; GFX900-NEXT:    ;;#ASMEND
2881 ; GFX900-NEXT:    ;;#ASMSTART
2882 ; GFX900-NEXT:    ; def v[3:5]
2883 ; GFX900-NEXT:    ;;#ASMEND
2884 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2885 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
2886 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
2887 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
2888 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
2889 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2890 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2892 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_u_1:
2893 ; GFX90A:       ; %bb.0:
2894 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2895 ; GFX90A-NEXT:    ;;#ASMSTART
2896 ; GFX90A-NEXT:    ; def v[2:4]
2897 ; GFX90A-NEXT:    ;;#ASMEND
2898 ; GFX90A-NEXT:    ;;#ASMSTART
2899 ; GFX90A-NEXT:    ; def v[0:2]
2900 ; GFX90A-NEXT:    ;;#ASMEND
2901 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2902 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
2903 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2904 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
2905 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2906 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2908 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_u_1:
2909 ; GFX940:       ; %bb.0:
2910 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2911 ; GFX940-NEXT:    ;;#ASMSTART
2912 ; GFX940-NEXT:    ; def v[2:4]
2913 ; GFX940-NEXT:    ;;#ASMEND
2914 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2915 ; GFX940-NEXT:    ;;#ASMSTART
2916 ; GFX940-NEXT:    ; def v[0:2]
2917 ; GFX940-NEXT:    ;;#ASMEND
2918 ; GFX940-NEXT:    s_nop 0
2919 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
2920 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2921 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
2922 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2923 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2924   %vec0 = call <3 x float> asm "; def $0", "=v"()
2925   %vec1 = call <3 x float> asm "; def $0", "=v"()
2926   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>
2927   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2928   ret void
2931 define void @v_shuffle_v4f32_v3f32__5_5_0_1(ptr addrspace(1) inreg %ptr) {
2932 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_0_1:
2933 ; GFX900:       ; %bb.0:
2934 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2935 ; GFX900-NEXT:    ;;#ASMSTART
2936 ; GFX900-NEXT:    ; def v[2:4]
2937 ; GFX900-NEXT:    ;;#ASMEND
2938 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
2939 ; GFX900-NEXT:    ;;#ASMSTART
2940 ; GFX900-NEXT:    ; def v[4:6]
2941 ; GFX900-NEXT:    ;;#ASMEND
2942 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
2943 ; GFX900-NEXT:    v_mov_b32_e32 v1, v6
2944 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
2945 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
2946 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
2948 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_0_1:
2949 ; GFX90A:       ; %bb.0:
2950 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2951 ; GFX90A-NEXT:    ;;#ASMSTART
2952 ; GFX90A-NEXT:    ; def v[2:4]
2953 ; GFX90A-NEXT:    ;;#ASMEND
2954 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
2955 ; GFX90A-NEXT:    ;;#ASMSTART
2956 ; GFX90A-NEXT:    ; def v[4:6]
2957 ; GFX90A-NEXT:    ;;#ASMEND
2958 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
2959 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
2960 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
2961 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2962 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2964 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_0_1:
2965 ; GFX940:       ; %bb.0:
2966 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2967 ; GFX940-NEXT:    ;;#ASMSTART
2968 ; GFX940-NEXT:    ; def v[2:4]
2969 ; GFX940-NEXT:    ;;#ASMEND
2970 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
2971 ; GFX940-NEXT:    ;;#ASMSTART
2972 ; GFX940-NEXT:    ; def v[4:6]
2973 ; GFX940-NEXT:    ;;#ASMEND
2974 ; GFX940-NEXT:    s_nop 0
2975 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
2976 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
2977 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
2978 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
2979 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
2980   %vec0 = call <3 x float> asm "; def $0", "=v"()
2981   %vec1 = call <3 x float> asm "; def $0", "=v"()
2982   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 1>
2983   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2984   ret void
2987 define void @v_shuffle_v4f32_v3f32__5_5_2_1(ptr addrspace(1) inreg %ptr) {
2988 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_2_1:
2989 ; GFX900:       ; %bb.0:
2990 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2991 ; GFX900-NEXT:    ;;#ASMSTART
2992 ; GFX900-NEXT:    ; def v[2:4]
2993 ; GFX900-NEXT:    ;;#ASMEND
2994 ; GFX900-NEXT:    ;;#ASMSTART
2995 ; GFX900-NEXT:    ; def v[0:2]
2996 ; GFX900-NEXT:    ;;#ASMEND
2997 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
2998 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2999 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3000 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
3001 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0: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_v4f32_v3f32__5_5_2_1:
3006 ; GFX90A:       ; %bb.0:
3007 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3008 ; GFX90A-NEXT:    ;;#ASMSTART
3009 ; GFX90A-NEXT:    ; def v[2:4]
3010 ; GFX90A-NEXT:    ;;#ASMEND
3011 ; GFX90A-NEXT:    ;;#ASMSTART
3012 ; GFX90A-NEXT:    ; def v[0:2]
3013 ; GFX90A-NEXT:    ;;#ASMEND
3014 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
3015 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3016 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3017 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
3018 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
3019 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3020 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3022 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_2_1:
3023 ; GFX940:       ; %bb.0:
3024 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3025 ; GFX940-NEXT:    ;;#ASMSTART
3026 ; GFX940-NEXT:    ; def v[2:4]
3027 ; GFX940-NEXT:    ;;#ASMEND
3028 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
3029 ; GFX940-NEXT:    ;;#ASMSTART
3030 ; GFX940-NEXT:    ; def v[0:2]
3031 ; GFX940-NEXT:    ;;#ASMEND
3032 ; GFX940-NEXT:    s_nop 0
3033 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
3034 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3035 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
3036 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
3037 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3038 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3039   %vec0 = call <3 x float> asm "; def $0", "=v"()
3040   %vec1 = call <3 x float> asm "; def $0", "=v"()
3041   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 1>
3042   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3043   ret void
3046 define void @v_shuffle_v4f32_v3f32__5_5_3_1(ptr addrspace(1) inreg %ptr) {
3047 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_3_1:
3048 ; GFX900:       ; %bb.0:
3049 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3050 ; GFX900-NEXT:    ;;#ASMSTART
3051 ; GFX900-NEXT:    ; def v[2:4]
3052 ; GFX900-NEXT:    ;;#ASMEND
3053 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
3054 ; GFX900-NEXT:    ;;#ASMSTART
3055 ; GFX900-NEXT:    ; def v[4:6]
3056 ; GFX900-NEXT:    ;;#ASMEND
3057 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
3058 ; GFX900-NEXT:    v_mov_b32_e32 v1, v6
3059 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
3060 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3061 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3062 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3064 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_3_1:
3065 ; GFX90A:       ; %bb.0:
3066 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3067 ; GFX90A-NEXT:    ;;#ASMSTART
3068 ; GFX90A-NEXT:    ; def v[2:4]
3069 ; GFX90A-NEXT:    ;;#ASMEND
3070 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3071 ; GFX90A-NEXT:    ;;#ASMSTART
3072 ; GFX90A-NEXT:    ; def v[4:6]
3073 ; GFX90A-NEXT:    ;;#ASMEND
3074 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3075 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
3076 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
3077 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3078 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3079 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3081 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_3_1:
3082 ; GFX940:       ; %bb.0:
3083 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3084 ; GFX940-NEXT:    ;;#ASMSTART
3085 ; GFX940-NEXT:    ; def v[2:4]
3086 ; GFX940-NEXT:    ;;#ASMEND
3087 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3088 ; GFX940-NEXT:    ;;#ASMSTART
3089 ; GFX940-NEXT:    ; def v[4:6]
3090 ; GFX940-NEXT:    ;;#ASMEND
3091 ; GFX940-NEXT:    s_nop 0
3092 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3093 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
3094 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
3095 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3096 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3097 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3098   %vec0 = call <3 x float> asm "; def $0", "=v"()
3099   %vec1 = call <3 x float> asm "; def $0", "=v"()
3100   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 1>
3101   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3102   ret void
3105 define void @v_shuffle_v4f32_v3f32__5_5_4_1(ptr addrspace(1) inreg %ptr) {
3106 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_4_1:
3107 ; GFX900:       ; %bb.0:
3108 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3109 ; GFX900-NEXT:    ;;#ASMSTART
3110 ; GFX900-NEXT:    ; def v[3:5]
3111 ; GFX900-NEXT:    ;;#ASMEND
3112 ; GFX900-NEXT:    ;;#ASMSTART
3113 ; GFX900-NEXT:    ; def v[1:3]
3114 ; GFX900-NEXT:    ;;#ASMEND
3115 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3116 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
3117 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
3118 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
3119 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
3120 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3121 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3123 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_4_1:
3124 ; GFX90A:       ; %bb.0:
3125 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3126 ; GFX90A-NEXT:    ;;#ASMSTART
3127 ; GFX90A-NEXT:    ; def v[2:4]
3128 ; GFX90A-NEXT:    ;;#ASMEND
3129 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3130 ; GFX90A-NEXT:    ;;#ASMSTART
3131 ; GFX90A-NEXT:    ; def v[4:6]
3132 ; GFX90A-NEXT:    ;;#ASMEND
3133 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3134 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
3135 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
3136 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3137 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3138 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3140 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_4_1:
3141 ; GFX940:       ; %bb.0:
3142 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3143 ; GFX940-NEXT:    ;;#ASMSTART
3144 ; GFX940-NEXT:    ; def v[2:4]
3145 ; GFX940-NEXT:    ;;#ASMEND
3146 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3147 ; GFX940-NEXT:    ;;#ASMSTART
3148 ; GFX940-NEXT:    ; def v[4:6]
3149 ; GFX940-NEXT:    ;;#ASMEND
3150 ; GFX940-NEXT:    s_nop 0
3151 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3152 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
3153 ; GFX940-NEXT:    v_mov_b32_e32 v2, v5
3154 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3155 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3156 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3157   %vec0 = call <3 x float> asm "; def $0", "=v"()
3158   %vec1 = call <3 x float> asm "; def $0", "=v"()
3159   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 1>
3160   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3161   ret void
3164 define void @v_shuffle_v4f32_v3f32__u_2_2_2(ptr addrspace(1) inreg %ptr) {
3165 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__u_2_2_2:
3166 ; GFX900:       ; %bb.0:
3167 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3168 ; GFX900-NEXT:    ;;#ASMSTART
3169 ; GFX900-NEXT:    ; def v[0:2]
3170 ; GFX900-NEXT:    ;;#ASMEND
3171 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3172 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3173 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3174 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3175 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3176 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3178 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__u_2_2_2:
3179 ; GFX90A:       ; %bb.0:
3180 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3181 ; GFX90A-NEXT:    ;;#ASMSTART
3182 ; GFX90A-NEXT:    ; def v[0:2]
3183 ; GFX90A-NEXT:    ;;#ASMEND
3184 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3185 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3186 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3187 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3188 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3189 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3191 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__u_2_2_2:
3192 ; GFX940:       ; %bb.0:
3193 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3194 ; GFX940-NEXT:    ;;#ASMSTART
3195 ; GFX940-NEXT:    ; def v[0:2]
3196 ; GFX940-NEXT:    ;;#ASMEND
3197 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3198 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3199 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3200 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3201 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3202 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3203   %vec0 = call <3 x float> asm "; def $0", "=v"()
3204   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>
3205   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3206   ret void
3209 define void @v_shuffle_v4f32_v3f32__0_2_2_2(ptr addrspace(1) inreg %ptr) {
3210 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__0_2_2_2:
3211 ; GFX900:       ; %bb.0:
3212 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3213 ; GFX900-NEXT:    ;;#ASMSTART
3214 ; GFX900-NEXT:    ; def v[0:2]
3215 ; GFX900-NEXT:    ;;#ASMEND
3216 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3217 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3218 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3219 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3220 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3221 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3223 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__0_2_2_2:
3224 ; GFX90A:       ; %bb.0:
3225 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3226 ; GFX90A-NEXT:    ;;#ASMSTART
3227 ; GFX90A-NEXT:    ; def v[0:2]
3228 ; GFX90A-NEXT:    ;;#ASMEND
3229 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3230 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3231 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3232 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3233 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3234 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3236 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__0_2_2_2:
3237 ; GFX940:       ; %bb.0:
3238 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3239 ; GFX940-NEXT:    ;;#ASMSTART
3240 ; GFX940-NEXT:    ; def v[0:2]
3241 ; GFX940-NEXT:    ;;#ASMEND
3242 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3243 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3244 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3245 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3246 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3247 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3248   %vec0 = call <3 x float> asm "; def $0", "=v"()
3249   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>
3250   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3251   ret void
3254 define void @v_shuffle_v4f32_v3f32__1_2_2_2(ptr addrspace(1) inreg %ptr) {
3255 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__1_2_2_2:
3256 ; GFX900:       ; %bb.0:
3257 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3258 ; GFX900-NEXT:    ;;#ASMSTART
3259 ; GFX900-NEXT:    ; def v[0:2]
3260 ; GFX900-NEXT:    ;;#ASMEND
3261 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3262 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
3263 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3264 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3265 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3266 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3267 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3269 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__1_2_2_2:
3270 ; GFX90A:       ; %bb.0:
3271 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3272 ; GFX90A-NEXT:    ;;#ASMSTART
3273 ; GFX90A-NEXT:    ; def v[0:2]
3274 ; GFX90A-NEXT:    ;;#ASMEND
3275 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3276 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3277 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
3278 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3279 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3280 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3281 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3283 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__1_2_2_2:
3284 ; GFX940:       ; %bb.0:
3285 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3286 ; GFX940-NEXT:    ;;#ASMSTART
3287 ; GFX940-NEXT:    ; def v[0:2]
3288 ; GFX940-NEXT:    ;;#ASMEND
3289 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3290 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
3291 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
3292 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3293 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3294 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3295 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3296   %vec0 = call <3 x float> asm "; def $0", "=v"()
3297   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>
3298   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3299   ret void
3302 define void @v_shuffle_v4f32_v3f32__2_2_2_2(ptr addrspace(1) inreg %ptr) {
3303 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__2_2_2_2:
3304 ; GFX900:       ; %bb.0:
3305 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3306 ; GFX900-NEXT:    ;;#ASMSTART
3307 ; GFX900-NEXT:    ; def v[0:2]
3308 ; GFX900-NEXT:    ;;#ASMEND
3309 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3310 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
3311 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3312 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3313 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3314 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3315 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3317 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__2_2_2_2:
3318 ; GFX90A:       ; %bb.0:
3319 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3320 ; GFX90A-NEXT:    ;;#ASMSTART
3321 ; GFX90A-NEXT:    ; def v[0:2]
3322 ; GFX90A-NEXT:    ;;#ASMEND
3323 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3324 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3325 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3326 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3327 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3328 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3329 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3331 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__2_2_2_2:
3332 ; GFX940:       ; %bb.0:
3333 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3334 ; GFX940-NEXT:    ;;#ASMSTART
3335 ; GFX940-NEXT:    ; def v[0:2]
3336 ; GFX940-NEXT:    ;;#ASMEND
3337 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3338 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
3339 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3340 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3341 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3342 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3343 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3344   %vec0 = call <3 x float> asm "; def $0", "=v"()
3345   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>
3346   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3347   ret void
3350 define void @v_shuffle_v4f32_v3f32__3_2_2_2(ptr addrspace(1) inreg %ptr) {
3351 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__3_2_2_2:
3352 ; GFX900:       ; %bb.0:
3353 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3354 ; GFX900-NEXT:    ;;#ASMSTART
3355 ; GFX900-NEXT:    ; def v[0:2]
3356 ; GFX900-NEXT:    ;;#ASMEND
3357 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3358 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3359 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3360 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3361 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3362 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3364 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__3_2_2_2:
3365 ; GFX90A:       ; %bb.0:
3366 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3367 ; GFX90A-NEXT:    ;;#ASMSTART
3368 ; GFX90A-NEXT:    ; def v[0:2]
3369 ; GFX90A-NEXT:    ;;#ASMEND
3370 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3371 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3372 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3373 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3374 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3375 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3377 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__3_2_2_2:
3378 ; GFX940:       ; %bb.0:
3379 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3380 ; GFX940-NEXT:    ;;#ASMSTART
3381 ; GFX940-NEXT:    ; def v[0:2]
3382 ; GFX940-NEXT:    ;;#ASMEND
3383 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3384 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3385 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3386 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3387 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3388 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3389   %vec0 = call <3 x float> asm "; def $0", "=v"()
3390   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>
3391   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3392   ret void
3395 define void @v_shuffle_v4f32_v3f32__4_2_2_2(ptr addrspace(1) inreg %ptr) {
3396 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__4_2_2_2:
3397 ; GFX900:       ; %bb.0:
3398 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3399 ; GFX900-NEXT:    ;;#ASMSTART
3400 ; GFX900-NEXT:    ; def v[0:2]
3401 ; GFX900-NEXT:    ;;#ASMEND
3402 ; GFX900-NEXT:    ;;#ASMSTART
3403 ; GFX900-NEXT:    ; def v[3:5]
3404 ; GFX900-NEXT:    ;;#ASMEND
3405 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3406 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
3407 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3408 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3409 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
3410 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3411 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3413 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__4_2_2_2:
3414 ; GFX90A:       ; %bb.0:
3415 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3416 ; GFX90A-NEXT:    ;;#ASMSTART
3417 ; GFX90A-NEXT:    ; def v[0:2]
3418 ; GFX90A-NEXT:    ;;#ASMEND
3419 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3420 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3421 ; GFX90A-NEXT:    ;;#ASMSTART
3422 ; GFX90A-NEXT:    ; def v[4:6]
3423 ; GFX90A-NEXT:    ;;#ASMEND
3424 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]
3425 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3426 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3427 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3428 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3430 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__4_2_2_2:
3431 ; GFX940:       ; %bb.0:
3432 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3433 ; GFX940-NEXT:    ;;#ASMSTART
3434 ; GFX940-NEXT:    ; def v[0:2]
3435 ; GFX940-NEXT:    ;;#ASMEND
3436 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3437 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
3438 ; GFX940-NEXT:    ;;#ASMSTART
3439 ; GFX940-NEXT:    ; def v[4:6]
3440 ; GFX940-NEXT:    ;;#ASMEND
3441 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3442 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]
3443 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3444 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3445 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3446   %vec0 = call <3 x float> asm "; def $0", "=v"()
3447   %vec1 = call <3 x float> asm "; def $0", "=v"()
3448   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 2, i32 2, i32 2>
3449   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3450   ret void
3453 define void @v_shuffle_v4f32_v3f32__5_2_2_2(ptr addrspace(1) inreg %ptr) {
3454 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_2_2_2:
3455 ; GFX900:       ; %bb.0:
3456 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3457 ; GFX900-NEXT:    ;;#ASMSTART
3458 ; GFX900-NEXT:    ; def v[0:2]
3459 ; GFX900-NEXT:    ;;#ASMEND
3460 ; GFX900-NEXT:    ;;#ASMSTART
3461 ; GFX900-NEXT:    ; def v[3:5]
3462 ; GFX900-NEXT:    ;;#ASMEND
3463 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3464 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
3465 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3466 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3467 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
3468 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3469 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3471 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_2_2_2:
3472 ; GFX90A:       ; %bb.0:
3473 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3474 ; GFX90A-NEXT:    ;;#ASMSTART
3475 ; GFX90A-NEXT:    ; def v[0:2]
3476 ; GFX90A-NEXT:    ;;#ASMEND
3477 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3478 ; GFX90A-NEXT:    ;;#ASMSTART
3479 ; GFX90A-NEXT:    ; def v[4:6]
3480 ; GFX90A-NEXT:    ;;#ASMEND
3481 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3482 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3483 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3484 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3485 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3486 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3488 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_2_2_2:
3489 ; GFX940:       ; %bb.0:
3490 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3491 ; GFX940-NEXT:    ;;#ASMSTART
3492 ; GFX940-NEXT:    ; def v[0:2]
3493 ; GFX940-NEXT:    ;;#ASMEND
3494 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3495 ; GFX940-NEXT:    ;;#ASMSTART
3496 ; GFX940-NEXT:    ; def v[4:6]
3497 ; GFX940-NEXT:    ;;#ASMEND
3498 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3499 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3500 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3501 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3502 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3503 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3504   %vec0 = call <3 x float> asm "; def $0", "=v"()
3505   %vec1 = call <3 x float> asm "; def $0", "=v"()
3506   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>
3507   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3508   ret void
3511 define void @v_shuffle_v4f32_v3f32__5_u_2_2(ptr addrspace(1) inreg %ptr) {
3512 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_u_2_2:
3513 ; GFX900:       ; %bb.0:
3514 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3515 ; GFX900-NEXT:    ;;#ASMSTART
3516 ; GFX900-NEXT:    ; def v[0:2]
3517 ; GFX900-NEXT:    ;;#ASMEND
3518 ; GFX900-NEXT:    ;;#ASMSTART
3519 ; GFX900-NEXT:    ; def v[3:5]
3520 ; GFX900-NEXT:    ;;#ASMEND
3521 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3522 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
3523 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3524 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
3525 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3526 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3528 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_u_2_2:
3529 ; GFX90A:       ; %bb.0:
3530 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3531 ; GFX90A-NEXT:    ;;#ASMSTART
3532 ; GFX90A-NEXT:    ; def v[0:2]
3533 ; GFX90A-NEXT:    ;;#ASMEND
3534 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3535 ; GFX90A-NEXT:    ;;#ASMSTART
3536 ; GFX90A-NEXT:    ; def v[4:6]
3537 ; GFX90A-NEXT:    ;;#ASMEND
3538 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3539 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3540 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3541 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3542 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3544 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_u_2_2:
3545 ; GFX940:       ; %bb.0:
3546 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3547 ; GFX940-NEXT:    ;;#ASMSTART
3548 ; GFX940-NEXT:    ; def v[0:2]
3549 ; GFX940-NEXT:    ;;#ASMEND
3550 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3551 ; GFX940-NEXT:    ;;#ASMSTART
3552 ; GFX940-NEXT:    ; def v[4:6]
3553 ; GFX940-NEXT:    ;;#ASMEND
3554 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3555 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3556 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3557 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3558 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3559   %vec0 = call <3 x float> asm "; def $0", "=v"()
3560   %vec1 = call <3 x float> asm "; def $0", "=v"()
3561   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>
3562   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3563   ret void
3566 define void @v_shuffle_v4f32_v3f32__5_0_2_2(ptr addrspace(1) inreg %ptr) {
3567 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_0_2_2:
3568 ; GFX900:       ; %bb.0:
3569 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3570 ; GFX900-NEXT:    ;;#ASMSTART
3571 ; GFX900-NEXT:    ; def v[1:3]
3572 ; GFX900-NEXT:    ;;#ASMEND
3573 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
3574 ; GFX900-NEXT:    ;;#ASMSTART
3575 ; GFX900-NEXT:    ; def v[4:6]
3576 ; GFX900-NEXT:    ;;#ASMEND
3577 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
3578 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
3579 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3580 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3581 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3583 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_0_2_2:
3584 ; GFX90A:       ; %bb.0:
3585 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3586 ; GFX90A-NEXT:    ;;#ASMSTART
3587 ; GFX90A-NEXT:    ; def v[2:4]
3588 ; GFX90A-NEXT:    ;;#ASMEND
3589 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
3590 ; GFX90A-NEXT:    ;;#ASMSTART
3591 ; GFX90A-NEXT:    ; def v[6:8]
3592 ; GFX90A-NEXT:    ;;#ASMEND
3593 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v8
3594 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3595 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
3596 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
3597 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
3598 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3599 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3601 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_0_2_2:
3602 ; GFX940:       ; %bb.0:
3603 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3604 ; GFX940-NEXT:    ;;#ASMSTART
3605 ; GFX940-NEXT:    ; def v[2:4]
3606 ; GFX940-NEXT:    ;;#ASMEND
3607 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
3608 ; GFX940-NEXT:    ;;#ASMSTART
3609 ; GFX940-NEXT:    ; def v[6:8]
3610 ; GFX940-NEXT:    ;;#ASMEND
3611 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3612 ; GFX940-NEXT:    v_mov_b32_e32 v0, v8
3613 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
3614 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
3615 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
3616 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3617 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3618   %vec0 = call <3 x float> asm "; def $0", "=v"()
3619   %vec1 = call <3 x float> asm "; def $0", "=v"()
3620   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 2, i32 2>
3621   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3622   ret void
3625 define void @v_shuffle_v4f32_v3f32__5_1_2_2(ptr addrspace(1) inreg %ptr) {
3626 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_1_2_2:
3627 ; GFX900:       ; %bb.0:
3628 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3629 ; GFX900-NEXT:    ;;#ASMSTART
3630 ; GFX900-NEXT:    ; def v[0:2]
3631 ; GFX900-NEXT:    ;;#ASMEND
3632 ; GFX900-NEXT:    ;;#ASMSTART
3633 ; GFX900-NEXT:    ; def v[3:5]
3634 ; GFX900-NEXT:    ;;#ASMEND
3635 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3636 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
3637 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3638 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0: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_v4f32_v3f32__5_1_2_2:
3643 ; GFX90A:       ; %bb.0:
3644 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3645 ; GFX90A-NEXT:    ;;#ASMSTART
3646 ; GFX90A-NEXT:    ; def v[0:2]
3647 ; GFX90A-NEXT:    ;;#ASMEND
3648 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3649 ; GFX90A-NEXT:    ;;#ASMSTART
3650 ; GFX90A-NEXT:    ; def v[4:6]
3651 ; GFX90A-NEXT:    ;;#ASMEND
3652 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3653 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3654 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3655 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3656 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3658 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_1_2_2:
3659 ; GFX940:       ; %bb.0:
3660 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3661 ; GFX940-NEXT:    ;;#ASMSTART
3662 ; GFX940-NEXT:    ; def v[0:2]
3663 ; GFX940-NEXT:    ;;#ASMEND
3664 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3665 ; GFX940-NEXT:    ;;#ASMSTART
3666 ; GFX940-NEXT:    ; def v[4:6]
3667 ; GFX940-NEXT:    ;;#ASMEND
3668 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3669 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3670 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3671 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3672 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3673   %vec0 = call <3 x float> asm "; def $0", "=v"()
3674   %vec1 = call <3 x float> asm "; def $0", "=v"()
3675   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 2, i32 2>
3676   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3677   ret void
3680 define void @v_shuffle_v4f32_v3f32__5_3_2_2(ptr addrspace(1) inreg %ptr) {
3681 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_3_2_2:
3682 ; GFX900:       ; %bb.0:
3683 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3684 ; GFX900-NEXT:    ;;#ASMSTART
3685 ; GFX900-NEXT:    ; def v[2:4]
3686 ; GFX900-NEXT:    ;;#ASMEND
3687 ; GFX900-NEXT:    ;;#ASMSTART
3688 ; GFX900-NEXT:    ; def v[1:3]
3689 ; GFX900-NEXT:    ;;#ASMEND
3690 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
3691 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
3692 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
3693 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
3694 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
3695 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3696 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3698 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_3_2_2:
3699 ; GFX90A:       ; %bb.0:
3700 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3701 ; GFX90A-NEXT:    ;;#ASMSTART
3702 ; GFX90A-NEXT:    ; def v[0:2]
3703 ; GFX90A-NEXT:    ;;#ASMEND
3704 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3705 ; GFX90A-NEXT:    ;;#ASMSTART
3706 ; GFX90A-NEXT:    ; def v[4:6]
3707 ; GFX90A-NEXT:    ;;#ASMEND
3708 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3709 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
3710 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3711 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3712 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3713 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3715 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_3_2_2:
3716 ; GFX940:       ; %bb.0:
3717 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3718 ; GFX940-NEXT:    ;;#ASMSTART
3719 ; GFX940-NEXT:    ; def v[0:2]
3720 ; GFX940-NEXT:    ;;#ASMEND
3721 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3722 ; GFX940-NEXT:    ;;#ASMSTART
3723 ; GFX940-NEXT:    ; def v[4:6]
3724 ; GFX940-NEXT:    ;;#ASMEND
3725 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3726 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3727 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
3728 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3729 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3730 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3731   %vec0 = call <3 x float> asm "; def $0", "=v"()
3732   %vec1 = call <3 x float> asm "; def $0", "=v"()
3733   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 2, i32 2>
3734   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3735   ret void
3738 define void @v_shuffle_v4f32_v3f32__5_4_2_2(ptr addrspace(1) inreg %ptr) {
3739 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_4_2_2:
3740 ; GFX900:       ; %bb.0:
3741 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3742 ; GFX900-NEXT:    ;;#ASMSTART
3743 ; GFX900-NEXT:    ; def v[1:3]
3744 ; GFX900-NEXT:    ;;#ASMEND
3745 ; GFX900-NEXT:    ;;#ASMSTART
3746 ; GFX900-NEXT:    ; def v[0:2]
3747 ; GFX900-NEXT:    ;;#ASMEND
3748 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3749 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
3750 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
3751 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3752 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3753 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3755 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_4_2_2:
3756 ; GFX90A:       ; %bb.0:
3757 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3758 ; GFX90A-NEXT:    ;;#ASMSTART
3759 ; GFX90A-NEXT:    ; def v[2:4]
3760 ; GFX90A-NEXT:    ;;#ASMEND
3761 ; GFX90A-NEXT:    ;;#ASMSTART
3762 ; GFX90A-NEXT:    ; def v[0:2]
3763 ; GFX90A-NEXT:    ;;#ASMEND
3764 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
3765 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3766 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
3767 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
3768 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
3769 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3770 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3772 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_4_2_2:
3773 ; GFX940:       ; %bb.0:
3774 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3775 ; GFX940-NEXT:    ;;#ASMSTART
3776 ; GFX940-NEXT:    ; def v[2:4]
3777 ; GFX940-NEXT:    ;;#ASMEND
3778 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
3779 ; GFX940-NEXT:    ;;#ASMSTART
3780 ; GFX940-NEXT:    ; def v[0:2]
3781 ; GFX940-NEXT:    ;;#ASMEND
3782 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
3783 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
3784 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
3785 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
3786 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3787 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3788   %vec0 = call <3 x float> asm "; def $0", "=v"()
3789   %vec1 = call <3 x float> asm "; def $0", "=v"()
3790   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 2, i32 2>
3791   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3792   ret void
3795 define void @v_shuffle_v4f32_v3f32__5_5_2_2(ptr addrspace(1) inreg %ptr) {
3796 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_2_2:
3797 ; GFX900:       ; %bb.0:
3798 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3799 ; GFX900-NEXT:    ;;#ASMSTART
3800 ; GFX900-NEXT:    ; def v[0:2]
3801 ; GFX900-NEXT:    ;;#ASMEND
3802 ; GFX900-NEXT:    ;;#ASMSTART
3803 ; GFX900-NEXT:    ; def v[3:5]
3804 ; GFX900-NEXT:    ;;#ASMEND
3805 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3806 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
3807 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
3808 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
3809 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
3810 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3811 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3813 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_2_2:
3814 ; GFX90A:       ; %bb.0:
3815 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3816 ; GFX90A-NEXT:    ;;#ASMSTART
3817 ; GFX90A-NEXT:    ; def v[0:2]
3818 ; GFX90A-NEXT:    ;;#ASMEND
3819 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3820 ; GFX90A-NEXT:    ;;#ASMSTART
3821 ; GFX90A-NEXT:    ; def v[4:6]
3822 ; GFX90A-NEXT:    ;;#ASMEND
3823 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3824 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
3825 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3826 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3827 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3828 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3830 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_2_2:
3831 ; GFX940:       ; %bb.0:
3832 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3833 ; GFX940-NEXT:    ;;#ASMSTART
3834 ; GFX940-NEXT:    ; def v[0:2]
3835 ; GFX940-NEXT:    ;;#ASMEND
3836 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3837 ; GFX940-NEXT:    ;;#ASMSTART
3838 ; GFX940-NEXT:    ; def v[4:6]
3839 ; GFX940-NEXT:    ;;#ASMEND
3840 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3841 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3842 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
3843 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3844 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3845 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3846   %vec0 = call <3 x float> asm "; def $0", "=v"()
3847   %vec1 = call <3 x float> asm "; def $0", "=v"()
3848   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 2>
3849   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3850   ret void
3853 define void @v_shuffle_v4f32_v3f32__5_5_u_2(ptr addrspace(1) inreg %ptr) {
3854 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_u_2:
3855 ; GFX900:       ; %bb.0:
3856 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3857 ; GFX900-NEXT:    ;;#ASMSTART
3858 ; GFX900-NEXT:    ; def v[1:3]
3859 ; GFX900-NEXT:    ;;#ASMEND
3860 ; GFX900-NEXT:    ;;#ASMSTART
3861 ; GFX900-NEXT:    ; def v[0:2]
3862 ; GFX900-NEXT:    ;;#ASMEND
3863 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3864 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
3865 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3866 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3867 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3868 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3870 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_u_2:
3871 ; GFX90A:       ; %bb.0:
3872 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3873 ; GFX90A-NEXT:    ;;#ASMSTART
3874 ; GFX90A-NEXT:    ; def v[0:2]
3875 ; GFX90A-NEXT:    ;;#ASMEND
3876 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3877 ; GFX90A-NEXT:    ;;#ASMSTART
3878 ; GFX90A-NEXT:    ; def v[4:6]
3879 ; GFX90A-NEXT:    ;;#ASMEND
3880 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3881 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
3882 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
3883 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3884 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3885 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3887 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_u_2:
3888 ; GFX940:       ; %bb.0:
3889 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3890 ; GFX940-NEXT:    ;;#ASMSTART
3891 ; GFX940-NEXT:    ; def v[0:2]
3892 ; GFX940-NEXT:    ;;#ASMEND
3893 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
3894 ; GFX940-NEXT:    ;;#ASMSTART
3895 ; GFX940-NEXT:    ; def v[4:6]
3896 ; GFX940-NEXT:    ;;#ASMEND
3897 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
3898 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3899 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
3900 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
3901 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3902 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3903   %vec0 = call <3 x float> asm "; def $0", "=v"()
3904   %vec1 = call <3 x float> asm "; def $0", "=v"()
3905   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>
3906   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3907   ret void
3910 define void @v_shuffle_v4f32_v3f32__5_5_0_2(ptr addrspace(1) inreg %ptr) {
3911 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_0_2:
3912 ; GFX900:       ; %bb.0:
3913 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3914 ; GFX900-NEXT:    ;;#ASMSTART
3915 ; GFX900-NEXT:    ; def v[2:4]
3916 ; GFX900-NEXT:    ;;#ASMEND
3917 ; GFX900-NEXT:    v_mov_b32_e32 v8, 0
3918 ; GFX900-NEXT:    ;;#ASMSTART
3919 ; GFX900-NEXT:    ; def v[5:7]
3920 ; GFX900-NEXT:    ;;#ASMEND
3921 ; GFX900-NEXT:    v_mov_b32_e32 v0, v7
3922 ; GFX900-NEXT:    v_mov_b32_e32 v1, v7
3923 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
3924 ; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
3925 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3926 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3928 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_0_2:
3929 ; GFX90A:       ; %bb.0:
3930 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3931 ; GFX90A-NEXT:    ;;#ASMSTART
3932 ; GFX90A-NEXT:    ; def v[2:4]
3933 ; GFX90A-NEXT:    ;;#ASMEND
3934 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
3935 ; GFX90A-NEXT:    ;;#ASMSTART
3936 ; GFX90A-NEXT:    ; def v[6:8]
3937 ; GFX90A-NEXT:    ;;#ASMEND
3938 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v8
3939 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v8
3940 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
3941 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
3942 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3943 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3945 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_0_2:
3946 ; GFX940:       ; %bb.0:
3947 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3948 ; GFX940-NEXT:    ;;#ASMSTART
3949 ; GFX940-NEXT:    ; def v[2:4]
3950 ; GFX940-NEXT:    ;;#ASMEND
3951 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
3952 ; GFX940-NEXT:    ;;#ASMSTART
3953 ; GFX940-NEXT:    ; def v[6:8]
3954 ; GFX940-NEXT:    ;;#ASMEND
3955 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
3956 ; GFX940-NEXT:    v_mov_b32_e32 v0, v8
3957 ; GFX940-NEXT:    v_mov_b32_e32 v1, v8
3958 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
3959 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
3960 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
3961   %vec0 = call <3 x float> asm "; def $0", "=v"()
3962   %vec1 = call <3 x float> asm "; def $0", "=v"()
3963   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 2>
3964   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3965   ret void
3968 define void @v_shuffle_v4f32_v3f32__5_5_1_2(ptr addrspace(1) inreg %ptr) {
3969 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_1_2:
3970 ; GFX900:       ; %bb.0:
3971 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3972 ; GFX900-NEXT:    ;;#ASMSTART
3973 ; GFX900-NEXT:    ; def v[1:3]
3974 ; GFX900-NEXT:    ;;#ASMEND
3975 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
3976 ; GFX900-NEXT:    ;;#ASMSTART
3977 ; GFX900-NEXT:    ; def v[4:6]
3978 ; GFX900-NEXT:    ;;#ASMEND
3979 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
3980 ; GFX900-NEXT:    v_mov_b32_e32 v1, v6
3981 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
3982 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
3983 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
3985 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_1_2:
3986 ; GFX90A:       ; %bb.0:
3987 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3988 ; GFX90A-NEXT:    ;;#ASMSTART
3989 ; GFX90A-NEXT:    ; def v[0:2]
3990 ; GFX90A-NEXT:    ;;#ASMEND
3991 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3992 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
3993 ; GFX90A-NEXT:    ;;#ASMSTART
3994 ; GFX90A-NEXT:    ; def v[4:6]
3995 ; GFX90A-NEXT:    ;;#ASMEND
3996 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]
3997 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3998 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
3999 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4000 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4001 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4003 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_1_2:
4004 ; GFX940:       ; %bb.0:
4005 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4006 ; GFX940-NEXT:    ;;#ASMSTART
4007 ; GFX940-NEXT:    ; def v[0:2]
4008 ; GFX940-NEXT:    ;;#ASMEND
4009 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4010 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
4011 ; GFX940-NEXT:    ;;#ASMSTART
4012 ; GFX940-NEXT:    ; def v[4:6]
4013 ; GFX940-NEXT:    ;;#ASMEND
4014 ; GFX940-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]
4015 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4016 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
4017 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4018 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4019 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4020   %vec0 = call <3 x float> asm "; def $0", "=v"()
4021   %vec1 = call <3 x float> asm "; def $0", "=v"()
4022   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 2>
4023   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4024   ret void
4027 define void @v_shuffle_v4f32_v3f32__5_5_3_2(ptr addrspace(1) inreg %ptr) {
4028 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_3_2:
4029 ; GFX900:       ; %bb.0:
4030 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4031 ; GFX900-NEXT:    ;;#ASMSTART
4032 ; GFX900-NEXT:    ; def v[1:3]
4033 ; GFX900-NEXT:    ;;#ASMEND
4034 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
4035 ; GFX900-NEXT:    ;;#ASMSTART
4036 ; GFX900-NEXT:    ; def v[4:6]
4037 ; GFX900-NEXT:    ;;#ASMEND
4038 ; GFX900-NEXT:    v_mov_b32_e32 v0, v6
4039 ; GFX900-NEXT:    v_mov_b32_e32 v1, v6
4040 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
4041 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4042 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4043 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4045 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_3_2:
4046 ; GFX90A:       ; %bb.0:
4047 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4048 ; GFX90A-NEXT:    ;;#ASMSTART
4049 ; GFX90A-NEXT:    ; def v[2:4]
4050 ; GFX90A-NEXT:    ;;#ASMEND
4051 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
4052 ; GFX90A-NEXT:    ;;#ASMSTART
4053 ; GFX90A-NEXT:    ; def v[6:8]
4054 ; GFX90A-NEXT:    ;;#ASMEND
4055 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v8
4056 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v8
4057 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
4058 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4059 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
4060 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4061 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4063 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_3_2:
4064 ; GFX940:       ; %bb.0:
4065 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4066 ; GFX940-NEXT:    ;;#ASMSTART
4067 ; GFX940-NEXT:    ; def v[2:4]
4068 ; GFX940-NEXT:    ;;#ASMEND
4069 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
4070 ; GFX940-NEXT:    ;;#ASMSTART
4071 ; GFX940-NEXT:    ; def v[6:8]
4072 ; GFX940-NEXT:    ;;#ASMEND
4073 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4074 ; GFX940-NEXT:    v_mov_b32_e32 v0, v8
4075 ; GFX940-NEXT:    v_mov_b32_e32 v1, v8
4076 ; GFX940-NEXT:    v_mov_b32_e32 v2, v6
4077 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
4078 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4079 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4080   %vec0 = call <3 x float> asm "; def $0", "=v"()
4081   %vec1 = call <3 x float> asm "; def $0", "=v"()
4082   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 2>
4083   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4084   ret void
4087 define void @v_shuffle_v4f32_v3f32__5_5_4_2(ptr addrspace(1) inreg %ptr) {
4088 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_4_2:
4089 ; GFX900:       ; %bb.0:
4090 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4091 ; GFX900-NEXT:    ;;#ASMSTART
4092 ; GFX900-NEXT:    ; def v[2:4]
4093 ; GFX900-NEXT:    ;;#ASMEND
4094 ; GFX900-NEXT:    ;;#ASMSTART
4095 ; GFX900-NEXT:    ; def v[1:3]
4096 ; GFX900-NEXT:    ;;#ASMEND
4097 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
4098 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
4099 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
4100 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
4101 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
4102 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4103 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4105 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_4_2:
4106 ; GFX90A:       ; %bb.0:
4107 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4108 ; GFX90A-NEXT:    ;;#ASMSTART
4109 ; GFX90A-NEXT:    ; def v[0:2]
4110 ; GFX90A-NEXT:    ;;#ASMEND
4111 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
4112 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4113 ; GFX90A-NEXT:    ;;#ASMSTART
4114 ; GFX90A-NEXT:    ; def v[4:6]
4115 ; GFX90A-NEXT:    ;;#ASMEND
4116 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[4:5], v[0:1] op_sel:[1,0]
4117 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4118 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
4119 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4120 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4121 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4123 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_4_2:
4124 ; GFX940:       ; %bb.0:
4125 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4126 ; GFX940-NEXT:    ;;#ASMSTART
4127 ; GFX940-NEXT:    ; def v[0:2]
4128 ; GFX940-NEXT:    ;;#ASMEND
4129 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4130 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
4131 ; GFX940-NEXT:    ;;#ASMSTART
4132 ; GFX940-NEXT:    ; def v[4:6]
4133 ; GFX940-NEXT:    ;;#ASMEND
4134 ; GFX940-NEXT:    s_nop 0
4135 ; GFX940-NEXT:    v_pk_mov_b32 v[2:3], v[4:5], v[0:1] op_sel:[1,0]
4136 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4137 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
4138 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4139 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4140 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4141   %vec0 = call <3 x float> asm "; def $0", "=v"()
4142   %vec1 = call <3 x float> asm "; def $0", "=v"()
4143   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 2>
4144   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4145   ret void
4148 define void @v_shuffle_v4f32_v3f32__u_3_3_3(ptr addrspace(1) inreg %ptr) {
4149 ; GFX9-LABEL: v_shuffle_v4f32_v3f32__u_3_3_3:
4150 ; GFX9:       ; %bb.0:
4151 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4152 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4153   %vec0 = call <3 x float> asm "; def $0", "=v"()
4154   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>
4155   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4156   ret void
4159 define void @v_shuffle_v4f32_v3f32__0_3_3_3(ptr addrspace(1) inreg %ptr) {
4160 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__0_3_3_3:
4161 ; GFX900:       ; %bb.0:
4162 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4163 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4164 ; GFX900-NEXT:    ;;#ASMSTART
4165 ; GFX900-NEXT:    ; def v[0:2]
4166 ; GFX900-NEXT:    ;;#ASMEND
4167 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
4168 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4169 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4171 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__0_3_3_3:
4172 ; GFX90A:       ; %bb.0:
4173 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4174 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
4175 ; GFX90A-NEXT:    ;;#ASMSTART
4176 ; GFX90A-NEXT:    ; def v[0:2]
4177 ; GFX90A-NEXT:    ;;#ASMEND
4178 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
4179 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4180 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4182 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__0_3_3_3:
4183 ; GFX940:       ; %bb.0:
4184 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4185 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
4186 ; GFX940-NEXT:    ;;#ASMSTART
4187 ; GFX940-NEXT:    ; def v[0:2]
4188 ; GFX940-NEXT:    ;;#ASMEND
4189 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
4190 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4191 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4192   %vec0 = call <3 x float> asm "; def $0", "=v"()
4193   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>
4194   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4195   ret void
4198 define void @v_shuffle_v4f32_v3f32__1_3_3_3(ptr addrspace(1) inreg %ptr) {
4199 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__1_3_3_3:
4200 ; GFX900:       ; %bb.0:
4201 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4202 ; GFX900-NEXT:    ;;#ASMSTART
4203 ; GFX900-NEXT:    ; def v[0:2]
4204 ; GFX900-NEXT:    ;;#ASMEND
4205 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4206 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
4207 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
4208 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4209 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4211 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__1_3_3_3:
4212 ; GFX90A:       ; %bb.0:
4213 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4214 ; GFX90A-NEXT:    ;;#ASMSTART
4215 ; GFX90A-NEXT:    ; def v[0:2]
4216 ; GFX90A-NEXT:    ;;#ASMEND
4217 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
4218 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
4219 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
4220 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4221 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4223 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__1_3_3_3:
4224 ; GFX940:       ; %bb.0:
4225 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4226 ; GFX940-NEXT:    ;;#ASMSTART
4227 ; GFX940-NEXT:    ; def v[0:2]
4228 ; GFX940-NEXT:    ;;#ASMEND
4229 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
4230 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
4231 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
4232 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4233 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4234   %vec0 = call <3 x float> asm "; def $0", "=v"()
4235   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>
4236   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4237   ret void
4240 define void @v_shuffle_v4f32_v3f32__2_3_3_3(ptr addrspace(1) inreg %ptr) {
4241 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__2_3_3_3:
4242 ; GFX900:       ; %bb.0:
4243 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4244 ; GFX900-NEXT:    ;;#ASMSTART
4245 ; GFX900-NEXT:    ; def v[0:2]
4246 ; GFX900-NEXT:    ;;#ASMEND
4247 ; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4248 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
4249 ; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
4250 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4251 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4253 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__2_3_3_3:
4254 ; GFX90A:       ; %bb.0:
4255 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4256 ; GFX90A-NEXT:    ;;#ASMSTART
4257 ; GFX90A-NEXT:    ; def v[0:2]
4258 ; GFX90A-NEXT:    ;;#ASMEND
4259 ; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
4260 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
4261 ; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
4262 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4263 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4265 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__2_3_3_3:
4266 ; GFX940:       ; %bb.0:
4267 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4268 ; GFX940-NEXT:    ;;#ASMSTART
4269 ; GFX940-NEXT:    ; def v[0:2]
4270 ; GFX940-NEXT:    ;;#ASMEND
4271 ; GFX940-NEXT:    v_mov_b32_e32 v3, 0
4272 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
4273 ; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
4274 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4275 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4276   %vec0 = call <3 x float> asm "; def $0", "=v"()
4277   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>
4278   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4279   ret void
4282 define void @v_shuffle_v4f32_v3f32__3_3_3_3(ptr addrspace(1) inreg %ptr) {
4283 ; GFX9-LABEL: v_shuffle_v4f32_v3f32__3_3_3_3:
4284 ; GFX9:       ; %bb.0:
4285 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4286 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
4287   %vec0 = call <3 x float> asm "; def $0", "=v"()
4288   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
4289   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4290   ret void
4293 define void @v_shuffle_v4f32_v3f32__4_3_3_3(ptr addrspace(1) inreg %ptr) {
4294 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__4_3_3_3:
4295 ; GFX900:       ; %bb.0:
4296 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4297 ; GFX900-NEXT:    ;;#ASMSTART
4298 ; GFX900-NEXT:    ; def v[1:3]
4299 ; GFX900-NEXT:    ;;#ASMEND
4300 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4301 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
4302 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
4303 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
4304 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4305 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4306 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4308 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__4_3_3_3:
4309 ; GFX90A:       ; %bb.0:
4310 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4311 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4312 ; GFX90A-NEXT:    ;;#ASMSTART
4313 ; GFX90A-NEXT:    ; def v[4:6]
4314 ; GFX90A-NEXT:    ;;#ASMEND
4315 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[4:5] op_sel:[1,0]
4316 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4317 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4318 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4319 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4320 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4322 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__4_3_3_3:
4323 ; GFX940:       ; %bb.0:
4324 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4325 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4326 ; GFX940-NEXT:    ;;#ASMSTART
4327 ; GFX940-NEXT:    ; def v[4:6]
4328 ; GFX940-NEXT:    ;;#ASMEND
4329 ; GFX940-NEXT:    s_nop 0
4330 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[4:5] op_sel:[1,0]
4331 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4332 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4333 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4334 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4335 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4336   %vec0 = call <3 x float> asm "; def $0", "=v"()
4337   %vec1 = call <3 x float> asm "; def $0", "=v"()
4338   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 3, i32 3, i32 3>
4339   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4340   ret void
4343 define void @v_shuffle_v4f32_v3f32__5_3_3_3(ptr addrspace(1) inreg %ptr) {
4344 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_3_3_3:
4345 ; GFX900:       ; %bb.0:
4346 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4347 ; GFX900-NEXT:    ;;#ASMSTART
4348 ; GFX900-NEXT:    ; def v[1:3]
4349 ; GFX900-NEXT:    ;;#ASMEND
4350 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4351 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
4352 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
4353 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
4354 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4355 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4356 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4358 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_3_3_3:
4359 ; GFX90A:       ; %bb.0:
4360 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4361 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4362 ; GFX90A-NEXT:    ;;#ASMSTART
4363 ; GFX90A-NEXT:    ; def v[4:6]
4364 ; GFX90A-NEXT:    ;;#ASMEND
4365 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4366 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
4367 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4368 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4369 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4370 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4371 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4373 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_3_3_3:
4374 ; GFX940:       ; %bb.0:
4375 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4376 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4377 ; GFX940-NEXT:    ;;#ASMSTART
4378 ; GFX940-NEXT:    ; def v[4:6]
4379 ; GFX940-NEXT:    ;;#ASMEND
4380 ; GFX940-NEXT:    s_nop 0
4381 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4382 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
4383 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4384 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4385 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4386 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4387 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4388   %vec0 = call <3 x float> asm "; def $0", "=v"()
4389   %vec1 = call <3 x float> asm "; def $0", "=v"()
4390   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>
4391   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4392   ret void
4395 define void @v_shuffle_v4f32_v3f32__5_u_3_3(ptr addrspace(1) inreg %ptr) {
4396 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_u_3_3:
4397 ; GFX900:       ; %bb.0:
4398 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4399 ; GFX900-NEXT:    ;;#ASMSTART
4400 ; GFX900-NEXT:    ; def v[1:3]
4401 ; GFX900-NEXT:    ;;#ASMEND
4402 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4403 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
4404 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
4405 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
4406 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4407 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4408 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4410 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_u_3_3:
4411 ; GFX90A:       ; %bb.0:
4412 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4413 ; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
4414 ; GFX90A-NEXT:    ;;#ASMSTART
4415 ; GFX90A-NEXT:    ; def v[4:6]
4416 ; GFX90A-NEXT:    ;;#ASMEND
4417 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4418 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4419 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4420 ; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]
4421 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4422 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4424 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_u_3_3:
4425 ; GFX940:       ; %bb.0:
4426 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4427 ; GFX940-NEXT:    v_mov_b32_e32 v1, 0
4428 ; GFX940-NEXT:    ;;#ASMSTART
4429 ; GFX940-NEXT:    ; def v[4:6]
4430 ; GFX940-NEXT:    ;;#ASMEND
4431 ; GFX940-NEXT:    s_nop 0
4432 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4433 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4434 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4435 ; GFX940-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1
4436 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4437 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4438   %vec0 = call <3 x float> asm "; def $0", "=v"()
4439   %vec1 = call <3 x float> asm "; def $0", "=v"()
4440   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>
4441   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4442   ret void
4445 define void @v_shuffle_v4f32_v3f32__5_0_3_3(ptr addrspace(1) inreg %ptr) {
4446 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_0_3_3:
4447 ; GFX900:       ; %bb.0:
4448 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4449 ; GFX900-NEXT:    ;;#ASMSTART
4450 ; GFX900-NEXT:    ; def v[1:3]
4451 ; GFX900-NEXT:    ;;#ASMEND
4452 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4453 ; GFX900-NEXT:    ;;#ASMSTART
4454 ; GFX900-NEXT:    ; def v[3:5]
4455 ; GFX900-NEXT:    ;;#ASMEND
4456 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4457 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
4458 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4459 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4460 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4462 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_0_3_3:
4463 ; GFX90A:       ; %bb.0:
4464 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4465 ; GFX90A-NEXT:    ;;#ASMSTART
4466 ; GFX90A-NEXT:    ; def v[2:4]
4467 ; GFX90A-NEXT:    ;;#ASMEND
4468 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4469 ; GFX90A-NEXT:    ;;#ASMSTART
4470 ; GFX90A-NEXT:    ; def v[4:6]
4471 ; GFX90A-NEXT:    ;;#ASMEND
4472 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4473 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
4474 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4475 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4476 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4477 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4478 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4480 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_0_3_3:
4481 ; GFX940:       ; %bb.0:
4482 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4483 ; GFX940-NEXT:    ;;#ASMSTART
4484 ; GFX940-NEXT:    ; def v[2:4]
4485 ; GFX940-NEXT:    ;;#ASMEND
4486 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4487 ; GFX940-NEXT:    ;;#ASMSTART
4488 ; GFX940-NEXT:    ; def v[4:6]
4489 ; GFX940-NEXT:    ;;#ASMEND
4490 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
4491 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4492 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4493 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4494 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4495 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4496 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4497   %vec0 = call <3 x float> asm "; def $0", "=v"()
4498   %vec1 = call <3 x float> asm "; def $0", "=v"()
4499   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 3, i32 3>
4500   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4501   ret void
4504 define void @v_shuffle_v4f32_v3f32__5_1_3_3(ptr addrspace(1) inreg %ptr) {
4505 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_1_3_3:
4506 ; GFX900:       ; %bb.0:
4507 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4508 ; GFX900-NEXT:    ;;#ASMSTART
4509 ; GFX900-NEXT:    ; def v[0:2]
4510 ; GFX900-NEXT:    ;;#ASMEND
4511 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4512 ; GFX900-NEXT:    ;;#ASMSTART
4513 ; GFX900-NEXT:    ; def v[3:5]
4514 ; GFX900-NEXT:    ;;#ASMEND
4515 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4516 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
4517 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4518 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4519 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4521 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_1_3_3:
4522 ; GFX90A:       ; %bb.0:
4523 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4524 ; GFX90A-NEXT:    ;;#ASMSTART
4525 ; GFX90A-NEXT:    ; def v[0:2]
4526 ; GFX90A-NEXT:    ;;#ASMEND
4527 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4528 ; GFX90A-NEXT:    ;;#ASMSTART
4529 ; GFX90A-NEXT:    ; def v[4:6]
4530 ; GFX90A-NEXT:    ;;#ASMEND
4531 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4532 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4533 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4534 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4535 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4536 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4538 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_1_3_3:
4539 ; GFX940:       ; %bb.0:
4540 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4541 ; GFX940-NEXT:    ;;#ASMSTART
4542 ; GFX940-NEXT:    ; def v[0:2]
4543 ; GFX940-NEXT:    ;;#ASMEND
4544 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4545 ; GFX940-NEXT:    ;;#ASMSTART
4546 ; GFX940-NEXT:    ; def v[4:6]
4547 ; GFX940-NEXT:    ;;#ASMEND
4548 ; GFX940-NEXT:    s_nop 0
4549 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4550 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4551 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4552 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4553 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4554 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4555   %vec0 = call <3 x float> asm "; def $0", "=v"()
4556   %vec1 = call <3 x float> asm "; def $0", "=v"()
4557   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 3, i32 3>
4558   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4559   ret void
4562 define void @v_shuffle_v4f32_v3f32__5_2_3_3(ptr addrspace(1) inreg %ptr) {
4563 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_2_3_3:
4564 ; GFX900:       ; %bb.0:
4565 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4566 ; GFX900-NEXT:    ;;#ASMSTART
4567 ; GFX900-NEXT:    ; def v[0:2]
4568 ; GFX900-NEXT:    ;;#ASMEND
4569 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4570 ; GFX900-NEXT:    ;;#ASMSTART
4571 ; GFX900-NEXT:    ; def v[3:5]
4572 ; GFX900-NEXT:    ;;#ASMEND
4573 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4574 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
4575 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
4576 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4577 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4578 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4580 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_2_3_3:
4581 ; GFX90A:       ; %bb.0:
4582 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4583 ; GFX90A-NEXT:    ;;#ASMSTART
4584 ; GFX90A-NEXT:    ; def v[0:2]
4585 ; GFX90A-NEXT:    ;;#ASMEND
4586 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4587 ; GFX90A-NEXT:    ;;#ASMSTART
4588 ; GFX90A-NEXT:    ; def v[4:6]
4589 ; GFX90A-NEXT:    ;;#ASMEND
4590 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4591 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
4592 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4593 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4594 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4595 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4596 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4598 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_2_3_3:
4599 ; GFX940:       ; %bb.0:
4600 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4601 ; GFX940-NEXT:    ;;#ASMSTART
4602 ; GFX940-NEXT:    ; def v[0:2]
4603 ; GFX940-NEXT:    ;;#ASMEND
4604 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4605 ; GFX940-NEXT:    ;;#ASMSTART
4606 ; GFX940-NEXT:    ; def v[4:6]
4607 ; GFX940-NEXT:    ;;#ASMEND
4608 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
4609 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4610 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4611 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4612 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4613 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4614 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4615   %vec0 = call <3 x float> asm "; def $0", "=v"()
4616   %vec1 = call <3 x float> asm "; def $0", "=v"()
4617   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 3, i32 3>
4618   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4619   ret void
4622 define void @v_shuffle_v4f32_v3f32__5_4_3_3(ptr addrspace(1) inreg %ptr) {
4623 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_4_3_3:
4624 ; GFX900:       ; %bb.0:
4625 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4626 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4627 ; GFX900-NEXT:    ;;#ASMSTART
4628 ; GFX900-NEXT:    ; def v[3:5]
4629 ; GFX900-NEXT:    ;;#ASMEND
4630 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4631 ; GFX900-NEXT:    v_mov_b32_e32 v1, v4
4632 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
4633 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4634 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4635 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4637 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_4_3_3:
4638 ; GFX90A:       ; %bb.0:
4639 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4640 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4641 ; GFX90A-NEXT:    ;;#ASMSTART
4642 ; GFX90A-NEXT:    ; def v[4:6]
4643 ; GFX90A-NEXT:    ;;#ASMEND
4644 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4645 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
4646 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4647 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4648 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4649 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4650 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4652 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_4_3_3:
4653 ; GFX940:       ; %bb.0:
4654 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4655 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4656 ; GFX940-NEXT:    ;;#ASMSTART
4657 ; GFX940-NEXT:    ; def v[4:6]
4658 ; GFX940-NEXT:    ;;#ASMEND
4659 ; GFX940-NEXT:    s_nop 0
4660 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4661 ; GFX940-NEXT:    v_mov_b32_e32 v1, v5
4662 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4663 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4664 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4665 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4666 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4667   %vec0 = call <3 x float> asm "; def $0", "=v"()
4668   %vec1 = call <3 x float> asm "; def $0", "=v"()
4669   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 3, i32 3>
4670   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4671   ret void
4674 define void @v_shuffle_v4f32_v3f32__5_5_3_3(ptr addrspace(1) inreg %ptr) {
4675 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_3_3:
4676 ; GFX900:       ; %bb.0:
4677 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4678 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4679 ; GFX900-NEXT:    ;;#ASMSTART
4680 ; GFX900-NEXT:    ; def v[3:5]
4681 ; GFX900-NEXT:    ;;#ASMEND
4682 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4683 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
4684 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
4685 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4686 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4687 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4689 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_3_3:
4690 ; GFX90A:       ; %bb.0:
4691 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4692 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4693 ; GFX90A-NEXT:    ;;#ASMSTART
4694 ; GFX90A-NEXT:    ; def v[4:6]
4695 ; GFX90A-NEXT:    ;;#ASMEND
4696 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4697 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
4698 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
4699 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4700 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4701 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4702 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4704 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_3_3:
4705 ; GFX940:       ; %bb.0:
4706 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4707 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4708 ; GFX940-NEXT:    ;;#ASMSTART
4709 ; GFX940-NEXT:    ; def v[4:6]
4710 ; GFX940-NEXT:    ;;#ASMEND
4711 ; GFX940-NEXT:    s_nop 0
4712 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4713 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
4714 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4715 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4716 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4717 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4718 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4719   %vec0 = call <3 x float> asm "; def $0", "=v"()
4720   %vec1 = call <3 x float> asm "; def $0", "=v"()
4721   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 3>
4722   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4723   ret void
4726 define void @v_shuffle_v4f32_v3f32__5_5_u_3(ptr addrspace(1) inreg %ptr) {
4727 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_u_3:
4728 ; GFX900:       ; %bb.0:
4729 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4730 ; GFX900-NEXT:    ;;#ASMSTART
4731 ; GFX900-NEXT:    ; def v[2:4]
4732 ; GFX900-NEXT:    ;;#ASMEND
4733 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
4734 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
4735 ; GFX900-NEXT:    v_mov_b32_e32 v1, v4
4736 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
4737 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
4738 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4739 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4741 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_u_3:
4742 ; GFX90A:       ; %bb.0:
4743 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4744 ; GFX90A-NEXT:    ;;#ASMSTART
4745 ; GFX90A-NEXT:    ; def v[2:4]
4746 ; GFX90A-NEXT:    ;;#ASMEND
4747 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
4748 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
4749 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
4750 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
4751 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
4752 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4753 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4755 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_u_3:
4756 ; GFX940:       ; %bb.0:
4757 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4758 ; GFX940-NEXT:    ;;#ASMSTART
4759 ; GFX940-NEXT:    ; def v[2:4]
4760 ; GFX940-NEXT:    ;;#ASMEND
4761 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
4762 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
4763 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
4764 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
4765 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
4766 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4767 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4768   %vec0 = call <3 x float> asm "; def $0", "=v"()
4769   %vec1 = call <3 x float> asm "; def $0", "=v"()
4770   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>
4771   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4772   ret void
4775 define void @v_shuffle_v4f32_v3f32__5_5_0_3(ptr addrspace(1) inreg %ptr) {
4776 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_0_3:
4777 ; GFX900:       ; %bb.0:
4778 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4779 ; GFX900-NEXT:    ;;#ASMSTART
4780 ; GFX900-NEXT:    ; def v[2:4]
4781 ; GFX900-NEXT:    ;;#ASMEND
4782 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4783 ; GFX900-NEXT:    ;;#ASMSTART
4784 ; GFX900-NEXT:    ; def v[3:5]
4785 ; GFX900-NEXT:    ;;#ASMEND
4786 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4787 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
4788 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4789 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4790 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4792 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_0_3:
4793 ; GFX90A:       ; %bb.0:
4794 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4795 ; GFX90A-NEXT:    ;;#ASMSTART
4796 ; GFX90A-NEXT:    ; def v[2:4]
4797 ; GFX90A-NEXT:    ;;#ASMEND
4798 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4799 ; GFX90A-NEXT:    ;;#ASMSTART
4800 ; GFX90A-NEXT:    ; def v[4:6]
4801 ; GFX90A-NEXT:    ;;#ASMEND
4802 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4803 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
4804 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4805 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4806 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4807 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4809 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_0_3:
4810 ; GFX940:       ; %bb.0:
4811 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4812 ; GFX940-NEXT:    ;;#ASMSTART
4813 ; GFX940-NEXT:    ; def v[2:4]
4814 ; GFX940-NEXT:    ;;#ASMEND
4815 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4816 ; GFX940-NEXT:    ;;#ASMSTART
4817 ; GFX940-NEXT:    ; def v[4:6]
4818 ; GFX940-NEXT:    ;;#ASMEND
4819 ; GFX940-NEXT:    s_nop 0
4820 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4821 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
4822 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4823 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4824 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4825 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4826   %vec0 = call <3 x float> asm "; def $0", "=v"()
4827   %vec1 = call <3 x float> asm "; def $0", "=v"()
4828   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 3>
4829   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4830   ret void
4833 define void @v_shuffle_v4f32_v3f32__5_5_1_3(ptr addrspace(1) inreg %ptr) {
4834 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_1_3:
4835 ; GFX900:       ; %bb.0:
4836 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4837 ; GFX900-NEXT:    ;;#ASMSTART
4838 ; GFX900-NEXT:    ; def v[1:3]
4839 ; GFX900-NEXT:    ;;#ASMEND
4840 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4841 ; GFX900-NEXT:    ;;#ASMSTART
4842 ; GFX900-NEXT:    ; def v[3:5]
4843 ; GFX900-NEXT:    ;;#ASMEND
4844 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4845 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
4846 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4847 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4848 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4850 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_1_3:
4851 ; GFX90A:       ; %bb.0:
4852 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4853 ; GFX90A-NEXT:    ;;#ASMSTART
4854 ; GFX90A-NEXT:    ; def v[0:2]
4855 ; GFX90A-NEXT:    ;;#ASMEND
4856 ; GFX90A-NEXT:    ;;#ASMSTART
4857 ; GFX90A-NEXT:    ; def v[2:4]
4858 ; GFX90A-NEXT:    ;;#ASMEND
4859 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
4860 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[2:3] op_sel:[1,0]
4861 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
4862 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
4863 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
4864 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4865 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4867 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_1_3:
4868 ; GFX940:       ; %bb.0:
4869 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4870 ; GFX940-NEXT:    ;;#ASMSTART
4871 ; GFX940-NEXT:    ; def v[0:2]
4872 ; GFX940-NEXT:    ;;#ASMEND
4873 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
4874 ; GFX940-NEXT:    ;;#ASMSTART
4875 ; GFX940-NEXT:    ; def v[2:4]
4876 ; GFX940-NEXT:    ;;#ASMEND
4877 ; GFX940-NEXT:    s_nop 0
4878 ; GFX940-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[2:3] op_sel:[1,0]
4879 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
4880 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
4881 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
4882 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4883 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4884   %vec0 = call <3 x float> asm "; def $0", "=v"()
4885   %vec1 = call <3 x float> asm "; def $0", "=v"()
4886   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 3>
4887   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4888   ret void
4891 define void @v_shuffle_v4f32_v3f32__5_5_2_3(ptr addrspace(1) inreg %ptr) {
4892 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_2_3:
4893 ; GFX900:       ; %bb.0:
4894 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4895 ; GFX900-NEXT:    ;;#ASMSTART
4896 ; GFX900-NEXT:    ; def v[0:2]
4897 ; GFX900-NEXT:    ;;#ASMEND
4898 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4899 ; GFX900-NEXT:    ;;#ASMSTART
4900 ; GFX900-NEXT:    ; def v[3:5]
4901 ; GFX900-NEXT:    ;;#ASMEND
4902 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4903 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
4904 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4905 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4906 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4908 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_2_3:
4909 ; GFX90A:       ; %bb.0:
4910 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4911 ; GFX90A-NEXT:    ;;#ASMSTART
4912 ; GFX90A-NEXT:    ; def v[0:2]
4913 ; GFX90A-NEXT:    ;;#ASMEND
4914 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
4915 ; GFX90A-NEXT:    ;;#ASMSTART
4916 ; GFX90A-NEXT:    ; def v[4:6]
4917 ; GFX90A-NEXT:    ;;#ASMEND
4918 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
4919 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
4920 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
4921 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
4922 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4923 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4925 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_2_3:
4926 ; GFX940:       ; %bb.0:
4927 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4928 ; GFX940-NEXT:    ;;#ASMSTART
4929 ; GFX940-NEXT:    ; def v[0:2]
4930 ; GFX940-NEXT:    ;;#ASMEND
4931 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
4932 ; GFX940-NEXT:    ;;#ASMSTART
4933 ; GFX940-NEXT:    ; def v[4:6]
4934 ; GFX940-NEXT:    ;;#ASMEND
4935 ; GFX940-NEXT:    s_nop 0
4936 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
4937 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
4938 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
4939 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
4940 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4941 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4942   %vec0 = call <3 x float> asm "; def $0", "=v"()
4943   %vec1 = call <3 x float> asm "; def $0", "=v"()
4944   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 3>
4945   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4946   ret void
4949 define void @v_shuffle_v4f32_v3f32__5_5_4_3(ptr addrspace(1) inreg %ptr) {
4950 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_4_3:
4951 ; GFX900:       ; %bb.0:
4952 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4953 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
4954 ; GFX900-NEXT:    ;;#ASMSTART
4955 ; GFX900-NEXT:    ; def v[3:5]
4956 ; GFX900-NEXT:    ;;#ASMEND
4957 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
4958 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
4959 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
4960 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
4961 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
4962 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
4964 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_4_3:
4965 ; GFX90A:       ; %bb.0:
4966 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4967 ; GFX90A-NEXT:    ;;#ASMSTART
4968 ; GFX90A-NEXT:    ; def v[2:4]
4969 ; GFX90A-NEXT:    ;;#ASMEND
4970 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
4971 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[2:3] op_sel:[1,0]
4972 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
4973 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
4974 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
4975 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4976 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4978 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_4_3:
4979 ; GFX940:       ; %bb.0:
4980 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4981 ; GFX940-NEXT:    ;;#ASMSTART
4982 ; GFX940-NEXT:    ; def v[2:4]
4983 ; GFX940-NEXT:    ;;#ASMEND
4984 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
4985 ; GFX940-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[2:3] op_sel:[1,0]
4986 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
4987 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
4988 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
4989 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
4990 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
4991   %vec0 = call <3 x float> asm "; def $0", "=v"()
4992   %vec1 = call <3 x float> asm "; def $0", "=v"()
4993   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 3>
4994   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4995   ret void
4998 define void @v_shuffle_v4f32_v3f32__u_4_4_4(ptr addrspace(1) inreg %ptr) {
4999 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__u_4_4_4:
5000 ; GFX900:       ; %bb.0:
5001 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5002 ; GFX900-NEXT:    ;;#ASMSTART
5003 ; GFX900-NEXT:    ; def v[0:2]
5004 ; GFX900-NEXT:    ;;#ASMEND
5005 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5006 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5007 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5008 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5009 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5010 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5012 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__u_4_4_4:
5013 ; GFX90A:       ; %bb.0:
5014 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5015 ; GFX90A-NEXT:    ;;#ASMSTART
5016 ; GFX90A-NEXT:    ; def v[0:2]
5017 ; GFX90A-NEXT:    ;;#ASMEND
5018 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5019 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5020 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5021 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5022 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5023 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5025 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__u_4_4_4:
5026 ; GFX940:       ; %bb.0:
5027 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5028 ; GFX940-NEXT:    ;;#ASMSTART
5029 ; GFX940-NEXT:    ; def v[0:2]
5030 ; GFX940-NEXT:    ;;#ASMEND
5031 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5032 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5033 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5034 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5035 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5036 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5037   %vec0 = call <3 x float> asm "; def $0", "=v"()
5038   %vec1 = call <3 x float> asm "; def $0", "=v"()
5039   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>
5040   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5041   ret void
5044 define void @v_shuffle_v4f32_v3f32__0_4_4_4(ptr addrspace(1) inreg %ptr) {
5045 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__0_4_4_4:
5046 ; GFX900:       ; %bb.0:
5047 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5048 ; GFX900-NEXT:    ;;#ASMSTART
5049 ; GFX900-NEXT:    ; def v[0:2]
5050 ; GFX900-NEXT:    ;;#ASMEND
5051 ; GFX900-NEXT:    ;;#ASMSTART
5052 ; GFX900-NEXT:    ; def v[1:3]
5053 ; GFX900-NEXT:    ;;#ASMEND
5054 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5055 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
5056 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
5057 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5058 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5059 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5061 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__0_4_4_4:
5062 ; GFX90A:       ; %bb.0:
5063 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5064 ; GFX90A-NEXT:    ;;#ASMSTART
5065 ; GFX90A-NEXT:    ; def v[0:2]
5066 ; GFX90A-NEXT:    ;;#ASMEND
5067 ; GFX90A-NEXT:    ;;#ASMSTART
5068 ; GFX90A-NEXT:    ; def v[2:4]
5069 ; GFX90A-NEXT:    ;;#ASMEND
5070 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5071 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
5072 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
5073 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5074 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5075 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5077 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__0_4_4_4:
5078 ; GFX940:       ; %bb.0:
5079 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5080 ; GFX940-NEXT:    ;;#ASMSTART
5081 ; GFX940-NEXT:    ; def v[0:2]
5082 ; GFX940-NEXT:    ;;#ASMEND
5083 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5084 ; GFX940-NEXT:    ;;#ASMSTART
5085 ; GFX940-NEXT:    ; def v[2:4]
5086 ; GFX940-NEXT:    ;;#ASMEND
5087 ; GFX940-NEXT:    s_nop 0
5088 ; GFX940-NEXT:    v_mov_b32_e32 v1, v3
5089 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
5090 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
5091 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5092 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5093   %vec0 = call <3 x float> asm "; def $0", "=v"()
5094   %vec1 = call <3 x float> asm "; def $0", "=v"()
5095   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 0, i32 4, i32 4, i32 4>
5096   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5097   ret void
5100 define void @v_shuffle_v4f32_v3f32__1_4_4_4(ptr addrspace(1) inreg %ptr) {
5101 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__1_4_4_4:
5102 ; GFX900:       ; %bb.0:
5103 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5104 ; GFX900-NEXT:    ;;#ASMSTART
5105 ; GFX900-NEXT:    ; def v[2:4]
5106 ; GFX900-NEXT:    ;;#ASMEND
5107 ; GFX900-NEXT:    ;;#ASMSTART
5108 ; GFX900-NEXT:    ; def v[0:2]
5109 ; GFX900-NEXT:    ;;#ASMEND
5110 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
5111 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
5112 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5113 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5114 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5115 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5116 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5118 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__1_4_4_4:
5119 ; GFX90A:       ; %bb.0:
5120 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5121 ; GFX90A-NEXT:    ;;#ASMSTART
5122 ; GFX90A-NEXT:    ; def v[2:4]
5123 ; GFX90A-NEXT:    ;;#ASMEND
5124 ; GFX90A-NEXT:    ;;#ASMSTART
5125 ; GFX90A-NEXT:    ; def v[0:2]
5126 ; GFX90A-NEXT:    ;;#ASMEND
5127 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5128 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
5129 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5130 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5131 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5132 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5133 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5135 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__1_4_4_4:
5136 ; GFX940:       ; %bb.0:
5137 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5138 ; GFX940-NEXT:    ;;#ASMSTART
5139 ; GFX940-NEXT:    ; def v[2:4]
5140 ; GFX940-NEXT:    ;;#ASMEND
5141 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5142 ; GFX940-NEXT:    ;;#ASMSTART
5143 ; GFX940-NEXT:    ; def v[0:2]
5144 ; GFX940-NEXT:    ;;#ASMEND
5145 ; GFX940-NEXT:    s_nop 0
5146 ; GFX940-NEXT:    v_mov_b32_e32 v0, v3
5147 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5148 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5149 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
5150 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5151 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5152   %vec0 = call <3 x float> asm "; def $0", "=v"()
5153   %vec1 = call <3 x float> asm "; def $0", "=v"()
5154   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 1, i32 4, i32 4, i32 4>
5155   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5156   ret void
5159 define void @v_shuffle_v4f32_v3f32__2_4_4_4(ptr addrspace(1) inreg %ptr) {
5160 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__2_4_4_4:
5161 ; GFX900:       ; %bb.0:
5162 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5163 ; GFX900-NEXT:    ;;#ASMSTART
5164 ; GFX900-NEXT:    ; def v[1:3]
5165 ; GFX900-NEXT:    ;;#ASMEND
5166 ; GFX900-NEXT:    ;;#ASMSTART
5167 ; GFX900-NEXT:    ; def v[0:2]
5168 ; GFX900-NEXT:    ;;#ASMEND
5169 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5170 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
5171 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5172 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5173 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5174 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5175 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5177 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__2_4_4_4:
5178 ; GFX90A:       ; %bb.0:
5179 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5180 ; GFX90A-NEXT:    ;;#ASMSTART
5181 ; GFX90A-NEXT:    ; def v[2:4]
5182 ; GFX90A-NEXT:    ;;#ASMEND
5183 ; GFX90A-NEXT:    ;;#ASMSTART
5184 ; GFX90A-NEXT:    ; def v[0:2]
5185 ; GFX90A-NEXT:    ;;#ASMEND
5186 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5187 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
5188 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5189 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5190 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5191 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5192 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5194 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__2_4_4_4:
5195 ; GFX940:       ; %bb.0:
5196 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5197 ; GFX940-NEXT:    ;;#ASMSTART
5198 ; GFX940-NEXT:    ; def v[2:4]
5199 ; GFX940-NEXT:    ;;#ASMEND
5200 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5201 ; GFX940-NEXT:    ;;#ASMSTART
5202 ; GFX940-NEXT:    ; def v[0:2]
5203 ; GFX940-NEXT:    ;;#ASMEND
5204 ; GFX940-NEXT:    s_nop 0
5205 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
5206 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5207 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5208 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
5209 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5210 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5211   %vec0 = call <3 x float> asm "; def $0", "=v"()
5212   %vec1 = call <3 x float> asm "; def $0", "=v"()
5213   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 2, i32 4, i32 4, i32 4>
5214   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5215   ret void
5218 define void @v_shuffle_v4f32_v3f32__3_4_4_4(ptr addrspace(1) inreg %ptr) {
5219 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__3_4_4_4:
5220 ; GFX900:       ; %bb.0:
5221 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5222 ; GFX900-NEXT:    ;;#ASMSTART
5223 ; GFX900-NEXT:    ; def v[0:2]
5224 ; GFX900-NEXT:    ;;#ASMEND
5225 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5226 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5227 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5228 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5229 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5230 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5232 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__3_4_4_4:
5233 ; GFX90A:       ; %bb.0:
5234 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5235 ; GFX90A-NEXT:    ;;#ASMSTART
5236 ; GFX90A-NEXT:    ; def v[0:2]
5237 ; GFX90A-NEXT:    ;;#ASMEND
5238 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5239 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5240 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5241 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5242 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5243 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5245 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__3_4_4_4:
5246 ; GFX940:       ; %bb.0:
5247 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5248 ; GFX940-NEXT:    ;;#ASMSTART
5249 ; GFX940-NEXT:    ; def v[0:2]
5250 ; GFX940-NEXT:    ;;#ASMEND
5251 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5252 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5253 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5254 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5255 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5256 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5257   %vec0 = call <3 x float> asm "; def $0", "=v"()
5258   %vec1 = call <3 x float> asm "; def $0", "=v"()
5259   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 3, i32 4, i32 4, i32 4>
5260   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5261   ret void
5264 define void @v_shuffle_v4f32_v3f32__4_4_4_4(ptr addrspace(1) inreg %ptr) {
5265 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__4_4_4_4:
5266 ; GFX900:       ; %bb.0:
5267 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5268 ; GFX900-NEXT:    ;;#ASMSTART
5269 ; GFX900-NEXT:    ; def v[0:2]
5270 ; GFX900-NEXT:    ;;#ASMEND
5271 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5272 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
5273 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5274 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5275 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5276 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5277 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5279 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__4_4_4_4:
5280 ; GFX90A:       ; %bb.0:
5281 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5282 ; GFX90A-NEXT:    ;;#ASMSTART
5283 ; GFX90A-NEXT:    ; def v[0:2]
5284 ; GFX90A-NEXT:    ;;#ASMEND
5285 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5286 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
5287 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5288 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5289 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5290 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5291 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5293 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__4_4_4_4:
5294 ; GFX940:       ; %bb.0:
5295 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5296 ; GFX940-NEXT:    ;;#ASMSTART
5297 ; GFX940-NEXT:    ; def v[0:2]
5298 ; GFX940-NEXT:    ;;#ASMEND
5299 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5300 ; GFX940-NEXT:    v_mov_b32_e32 v0, v1
5301 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5302 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5303 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5304 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5305 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5306   %vec0 = call <3 x float> asm "; def $0", "=v"()
5307   %vec1 = call <3 x float> asm "; def $0", "=v"()
5308   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 4, i32 4, i32 4>
5309   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5310   ret void
5313 define void @v_shuffle_v4f32_v3f32__5_4_4_4(ptr addrspace(1) inreg %ptr) {
5314 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_4_4_4:
5315 ; GFX900:       ; %bb.0:
5316 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5317 ; GFX900-NEXT:    ;;#ASMSTART
5318 ; GFX900-NEXT:    ; def v[0:2]
5319 ; GFX900-NEXT:    ;;#ASMEND
5320 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5321 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
5322 ; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5323 ; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5324 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5325 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5326 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5328 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_4_4_4:
5329 ; GFX90A:       ; %bb.0:
5330 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5331 ; GFX90A-NEXT:    ;;#ASMSTART
5332 ; GFX90A-NEXT:    ; def v[0:2]
5333 ; GFX90A-NEXT:    ;;#ASMEND
5334 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5335 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
5336 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5337 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5338 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5339 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5340 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5342 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_4_4_4:
5343 ; GFX940:       ; %bb.0:
5344 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5345 ; GFX940-NEXT:    ;;#ASMSTART
5346 ; GFX940-NEXT:    ; def v[0:2]
5347 ; GFX940-NEXT:    ;;#ASMEND
5348 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5349 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
5350 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5351 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5352 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5353 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5354 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5355   %vec0 = call <3 x float> asm "; def $0", "=v"()
5356   %vec1 = call <3 x float> asm "; def $0", "=v"()
5357   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>
5358   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5359   ret void
5362 define void @v_shuffle_v4f32_v3f32__5_u_4_4(ptr addrspace(1) inreg %ptr) {
5363 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_u_4_4:
5364 ; GFX900:       ; %bb.0:
5365 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5366 ; GFX900-NEXT:    ;;#ASMSTART
5367 ; GFX900-NEXT:    ; def v[1:3]
5368 ; GFX900-NEXT:    ;;#ASMEND
5369 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5370 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
5371 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
5372 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5373 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5374 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5376 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_u_4_4:
5377 ; GFX90A:       ; %bb.0:
5378 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5379 ; GFX90A-NEXT:    ;;#ASMSTART
5380 ; GFX90A-NEXT:    ; def v[0:2]
5381 ; GFX90A-NEXT:    ;;#ASMEND
5382 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5383 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
5384 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5385 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
5386 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5387 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5388 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5390 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_u_4_4:
5391 ; GFX940:       ; %bb.0:
5392 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5393 ; GFX940-NEXT:    ;;#ASMSTART
5394 ; GFX940-NEXT:    ; def v[0:2]
5395 ; GFX940-NEXT:    ;;#ASMEND
5396 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5397 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
5398 ; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5399 ; GFX940-NEXT:    v_mov_b32_e32 v3, v1
5400 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5401 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5402 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5403   %vec0 = call <3 x float> asm "; def $0", "=v"()
5404   %vec1 = call <3 x float> asm "; def $0", "=v"()
5405   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>
5406   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5407   ret void
5410 define void @v_shuffle_v4f32_v3f32__5_0_4_4(ptr addrspace(1) inreg %ptr) {
5411 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_0_4_4:
5412 ; GFX900:       ; %bb.0:
5413 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5414 ; GFX900-NEXT:    ;;#ASMSTART
5415 ; GFX900-NEXT:    ; def v[1:3]
5416 ; GFX900-NEXT:    ;;#ASMEND
5417 ; GFX900-NEXT:    ;;#ASMSTART
5418 ; GFX900-NEXT:    ; def v[2:4]
5419 ; GFX900-NEXT:    ;;#ASMEND
5420 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
5421 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
5422 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
5423 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5424 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5425 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5427 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_0_4_4:
5428 ; GFX90A:       ; %bb.0:
5429 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5430 ; GFX90A-NEXT:    ;;#ASMSTART
5431 ; GFX90A-NEXT:    ; def v[2:4]
5432 ; GFX90A-NEXT:    ;;#ASMEND
5433 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
5434 ; GFX90A-NEXT:    ;;#ASMSTART
5435 ; GFX90A-NEXT:    ; def v[4:6]
5436 ; GFX90A-NEXT:    ;;#ASMEND
5437 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
5438 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
5439 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
5440 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
5441 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
5442 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5443 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5445 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_0_4_4:
5446 ; GFX940:       ; %bb.0:
5447 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5448 ; GFX940-NEXT:    ;;#ASMSTART
5449 ; GFX940-NEXT:    ; def v[2:4]
5450 ; GFX940-NEXT:    ;;#ASMEND
5451 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
5452 ; GFX940-NEXT:    ;;#ASMSTART
5453 ; GFX940-NEXT:    ; def v[4:6]
5454 ; GFX940-NEXT:    ;;#ASMEND
5455 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
5456 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
5457 ; GFX940-NEXT:    v_mov_b32_e32 v2, v5
5458 ; GFX940-NEXT:    v_mov_b32_e32 v3, v5
5459 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
5460 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5461 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5462   %vec0 = call <3 x float> asm "; def $0", "=v"()
5463   %vec1 = call <3 x float> asm "; def $0", "=v"()
5464   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 4, i32 4>
5465   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5466   ret void
5469 define void @v_shuffle_v4f32_v3f32__5_1_4_4(ptr addrspace(1) inreg %ptr) {
5470 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_1_4_4:
5471 ; GFX900:       ; %bb.0:
5472 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5473 ; GFX900-NEXT:    ;;#ASMSTART
5474 ; GFX900-NEXT:    ; def v[0:2]
5475 ; GFX900-NEXT:    ;;#ASMEND
5476 ; GFX900-NEXT:    ;;#ASMSTART
5477 ; GFX900-NEXT:    ; def v[2:4]
5478 ; GFX900-NEXT:    ;;#ASMEND
5479 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
5480 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
5481 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
5482 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5483 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5484 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5486 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_1_4_4:
5487 ; GFX90A:       ; %bb.0:
5488 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5489 ; GFX90A-NEXT:    ;;#ASMSTART
5490 ; GFX90A-NEXT:    ; def v[0:2]
5491 ; GFX90A-NEXT:    ;;#ASMEND
5492 ; GFX90A-NEXT:    ;;#ASMSTART
5493 ; GFX90A-NEXT:    ; def v[2:4]
5494 ; GFX90A-NEXT:    ;;#ASMEND
5495 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5496 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
5497 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
5498 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5499 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5500 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5502 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_1_4_4:
5503 ; GFX940:       ; %bb.0:
5504 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5505 ; GFX940-NEXT:    ;;#ASMSTART
5506 ; GFX940-NEXT:    ; def v[0:2]
5507 ; GFX940-NEXT:    ;;#ASMEND
5508 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5509 ; GFX940-NEXT:    ;;#ASMSTART
5510 ; GFX940-NEXT:    ; def v[2:4]
5511 ; GFX940-NEXT:    ;;#ASMEND
5512 ; GFX940-NEXT:    s_nop 0
5513 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
5514 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
5515 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
5516 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5517 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5518   %vec0 = call <3 x float> asm "; def $0", "=v"()
5519   %vec1 = call <3 x float> asm "; def $0", "=v"()
5520   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 4, i32 4>
5521   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5522   ret void
5525 define void @v_shuffle_v4f32_v3f32__5_2_4_4(ptr addrspace(1) inreg %ptr) {
5526 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_2_4_4:
5527 ; GFX900:       ; %bb.0:
5528 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5529 ; GFX900-NEXT:    ;;#ASMSTART
5530 ; GFX900-NEXT:    ; def v[2:4]
5531 ; GFX900-NEXT:    ;;#ASMEND
5532 ; GFX900-NEXT:    ;;#ASMSTART
5533 ; GFX900-NEXT:    ; def v[1:3]
5534 ; GFX900-NEXT:    ;;#ASMEND
5535 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
5536 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
5537 ; GFX900-NEXT:    v_mov_b32_e32 v1, v4
5538 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
5539 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5540 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5541 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5543 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_2_4_4:
5544 ; GFX90A:       ; %bb.0:
5545 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5546 ; GFX90A-NEXT:    ;;#ASMSTART
5547 ; GFX90A-NEXT:    ; def v[0:2]
5548 ; GFX90A-NEXT:    ;;#ASMEND
5549 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
5550 ; GFX90A-NEXT:    ;;#ASMSTART
5551 ; GFX90A-NEXT:    ; def v[4:6]
5552 ; GFX90A-NEXT:    ;;#ASMEND
5553 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
5554 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
5555 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
5556 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
5557 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
5558 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5559 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5561 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_2_4_4:
5562 ; GFX940:       ; %bb.0:
5563 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5564 ; GFX940-NEXT:    ;;#ASMSTART
5565 ; GFX940-NEXT:    ; def v[0:2]
5566 ; GFX940-NEXT:    ;;#ASMEND
5567 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
5568 ; GFX940-NEXT:    ;;#ASMSTART
5569 ; GFX940-NEXT:    ; def v[4:6]
5570 ; GFX940-NEXT:    ;;#ASMEND
5571 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
5572 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
5573 ; GFX940-NEXT:    v_mov_b32_e32 v2, v5
5574 ; GFX940-NEXT:    v_mov_b32_e32 v3, v5
5575 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
5576 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5577 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5578   %vec0 = call <3 x float> asm "; def $0", "=v"()
5579   %vec1 = call <3 x float> asm "; def $0", "=v"()
5580   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 4, i32 4>
5581   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5582   ret void
5585 define void @v_shuffle_v4f32_v3f32__5_3_4_4(ptr addrspace(1) inreg %ptr) {
5586 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_3_4_4:
5587 ; GFX900:       ; %bb.0:
5588 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5589 ; GFX900-NEXT:    ;;#ASMSTART
5590 ; GFX900-NEXT:    ; def v[1:3]
5591 ; GFX900-NEXT:    ;;#ASMEND
5592 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5593 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
5594 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
5595 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5596 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5597 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5599 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_3_4_4:
5600 ; GFX90A:       ; %bb.0:
5601 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5602 ; GFX90A-NEXT:    ;;#ASMSTART
5603 ; GFX90A-NEXT:    ; def v[2:4]
5604 ; GFX90A-NEXT:    ;;#ASMEND
5605 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5606 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
5607 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
5608 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
5609 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5610 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5611 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5613 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_3_4_4:
5614 ; GFX940:       ; %bb.0:
5615 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5616 ; GFX940-NEXT:    ;;#ASMSTART
5617 ; GFX940-NEXT:    ; def v[2:4]
5618 ; GFX940-NEXT:    ;;#ASMEND
5619 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5620 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
5621 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
5622 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
5623 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
5624 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5625 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5626   %vec0 = call <3 x float> asm "; def $0", "=v"()
5627   %vec1 = call <3 x float> asm "; def $0", "=v"()
5628   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 4, i32 4>
5629   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5630   ret void
5633 define void @v_shuffle_v4f32_v3f32__5_5_4_4(ptr addrspace(1) inreg %ptr) {
5634 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_4_4:
5635 ; GFX900:       ; %bb.0:
5636 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5637 ; GFX900-NEXT:    ;;#ASMSTART
5638 ; GFX900-NEXT:    ; def v[1:3]
5639 ; GFX900-NEXT:    ;;#ASMEND
5640 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5641 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
5642 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
5643 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
5644 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5645 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5646 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5648 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_4_4:
5649 ; GFX90A:       ; %bb.0:
5650 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5651 ; GFX90A-NEXT:    ;;#ASMSTART
5652 ; GFX90A-NEXT:    ; def v[2:4]
5653 ; GFX90A-NEXT:    ;;#ASMEND
5654 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5655 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
5656 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
5657 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
5658 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5659 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5660 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5662 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_4_4:
5663 ; GFX940:       ; %bb.0:
5664 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5665 ; GFX940-NEXT:    ;;#ASMSTART
5666 ; GFX940-NEXT:    ; def v[2:4]
5667 ; GFX940-NEXT:    ;;#ASMEND
5668 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5669 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
5670 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
5671 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
5672 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
5673 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5674 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5675   %vec0 = call <3 x float> asm "; def $0", "=v"()
5676   %vec1 = call <3 x float> asm "; def $0", "=v"()
5677   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 4>
5678   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5679   ret void
5682 define void @v_shuffle_v4f32_v3f32__5_5_u_4(ptr addrspace(1) inreg %ptr) {
5683 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_u_4:
5684 ; GFX900:       ; %bb.0:
5685 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5686 ; GFX900-NEXT:    ;;#ASMSTART
5687 ; GFX900-NEXT:    ; def v[1:3]
5688 ; GFX900-NEXT:    ;;#ASMEND
5689 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5690 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
5691 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
5692 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
5693 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5694 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5695 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5697 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_u_4:
5698 ; GFX90A:       ; %bb.0:
5699 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5700 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5701 ; GFX90A-NEXT:    ;;#ASMSTART
5702 ; GFX90A-NEXT:    ; def v[2:4]
5703 ; GFX90A-NEXT:    ;;#ASMEND
5704 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
5705 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
5706 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5707 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5708 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5710 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_u_4:
5711 ; GFX940:       ; %bb.0:
5712 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5713 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5714 ; GFX940-NEXT:    ;;#ASMSTART
5715 ; GFX940-NEXT:    ; def v[2:4]
5716 ; GFX940-NEXT:    ;;#ASMEND
5717 ; GFX940-NEXT:    s_nop 0
5718 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
5719 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
5720 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
5721 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5722 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5723   %vec0 = call <3 x float> asm "; def $0", "=v"()
5724   %vec1 = call <3 x float> asm "; def $0", "=v"()
5725   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>
5726   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5727   ret void
5730 define void @v_shuffle_v4f32_v3f32__5_5_0_4(ptr addrspace(1) inreg %ptr) {
5731 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_0_4:
5732 ; GFX900:       ; %bb.0:
5733 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5734 ; GFX900-NEXT:    ;;#ASMSTART
5735 ; GFX900-NEXT:    ; def v[2:4]
5736 ; GFX900-NEXT:    ;;#ASMEND
5737 ; GFX900-NEXT:    ;;#ASMSTART
5738 ; GFX900-NEXT:    ; def v[3:5]
5739 ; GFX900-NEXT:    ;;#ASMEND
5740 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
5741 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
5742 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
5743 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
5744 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
5745 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5746 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5748 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_0_4:
5749 ; GFX90A:       ; %bb.0:
5750 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5751 ; GFX90A-NEXT:    ;;#ASMSTART
5752 ; GFX90A-NEXT:    ; def v[2:4]
5753 ; GFX90A-NEXT:    ;;#ASMEND
5754 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
5755 ; GFX90A-NEXT:    ;;#ASMSTART
5756 ; GFX90A-NEXT:    ; def v[4:6]
5757 ; GFX90A-NEXT:    ;;#ASMEND
5758 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
5759 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
5760 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
5761 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
5762 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5763 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5765 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_0_4:
5766 ; GFX940:       ; %bb.0:
5767 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5768 ; GFX940-NEXT:    ;;#ASMSTART
5769 ; GFX940-NEXT:    ; def v[2:4]
5770 ; GFX940-NEXT:    ;;#ASMEND
5771 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
5772 ; GFX940-NEXT:    ;;#ASMSTART
5773 ; GFX940-NEXT:    ; def v[4:6]
5774 ; GFX940-NEXT:    ;;#ASMEND
5775 ; GFX940-NEXT:    s_nop 0
5776 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
5777 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
5778 ; GFX940-NEXT:    v_mov_b32_e32 v3, v5
5779 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
5780 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5781 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5782   %vec0 = call <3 x float> asm "; def $0", "=v"()
5783   %vec1 = call <3 x float> asm "; def $0", "=v"()
5784   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 4>
5785   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5786   ret void
5789 define void @v_shuffle_v4f32_v3f32__5_5_1_4(ptr addrspace(1) inreg %ptr) {
5790 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_1_4:
5791 ; GFX900:       ; %bb.0:
5792 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5793 ; GFX900-NEXT:    ;;#ASMSTART
5794 ; GFX900-NEXT:    ; def v[1:3]
5795 ; GFX900-NEXT:    ;;#ASMEND
5796 ; GFX900-NEXT:    ;;#ASMSTART
5797 ; GFX900-NEXT:    ; def v[3:5]
5798 ; GFX900-NEXT:    ;;#ASMEND
5799 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
5800 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
5801 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
5802 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
5803 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
5804 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5805 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5807 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_1_4:
5808 ; GFX90A:       ; %bb.0:
5809 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5810 ; GFX90A-NEXT:    ;;#ASMSTART
5811 ; GFX90A-NEXT:    ; def v[2:4]
5812 ; GFX90A-NEXT:    ;;#ASMEND
5813 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
5814 ; GFX90A-NEXT:    ;;#ASMSTART
5815 ; GFX90A-NEXT:    ; def v[4:6]
5816 ; GFX90A-NEXT:    ;;#ASMEND
5817 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
5818 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
5819 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
5820 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
5821 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
5822 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5823 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5825 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_1_4:
5826 ; GFX940:       ; %bb.0:
5827 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5828 ; GFX940-NEXT:    ;;#ASMSTART
5829 ; GFX940-NEXT:    ; def v[2:4]
5830 ; GFX940-NEXT:    ;;#ASMEND
5831 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
5832 ; GFX940-NEXT:    ;;#ASMSTART
5833 ; GFX940-NEXT:    ; def v[4:6]
5834 ; GFX940-NEXT:    ;;#ASMEND
5835 ; GFX940-NEXT:    v_mov_b32_e32 v2, v3
5836 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
5837 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
5838 ; GFX940-NEXT:    v_mov_b32_e32 v3, v5
5839 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
5840 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5841 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5842   %vec0 = call <3 x float> asm "; def $0", "=v"()
5843   %vec1 = call <3 x float> asm "; def $0", "=v"()
5844   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 4>
5845   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5846   ret void
5849 define void @v_shuffle_v4f32_v3f32__5_5_2_4(ptr addrspace(1) inreg %ptr) {
5850 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_2_4:
5851 ; GFX900:       ; %bb.0:
5852 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5853 ; GFX900-NEXT:    ;;#ASMSTART
5854 ; GFX900-NEXT:    ; def v[0:2]
5855 ; GFX900-NEXT:    ;;#ASMEND
5856 ; GFX900-NEXT:    ;;#ASMSTART
5857 ; GFX900-NEXT:    ; def v[3:5]
5858 ; GFX900-NEXT:    ;;#ASMEND
5859 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
5860 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
5861 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
5862 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
5863 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
5864 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5865 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5867 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_2_4:
5868 ; GFX90A:       ; %bb.0:
5869 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5870 ; GFX90A-NEXT:    ;;#ASMSTART
5871 ; GFX90A-NEXT:    ; def v[0:2]
5872 ; GFX90A-NEXT:    ;;#ASMEND
5873 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
5874 ; GFX90A-NEXT:    ;;#ASMSTART
5875 ; GFX90A-NEXT:    ; def v[4:6]
5876 ; GFX90A-NEXT:    ;;#ASMEND
5877 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
5878 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
5879 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
5880 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
5881 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5882 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5884 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_2_4:
5885 ; GFX940:       ; %bb.0:
5886 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5887 ; GFX940-NEXT:    ;;#ASMSTART
5888 ; GFX940-NEXT:    ; def v[0:2]
5889 ; GFX940-NEXT:    ;;#ASMEND
5890 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
5891 ; GFX940-NEXT:    ;;#ASMSTART
5892 ; GFX940-NEXT:    ; def v[4:6]
5893 ; GFX940-NEXT:    ;;#ASMEND
5894 ; GFX940-NEXT:    s_nop 0
5895 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
5896 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
5897 ; GFX940-NEXT:    v_mov_b32_e32 v3, v5
5898 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
5899 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5900 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5901   %vec0 = call <3 x float> asm "; def $0", "=v"()
5902   %vec1 = call <3 x float> asm "; def $0", "=v"()
5903   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 4>
5904   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5905   ret void
5908 define void @v_shuffle_v4f32_v3f32__5_5_3_4(ptr addrspace(1) inreg %ptr) {
5909 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_3_4:
5910 ; GFX900:       ; %bb.0:
5911 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5912 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
5913 ; GFX900-NEXT:    ;;#ASMSTART
5914 ; GFX900-NEXT:    ; def v[2:4]
5915 ; GFX900-NEXT:    ;;#ASMEND
5916 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
5917 ; GFX900-NEXT:    v_mov_b32_e32 v1, v4
5918 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5919 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5920 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5922 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_3_4:
5923 ; GFX90A:       ; %bb.0:
5924 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5925 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5926 ; GFX90A-NEXT:    ;;#ASMSTART
5927 ; GFX90A-NEXT:    ; def v[2:4]
5928 ; GFX90A-NEXT:    ;;#ASMEND
5929 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
5930 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
5931 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5932 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5933 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5935 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_3_4:
5936 ; GFX940:       ; %bb.0:
5937 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5938 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5939 ; GFX940-NEXT:    ;;#ASMSTART
5940 ; GFX940-NEXT:    ; def v[2:4]
5941 ; GFX940-NEXT:    ;;#ASMEND
5942 ; GFX940-NEXT:    s_nop 0
5943 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
5944 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
5945 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
5946 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5947 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5948   %vec0 = call <3 x float> asm "; def $0", "=v"()
5949   %vec1 = call <3 x float> asm "; def $0", "=v"()
5950   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 4>
5951   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5952   ret void
5955 define void @v_shuffle_v4f32_v3f32__u_5_5_5(ptr addrspace(1) inreg %ptr) {
5956 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__u_5_5_5:
5957 ; GFX900:       ; %bb.0:
5958 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5959 ; GFX900-NEXT:    ;;#ASMSTART
5960 ; GFX900-NEXT:    ; def v[0:2]
5961 ; GFX900-NEXT:    ;;#ASMEND
5962 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5963 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
5964 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
5965 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5966 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
5967 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
5969 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__u_5_5_5:
5970 ; GFX90A:       ; %bb.0:
5971 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5972 ; GFX90A-NEXT:    ;;#ASMSTART
5973 ; GFX90A-NEXT:    ; def v[0:2]
5974 ; GFX90A-NEXT:    ;;#ASMEND
5975 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5976 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
5977 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
5978 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5979 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5980 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5982 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__u_5_5_5:
5983 ; GFX940:       ; %bb.0:
5984 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5985 ; GFX940-NEXT:    ;;#ASMSTART
5986 ; GFX940-NEXT:    ; def v[0:2]
5987 ; GFX940-NEXT:    ;;#ASMEND
5988 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5989 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
5990 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
5991 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5992 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
5993 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
5994   %vec0 = call <3 x float> asm "; def $0", "=v"()
5995   %vec1 = call <3 x float> asm "; def $0", "=v"()
5996   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>
5997   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5998   ret void
6001 define void @v_shuffle_v4f32_v3f32__0_5_5_5(ptr addrspace(1) inreg %ptr) {
6002 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__0_5_5_5:
6003 ; GFX900:       ; %bb.0:
6004 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6005 ; GFX900-NEXT:    ;;#ASMSTART
6006 ; GFX900-NEXT:    ; def v[0:2]
6007 ; GFX900-NEXT:    ;;#ASMEND
6008 ; GFX900-NEXT:    ;;#ASMSTART
6009 ; GFX900-NEXT:    ; def v[1:3]
6010 ; GFX900-NEXT:    ;;#ASMEND
6011 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6012 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
6013 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
6014 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6015 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6016 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6018 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__0_5_5_5:
6019 ; GFX90A:       ; %bb.0:
6020 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6021 ; GFX90A-NEXT:    ;;#ASMSTART
6022 ; GFX90A-NEXT:    ; def v[0:2]
6023 ; GFX90A-NEXT:    ;;#ASMEND
6024 ; GFX90A-NEXT:    ;;#ASMSTART
6025 ; GFX90A-NEXT:    ; def v[2:4]
6026 ; GFX90A-NEXT:    ;;#ASMEND
6027 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6028 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
6029 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
6030 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
6031 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6032 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6033 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6035 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__0_5_5_5:
6036 ; GFX940:       ; %bb.0:
6037 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6038 ; GFX940-NEXT:    ;;#ASMSTART
6039 ; GFX940-NEXT:    ; def v[0:2]
6040 ; GFX940-NEXT:    ;;#ASMEND
6041 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6042 ; GFX940-NEXT:    ;;#ASMSTART
6043 ; GFX940-NEXT:    ; def v[2:4]
6044 ; GFX940-NEXT:    ;;#ASMEND
6045 ; GFX940-NEXT:    s_nop 0
6046 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
6047 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
6048 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
6049 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6050 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6051 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6052   %vec0 = call <3 x float> asm "; def $0", "=v"()
6053   %vec1 = call <3 x float> asm "; def $0", "=v"()
6054   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>
6055   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6056   ret void
6059 define void @v_shuffle_v4f32_v3f32__1_5_5_5(ptr addrspace(1) inreg %ptr) {
6060 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__1_5_5_5:
6061 ; GFX900:       ; %bb.0:
6062 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6063 ; GFX900-NEXT:    ;;#ASMSTART
6064 ; GFX900-NEXT:    ; def v[2:4]
6065 ; GFX900-NEXT:    ;;#ASMEND
6066 ; GFX900-NEXT:    ;;#ASMSTART
6067 ; GFX900-NEXT:    ; def v[0:2]
6068 ; GFX900-NEXT:    ;;#ASMEND
6069 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
6070 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
6071 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
6072 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
6073 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6074 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6075 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6077 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__1_5_5_5:
6078 ; GFX90A:       ; %bb.0:
6079 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6080 ; GFX90A-NEXT:    ;;#ASMSTART
6081 ; GFX90A-NEXT:    ; def v[2:4]
6082 ; GFX90A-NEXT:    ;;#ASMEND
6083 ; GFX90A-NEXT:    ;;#ASMSTART
6084 ; GFX90A-NEXT:    ; def v[0:2]
6085 ; GFX90A-NEXT:    ;;#ASMEND
6086 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
6087 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6088 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
6089 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6090 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6091 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6092 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6094 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__1_5_5_5:
6095 ; GFX940:       ; %bb.0:
6096 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6097 ; GFX940-NEXT:    ;;#ASMSTART
6098 ; GFX940-NEXT:    ; def v[2:4]
6099 ; GFX940-NEXT:    ;;#ASMEND
6100 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6101 ; GFX940-NEXT:    ;;#ASMSTART
6102 ; GFX940-NEXT:    ; def v[0:2]
6103 ; GFX940-NEXT:    ;;#ASMEND
6104 ; GFX940-NEXT:    s_nop 0
6105 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
6106 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
6107 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6108 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6109 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6110 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6111   %vec0 = call <3 x float> asm "; def $0", "=v"()
6112   %vec1 = call <3 x float> asm "; def $0", "=v"()
6113   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>
6114   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6115   ret void
6118 define void @v_shuffle_v4f32_v3f32__2_5_5_5(ptr addrspace(1) inreg %ptr) {
6119 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__2_5_5_5:
6120 ; GFX900:       ; %bb.0:
6121 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6122 ; GFX900-NEXT:    ;;#ASMSTART
6123 ; GFX900-NEXT:    ; def v[1:3]
6124 ; GFX900-NEXT:    ;;#ASMEND
6125 ; GFX900-NEXT:    ;;#ASMSTART
6126 ; GFX900-NEXT:    ; def v[0:2]
6127 ; GFX900-NEXT:    ;;#ASMEND
6128 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6129 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
6130 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
6131 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
6132 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6133 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6134 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6136 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__2_5_5_5:
6137 ; GFX90A:       ; %bb.0:
6138 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6139 ; GFX90A-NEXT:    ;;#ASMSTART
6140 ; GFX90A-NEXT:    ; def v[2:4]
6141 ; GFX90A-NEXT:    ;;#ASMEND
6142 ; GFX90A-NEXT:    ;;#ASMSTART
6143 ; GFX90A-NEXT:    ; def v[0:2]
6144 ; GFX90A-NEXT:    ;;#ASMEND
6145 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6146 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
6147 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
6148 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6149 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6150 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6151 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6153 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__2_5_5_5:
6154 ; GFX940:       ; %bb.0:
6155 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6156 ; GFX940-NEXT:    ;;#ASMSTART
6157 ; GFX940-NEXT:    ; def v[2:4]
6158 ; GFX940-NEXT:    ;;#ASMEND
6159 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6160 ; GFX940-NEXT:    ;;#ASMSTART
6161 ; GFX940-NEXT:    ; def v[0:2]
6162 ; GFX940-NEXT:    ;;#ASMEND
6163 ; GFX940-NEXT:    s_nop 0
6164 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
6165 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
6166 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6167 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6168 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6169 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6170   %vec0 = call <3 x float> asm "; def $0", "=v"()
6171   %vec1 = call <3 x float> asm "; def $0", "=v"()
6172   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>
6173   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6174   ret void
6177 define void @v_shuffle_v4f32_v3f32__3_5_5_5(ptr addrspace(1) inreg %ptr) {
6178 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__3_5_5_5:
6179 ; GFX900:       ; %bb.0:
6180 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6181 ; GFX900-NEXT:    ;;#ASMSTART
6182 ; GFX900-NEXT:    ; def v[0:2]
6183 ; GFX900-NEXT:    ;;#ASMEND
6184 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6185 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
6186 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
6187 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6188 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6189 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6191 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__3_5_5_5:
6192 ; GFX90A:       ; %bb.0:
6193 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6194 ; GFX90A-NEXT:    ;;#ASMSTART
6195 ; GFX90A-NEXT:    ; def v[0:2]
6196 ; GFX90A-NEXT:    ;;#ASMEND
6197 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6198 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
6199 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6200 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6201 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6202 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6204 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__3_5_5_5:
6205 ; GFX940:       ; %bb.0:
6206 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6207 ; GFX940-NEXT:    ;;#ASMSTART
6208 ; GFX940-NEXT:    ; def v[0:2]
6209 ; GFX940-NEXT:    ;;#ASMEND
6210 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6211 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
6212 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6213 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6214 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6215 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6216   %vec0 = call <3 x float> asm "; def $0", "=v"()
6217   %vec1 = call <3 x float> asm "; def $0", "=v"()
6218   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>
6219   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6220   ret void
6223 define void @v_shuffle_v4f32_v3f32__4_5_5_5(ptr addrspace(1) inreg %ptr) {
6224 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__4_5_5_5:
6225 ; GFX900:       ; %bb.0:
6226 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6227 ; GFX900-NEXT:    ;;#ASMSTART
6228 ; GFX900-NEXT:    ; def v[0:2]
6229 ; GFX900-NEXT:    ;;#ASMEND
6230 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6231 ; GFX900-NEXT:    v_mov_b32_e32 v0, v1
6232 ; GFX900-NEXT:    v_mov_b32_e32 v1, v2
6233 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
6234 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6235 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6236 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6238 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__4_5_5_5:
6239 ; GFX90A:       ; %bb.0:
6240 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6241 ; GFX90A-NEXT:    ;;#ASMSTART
6242 ; GFX90A-NEXT:    ; def v[0:2]
6243 ; GFX90A-NEXT:    ;;#ASMEND
6244 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
6245 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6246 ; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
6247 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6248 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6249 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6250 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6252 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__4_5_5_5:
6253 ; GFX940:       ; %bb.0:
6254 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6255 ; GFX940-NEXT:    ;;#ASMSTART
6256 ; GFX940-NEXT:    ; def v[0:2]
6257 ; GFX940-NEXT:    ;;#ASMEND
6258 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6259 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
6260 ; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
6261 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6262 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6263 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6264 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6265   %vec0 = call <3 x float> asm "; def $0", "=v"()
6266   %vec1 = call <3 x float> asm "; def $0", "=v"()
6267   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>
6268   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6269   ret void
6272 define void @v_shuffle_v4f32_v3f32__5_u_5_5(ptr addrspace(1) inreg %ptr) {
6273 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_u_5_5:
6274 ; GFX900:       ; %bb.0:
6275 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6276 ; GFX900-NEXT:    ;;#ASMSTART
6277 ; GFX900-NEXT:    ; def v[0:2]
6278 ; GFX900-NEXT:    ;;#ASMEND
6279 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6280 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
6281 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
6282 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6283 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6284 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6286 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_u_5_5:
6287 ; GFX90A:       ; %bb.0:
6288 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6289 ; GFX90A-NEXT:    ;;#ASMSTART
6290 ; GFX90A-NEXT:    ; def v[0:2]
6291 ; GFX90A-NEXT:    ;;#ASMEND
6292 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6293 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
6294 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6295 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6296 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6297 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6299 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_u_5_5:
6300 ; GFX940:       ; %bb.0:
6301 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6302 ; GFX940-NEXT:    ;;#ASMSTART
6303 ; GFX940-NEXT:    ; def v[0:2]
6304 ; GFX940-NEXT:    ;;#ASMEND
6305 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6306 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
6307 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6308 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6309 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6310 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6311   %vec0 = call <3 x float> asm "; def $0", "=v"()
6312   %vec1 = call <3 x float> asm "; def $0", "=v"()
6313   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>
6314   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6315   ret void
6318 define void @v_shuffle_v4f32_v3f32__5_0_5_5(ptr addrspace(1) inreg %ptr) {
6319 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_0_5_5:
6320 ; GFX900:       ; %bb.0:
6321 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6322 ; GFX900-NEXT:    ;;#ASMSTART
6323 ; GFX900-NEXT:    ; def v[1:3]
6324 ; GFX900-NEXT:    ;;#ASMEND
6325 ; GFX900-NEXT:    ;;#ASMSTART
6326 ; GFX900-NEXT:    ; def v[2:4]
6327 ; GFX900-NEXT:    ;;#ASMEND
6328 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
6329 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
6330 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
6331 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
6332 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6333 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6334 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6336 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_0_5_5:
6337 ; GFX90A:       ; %bb.0:
6338 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6339 ; GFX90A-NEXT:    ;;#ASMSTART
6340 ; GFX90A-NEXT:    ; def v[0:2]
6341 ; GFX90A-NEXT:    ;;#ASMEND
6342 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
6343 ; GFX90A-NEXT:    ;;#ASMSTART
6344 ; GFX90A-NEXT:    ; def v[4:6]
6345 ; GFX90A-NEXT:    ;;#ASMEND
6346 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
6347 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
6348 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6349 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
6350 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6351 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6353 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_0_5_5:
6354 ; GFX940:       ; %bb.0:
6355 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6356 ; GFX940-NEXT:    ;;#ASMSTART
6357 ; GFX940-NEXT:    ; def v[0:2]
6358 ; GFX940-NEXT:    ;;#ASMEND
6359 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
6360 ; GFX940-NEXT:    ;;#ASMSTART
6361 ; GFX940-NEXT:    ; def v[4:6]
6362 ; GFX940-NEXT:    ;;#ASMEND
6363 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
6364 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
6365 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6366 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
6367 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6368 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6369   %vec0 = call <3 x float> asm "; def $0", "=v"()
6370   %vec1 = call <3 x float> asm "; def $0", "=v"()
6371   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 5, i32 5>
6372   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6373   ret void
6376 define void @v_shuffle_v4f32_v3f32__5_1_5_5(ptr addrspace(1) inreg %ptr) {
6377 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_1_5_5:
6378 ; GFX900:       ; %bb.0:
6379 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6380 ; GFX900-NEXT:    ;;#ASMSTART
6381 ; GFX900-NEXT:    ; def v[0:2]
6382 ; GFX900-NEXT:    ;;#ASMEND
6383 ; GFX900-NEXT:    ;;#ASMSTART
6384 ; GFX900-NEXT:    ; def v[2:4]
6385 ; GFX900-NEXT:    ;;#ASMEND
6386 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
6387 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
6388 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
6389 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
6390 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6391 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6392 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6394 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_1_5_5:
6395 ; GFX90A:       ; %bb.0:
6396 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6397 ; GFX90A-NEXT:    ;;#ASMSTART
6398 ; GFX90A-NEXT:    ; def v[0:2]
6399 ; GFX90A-NEXT:    ;;#ASMEND
6400 ; GFX90A-NEXT:    ;;#ASMSTART
6401 ; GFX90A-NEXT:    ; def v[2:4]
6402 ; GFX90A-NEXT:    ;;#ASMEND
6403 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6404 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
6405 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
6406 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
6407 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6408 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6409 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6411 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_1_5_5:
6412 ; GFX940:       ; %bb.0:
6413 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6414 ; GFX940-NEXT:    ;;#ASMSTART
6415 ; GFX940-NEXT:    ; def v[0:2]
6416 ; GFX940-NEXT:    ;;#ASMEND
6417 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6418 ; GFX940-NEXT:    ;;#ASMSTART
6419 ; GFX940-NEXT:    ; def v[2:4]
6420 ; GFX940-NEXT:    ;;#ASMEND
6421 ; GFX940-NEXT:    s_nop 0
6422 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
6423 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
6424 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
6425 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6426 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6427 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6428   %vec0 = call <3 x float> asm "; def $0", "=v"()
6429   %vec1 = call <3 x float> asm "; def $0", "=v"()
6430   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 5, i32 5>
6431   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6432   ret void
6435 define void @v_shuffle_v4f32_v3f32__5_2_5_5(ptr addrspace(1) inreg %ptr) {
6436 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_2_5_5:
6437 ; GFX900:       ; %bb.0:
6438 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6439 ; GFX900-NEXT:    ;;#ASMSTART
6440 ; GFX900-NEXT:    ; def v[1:3]
6441 ; GFX900-NEXT:    ;;#ASMEND
6442 ; GFX900-NEXT:    ;;#ASMSTART
6443 ; GFX900-NEXT:    ; def v[0:2]
6444 ; GFX900-NEXT:    ;;#ASMEND
6445 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6446 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
6447 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
6448 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
6449 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6450 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6451 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6453 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_2_5_5:
6454 ; GFX90A:       ; %bb.0:
6455 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6456 ; GFX90A-NEXT:    ;;#ASMSTART
6457 ; GFX90A-NEXT:    ; def v[2:4]
6458 ; GFX90A-NEXT:    ;;#ASMEND
6459 ; GFX90A-NEXT:    ;;#ASMSTART
6460 ; GFX90A-NEXT:    ; def v[0:2]
6461 ; GFX90A-NEXT:    ;;#ASMEND
6462 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6463 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
6464 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
6465 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6466 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6467 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6468 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6470 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_2_5_5:
6471 ; GFX940:       ; %bb.0:
6472 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6473 ; GFX940-NEXT:    ;;#ASMSTART
6474 ; GFX940-NEXT:    ; def v[2:4]
6475 ; GFX940-NEXT:    ;;#ASMEND
6476 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6477 ; GFX940-NEXT:    ;;#ASMSTART
6478 ; GFX940-NEXT:    ; def v[0:2]
6479 ; GFX940-NEXT:    ;;#ASMEND
6480 ; GFX940-NEXT:    s_nop 0
6481 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
6482 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
6483 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6484 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6485 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6486 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6487   %vec0 = call <3 x float> asm "; def $0", "=v"()
6488   %vec1 = call <3 x float> asm "; def $0", "=v"()
6489   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 5, i32 5>
6490   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6491   ret void
6494 define void @v_shuffle_v4f32_v3f32__5_3_5_5(ptr addrspace(1) inreg %ptr) {
6495 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_3_5_5:
6496 ; GFX900:       ; %bb.0:
6497 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6498 ; GFX900-NEXT:    ;;#ASMSTART
6499 ; GFX900-NEXT:    ; def v[1:3]
6500 ; GFX900-NEXT:    ;;#ASMEND
6501 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6502 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
6503 ; GFX900-NEXT:    v_mov_b32_e32 v2, v3
6504 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6505 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6506 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6508 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_3_5_5:
6509 ; GFX90A:       ; %bb.0:
6510 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6511 ; GFX90A-NEXT:    ;;#ASMSTART
6512 ; GFX90A-NEXT:    ; def v[2:4]
6513 ; GFX90A-NEXT:    ;;#ASMEND
6514 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6515 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
6516 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
6517 ; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
6518 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
6519 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6520 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6521 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6523 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_3_5_5:
6524 ; GFX940:       ; %bb.0:
6525 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6526 ; GFX940-NEXT:    ;;#ASMSTART
6527 ; GFX940-NEXT:    ; def v[2:4]
6528 ; GFX940-NEXT:    ;;#ASMEND
6529 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6530 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
6531 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
6532 ; GFX940-NEXT:    v_mov_b32_e32 v2, v4
6533 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
6534 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6535 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6536 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6537   %vec0 = call <3 x float> asm "; def $0", "=v"()
6538   %vec1 = call <3 x float> asm "; def $0", "=v"()
6539   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 5, i32 5>
6540   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6541   ret void
6544 define void @v_shuffle_v4f32_v3f32__5_4_5_5(ptr addrspace(1) inreg %ptr) {
6545 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_4_5_5:
6546 ; GFX900:       ; %bb.0:
6547 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6548 ; GFX900-NEXT:    ;;#ASMSTART
6549 ; GFX900-NEXT:    ; def v[0:2]
6550 ; GFX900-NEXT:    ;;#ASMEND
6551 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6552 ; GFX900-NEXT:    v_mov_b32_e32 v0, v2
6553 ; GFX900-NEXT:    v_mov_b32_e32 v3, v2
6554 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6555 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6556 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6558 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_4_5_5:
6559 ; GFX90A:       ; %bb.0:
6560 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6561 ; GFX90A-NEXT:    ;;#ASMSTART
6562 ; GFX90A-NEXT:    ; def v[0:2]
6563 ; GFX90A-NEXT:    ;;#ASMEND
6564 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6565 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
6566 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6567 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6568 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6569 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6571 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_4_5_5:
6572 ; GFX940:       ; %bb.0:
6573 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6574 ; GFX940-NEXT:    ;;#ASMSTART
6575 ; GFX940-NEXT:    ; def v[0:2]
6576 ; GFX940-NEXT:    ;;#ASMEND
6577 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6578 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
6579 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6580 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6581 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6582 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6583   %vec0 = call <3 x float> asm "; def $0", "=v"()
6584   %vec1 = call <3 x float> asm "; def $0", "=v"()
6585   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 5, i32 5>
6586   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6587   ret void
6590 define void @v_shuffle_v4f32_v3f32__5_5_u_5(ptr addrspace(1) inreg %ptr) {
6591 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_u_5:
6592 ; GFX900:       ; %bb.0:
6593 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6594 ; GFX900-NEXT:    ;;#ASMSTART
6595 ; GFX900-NEXT:    ; def v[1:3]
6596 ; GFX900-NEXT:    ;;#ASMEND
6597 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6598 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
6599 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
6600 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6601 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6602 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6604 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_u_5:
6605 ; GFX90A:       ; %bb.0:
6606 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6607 ; GFX90A-NEXT:    ;;#ASMSTART
6608 ; GFX90A-NEXT:    ; def v[0:2]
6609 ; GFX90A-NEXT:    ;;#ASMEND
6610 ; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6611 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
6612 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
6613 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
6614 ; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6615 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6616 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6618 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_u_5:
6619 ; GFX940:       ; %bb.0:
6620 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6621 ; GFX940-NEXT:    ;;#ASMSTART
6622 ; GFX940-NEXT:    ; def v[0:2]
6623 ; GFX940-NEXT:    ;;#ASMEND
6624 ; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6625 ; GFX940-NEXT:    v_mov_b32_e32 v0, v2
6626 ; GFX940-NEXT:    v_mov_b32_e32 v1, v2
6627 ; GFX940-NEXT:    v_mov_b32_e32 v3, v2
6628 ; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6629 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6630 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6631   %vec0 = call <3 x float> asm "; def $0", "=v"()
6632   %vec1 = call <3 x float> asm "; def $0", "=v"()
6633   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>
6634   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6635   ret void
6638 define void @v_shuffle_v4f32_v3f32__5_5_0_5(ptr addrspace(1) inreg %ptr) {
6639 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_0_5:
6640 ; GFX900:       ; %bb.0:
6641 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6642 ; GFX900-NEXT:    ;;#ASMSTART
6643 ; GFX900-NEXT:    ; def v[1:3]
6644 ; GFX900-NEXT:    ;;#ASMEND
6645 ; GFX900-NEXT:    v_mov_b32_e32 v7, 0
6646 ; GFX900-NEXT:    ;;#ASMSTART
6647 ; GFX900-NEXT:    ; def v[4:6]
6648 ; GFX900-NEXT:    ;;#ASMEND
6649 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
6650 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
6651 ; GFX900-NEXT:    v_mov_b32_e32 v2, v4
6652 ; GFX900-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
6653 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6654 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6656 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_0_5:
6657 ; GFX90A:       ; %bb.0:
6658 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6659 ; GFX90A-NEXT:    ;;#ASMSTART
6660 ; GFX90A-NEXT:    ; def v[2:4]
6661 ; GFX90A-NEXT:    ;;#ASMEND
6662 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
6663 ; GFX90A-NEXT:    ;;#ASMSTART
6664 ; GFX90A-NEXT:    ; def v[4:6]
6665 ; GFX90A-NEXT:    ;;#ASMEND
6666 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
6667 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
6668 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v6
6669 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
6670 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6671 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6673 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_0_5:
6674 ; GFX940:       ; %bb.0:
6675 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6676 ; GFX940-NEXT:    ;;#ASMSTART
6677 ; GFX940-NEXT:    ; def v[2:4]
6678 ; GFX940-NEXT:    ;;#ASMEND
6679 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
6680 ; GFX940-NEXT:    ;;#ASMSTART
6681 ; GFX940-NEXT:    ; def v[4:6]
6682 ; GFX940-NEXT:    ;;#ASMEND
6683 ; GFX940-NEXT:    s_nop 0
6684 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
6685 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
6686 ; GFX940-NEXT:    v_mov_b32_e32 v3, v6
6687 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
6688 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6689 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6690   %vec0 = call <3 x float> asm "; def $0", "=v"()
6691   %vec1 = call <3 x float> asm "; def $0", "=v"()
6692   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 5>
6693   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6694   ret void
6697 define void @v_shuffle_v4f32_v3f32__5_5_1_5(ptr addrspace(1) inreg %ptr) {
6698 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_1_5:
6699 ; GFX900:       ; %bb.0:
6700 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6701 ; GFX900-NEXT:    ;;#ASMSTART
6702 ; GFX900-NEXT:    ; def v[1:3]
6703 ; GFX900-NEXT:    ;;#ASMEND
6704 ; GFX900-NEXT:    ;;#ASMSTART
6705 ; GFX900-NEXT:    ; def v[3:5]
6706 ; GFX900-NEXT:    ;;#ASMEND
6707 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
6708 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
6709 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
6710 ; GFX900-NEXT:    v_mov_b32_e32 v3, v5
6711 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
6712 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6713 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6715 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_1_5:
6716 ; GFX90A:       ; %bb.0:
6717 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6718 ; GFX90A-NEXT:    ;;#ASMSTART
6719 ; GFX90A-NEXT:    ; def v[0:2]
6720 ; GFX90A-NEXT:    ;;#ASMEND
6721 ; GFX90A-NEXT:    ;;#ASMSTART
6722 ; GFX90A-NEXT:    ; def v[2:4]
6723 ; GFX90A-NEXT:    ;;#ASMEND
6724 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
6725 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6726 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]
6727 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
6728 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6729 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6730 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6732 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_1_5:
6733 ; GFX940:       ; %bb.0:
6734 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6735 ; GFX940-NEXT:    ;;#ASMSTART
6736 ; GFX940-NEXT:    ; def v[0:2]
6737 ; GFX940-NEXT:    ;;#ASMEND
6738 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6739 ; GFX940-NEXT:    ;;#ASMSTART
6740 ; GFX940-NEXT:    ; def v[2:4]
6741 ; GFX940-NEXT:    ;;#ASMEND
6742 ; GFX940-NEXT:    s_nop 0
6743 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
6744 ; GFX940-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]
6745 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
6746 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6747 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6748 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6749   %vec0 = call <3 x float> asm "; def $0", "=v"()
6750   %vec1 = call <3 x float> asm "; def $0", "=v"()
6751   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 5>
6752   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6753   ret void
6756 define void @v_shuffle_v4f32_v3f32__5_5_2_5(ptr addrspace(1) inreg %ptr) {
6757 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_2_5:
6758 ; GFX900:       ; %bb.0:
6759 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6760 ; GFX900-NEXT:    ;;#ASMSTART
6761 ; GFX900-NEXT:    ; def v[0:2]
6762 ; GFX900-NEXT:    ;;#ASMEND
6763 ; GFX900-NEXT:    ;;#ASMSTART
6764 ; GFX900-NEXT:    ; def v[3:5]
6765 ; GFX900-NEXT:    ;;#ASMEND
6766 ; GFX900-NEXT:    v_mov_b32_e32 v6, 0
6767 ; GFX900-NEXT:    v_mov_b32_e32 v0, v5
6768 ; GFX900-NEXT:    v_mov_b32_e32 v1, v5
6769 ; GFX900-NEXT:    v_mov_b32_e32 v3, v5
6770 ; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
6771 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6772 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6774 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_2_5:
6775 ; GFX90A:       ; %bb.0:
6776 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6777 ; GFX90A-NEXT:    ;;#ASMSTART
6778 ; GFX90A-NEXT:    ; def v[0:2]
6779 ; GFX90A-NEXT:    ;;#ASMEND
6780 ; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
6781 ; GFX90A-NEXT:    ;;#ASMSTART
6782 ; GFX90A-NEXT:    ; def v[4:6]
6783 ; GFX90A-NEXT:    ;;#ASMEND
6784 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
6785 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
6786 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v6
6787 ; GFX90A-NEXT:    global_store_dwordx4 v7, v[0:3], s[16:17]
6788 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6789 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6791 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_2_5:
6792 ; GFX940:       ; %bb.0:
6793 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6794 ; GFX940-NEXT:    ;;#ASMSTART
6795 ; GFX940-NEXT:    ; def v[0:2]
6796 ; GFX940-NEXT:    ;;#ASMEND
6797 ; GFX940-NEXT:    v_mov_b32_e32 v7, 0
6798 ; GFX940-NEXT:    ;;#ASMSTART
6799 ; GFX940-NEXT:    ; def v[4:6]
6800 ; GFX940-NEXT:    ;;#ASMEND
6801 ; GFX940-NEXT:    s_nop 0
6802 ; GFX940-NEXT:    v_mov_b32_e32 v0, v6
6803 ; GFX940-NEXT:    v_mov_b32_e32 v1, v6
6804 ; GFX940-NEXT:    v_mov_b32_e32 v3, v6
6805 ; GFX940-NEXT:    global_store_dwordx4 v7, v[0:3], s[0:1] sc0 sc1
6806 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6807 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6808   %vec0 = call <3 x float> asm "; def $0", "=v"()
6809   %vec1 = call <3 x float> asm "; def $0", "=v"()
6810   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 5>
6811   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6812   ret void
6815 define void @v_shuffle_v4f32_v3f32__5_5_3_5(ptr addrspace(1) inreg %ptr) {
6816 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_3_5:
6817 ; GFX900:       ; %bb.0:
6818 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6819 ; GFX900-NEXT:    ;;#ASMSTART
6820 ; GFX900-NEXT:    ; def v[2:4]
6821 ; GFX900-NEXT:    ;;#ASMEND
6822 ; GFX900-NEXT:    v_mov_b32_e32 v5, 0
6823 ; GFX900-NEXT:    v_mov_b32_e32 v0, v4
6824 ; GFX900-NEXT:    v_mov_b32_e32 v1, v4
6825 ; GFX900-NEXT:    v_mov_b32_e32 v3, v4
6826 ; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6827 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6828 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6830 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_3_5:
6831 ; GFX90A:       ; %bb.0:
6832 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6833 ; GFX90A-NEXT:    ;;#ASMSTART
6834 ; GFX90A-NEXT:    ; def v[2:4]
6835 ; GFX90A-NEXT:    ;;#ASMEND
6836 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6837 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
6838 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
6839 ; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
6840 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6841 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6842 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6844 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_3_5:
6845 ; GFX940:       ; %bb.0:
6846 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6847 ; GFX940-NEXT:    ;;#ASMSTART
6848 ; GFX940-NEXT:    ; def v[2:4]
6849 ; GFX940-NEXT:    ;;#ASMEND
6850 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6851 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
6852 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
6853 ; GFX940-NEXT:    v_mov_b32_e32 v3, v4
6854 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6855 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6856 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6857   %vec0 = call <3 x float> asm "; def $0", "=v"()
6858   %vec1 = call <3 x float> asm "; def $0", "=v"()
6859   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 5>
6860   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6861   ret void
6864 define void @v_shuffle_v4f32_v3f32__5_5_4_5(ptr addrspace(1) inreg %ptr) {
6865 ; GFX900-LABEL: v_shuffle_v4f32_v3f32__5_5_4_5:
6866 ; GFX900:       ; %bb.0:
6867 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6868 ; GFX900-NEXT:    ;;#ASMSTART
6869 ; GFX900-NEXT:    ; def v[1:3]
6870 ; GFX900-NEXT:    ;;#ASMEND
6871 ; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6872 ; GFX900-NEXT:    v_mov_b32_e32 v0, v3
6873 ; GFX900-NEXT:    v_mov_b32_e32 v1, v3
6874 ; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6875 ; GFX900-NEXT:    s_waitcnt vmcnt(0)
6876 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6878 ; GFX90A-LABEL: v_shuffle_v4f32_v3f32__5_5_4_5:
6879 ; GFX90A:       ; %bb.0:
6880 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6881 ; GFX90A-NEXT:    ;;#ASMSTART
6882 ; GFX90A-NEXT:    ; def v[2:4]
6883 ; GFX90A-NEXT:    ;;#ASMEND
6884 ; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
6885 ; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6886 ; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]
6887 ; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
6888 ; GFX90A-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6889 ; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6890 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6892 ; GFX940-LABEL: v_shuffle_v4f32_v3f32__5_5_4_5:
6893 ; GFX940:       ; %bb.0:
6894 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6895 ; GFX940-NEXT:    ;;#ASMSTART
6896 ; GFX940-NEXT:    ; def v[2:4]
6897 ; GFX940-NEXT:    ;;#ASMEND
6898 ; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6899 ; GFX940-NEXT:    v_mov_b32_e32 v0, v4
6900 ; GFX940-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]
6901 ; GFX940-NEXT:    v_mov_b32_e32 v1, v4
6902 ; GFX940-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1] sc0 sc1
6903 ; GFX940-NEXT:    s_waitcnt vmcnt(0)
6904 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6905   %vec0 = call <3 x float> asm "; def $0", "=v"()
6906   %vec1 = call <3 x float> asm "; def $0", "=v"()
6907   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 5>
6908   store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6909   ret void
6912 define void @s_shuffle_v4f32_v3f32__u_u_u_u() {
6913 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__u_u_u_u:
6914 ; GFX9:       ; %bb.0:
6915 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6916 ; GFX9-NEXT:    ;;#ASMSTART
6917 ; GFX9-NEXT:    ; use s[8:11]
6918 ; GFX9-NEXT:    ;;#ASMEND
6919 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
6920   %vec0 = call <3 x float> asm "; def $0", "=s"()
6921   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> poison
6922   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
6923   ret void
6926 define void @s_shuffle_v4f32_v3f32__0_u_u_u() {
6927 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__0_u_u_u:
6928 ; GFX900:       ; %bb.0:
6929 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6930 ; GFX900-NEXT:    ;;#ASMSTART
6931 ; GFX900-NEXT:    ; def s[8:10]
6932 ; GFX900-NEXT:    ;;#ASMEND
6933 ; GFX900-NEXT:    ;;#ASMSTART
6934 ; GFX900-NEXT:    ; use s[8:11]
6935 ; GFX900-NEXT:    ;;#ASMEND
6936 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6938 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__0_u_u_u:
6939 ; GFX90A:       ; %bb.0:
6940 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6941 ; GFX90A-NEXT:    ;;#ASMSTART
6942 ; GFX90A-NEXT:    ; def s[8:10]
6943 ; GFX90A-NEXT:    ;;#ASMEND
6944 ; GFX90A-NEXT:    ;;#ASMSTART
6945 ; GFX90A-NEXT:    ; use s[8:11]
6946 ; GFX90A-NEXT:    ;;#ASMEND
6947 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6949 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__0_u_u_u:
6950 ; GFX940:       ; %bb.0:
6951 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6952 ; GFX940-NEXT:    ;;#ASMSTART
6953 ; GFX940-NEXT:    ; def s[8:10]
6954 ; GFX940-NEXT:    ;;#ASMEND
6955 ; GFX940-NEXT:    s_nop 0
6956 ; GFX940-NEXT:    ;;#ASMSTART
6957 ; GFX940-NEXT:    ; use s[8:11]
6958 ; GFX940-NEXT:    ;;#ASMEND
6959 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
6960   %vec0 = call <3 x float> asm "; def $0", "=s"()
6961   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
6962   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
6963   ret void
6966 define void @s_shuffle_v4f32_v3f32__1_u_u_u() {
6967 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__1_u_u_u:
6968 ; GFX900:       ; %bb.0:
6969 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6970 ; GFX900-NEXT:    ;;#ASMSTART
6971 ; GFX900-NEXT:    ; def s[4:6]
6972 ; GFX900-NEXT:    ;;#ASMEND
6973 ; GFX900-NEXT:    s_mov_b32 s8, s5
6974 ; GFX900-NEXT:    ;;#ASMSTART
6975 ; GFX900-NEXT:    ; use s[8:11]
6976 ; GFX900-NEXT:    ;;#ASMEND
6977 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
6979 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__1_u_u_u:
6980 ; GFX90A:       ; %bb.0:
6981 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6982 ; GFX90A-NEXT:    ;;#ASMSTART
6983 ; GFX90A-NEXT:    ; def s[4:6]
6984 ; GFX90A-NEXT:    ;;#ASMEND
6985 ; GFX90A-NEXT:    s_mov_b32 s8, s5
6986 ; GFX90A-NEXT:    ;;#ASMSTART
6987 ; GFX90A-NEXT:    ; use s[8:11]
6988 ; GFX90A-NEXT:    ;;#ASMEND
6989 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6991 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__1_u_u_u:
6992 ; GFX940:       ; %bb.0:
6993 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6994 ; GFX940-NEXT:    ;;#ASMSTART
6995 ; GFX940-NEXT:    ; def s[0:2]
6996 ; GFX940-NEXT:    ;;#ASMEND
6997 ; GFX940-NEXT:    s_mov_b32 s8, s1
6998 ; GFX940-NEXT:    ;;#ASMSTART
6999 ; GFX940-NEXT:    ; use s[8:11]
7000 ; GFX940-NEXT:    ;;#ASMEND
7001 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7002   %vec0 = call <3 x float> asm "; def $0", "=s"()
7003   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
7004   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7005   ret void
7008 define void @s_shuffle_v4f32_v3f32__2_u_u_u() {
7009 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__2_u_u_u:
7010 ; GFX900:       ; %bb.0:
7011 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7012 ; GFX900-NEXT:    ;;#ASMSTART
7013 ; GFX900-NEXT:    ; def s[4:6]
7014 ; GFX900-NEXT:    ;;#ASMEND
7015 ; GFX900-NEXT:    s_mov_b32 s8, s6
7016 ; GFX900-NEXT:    ;;#ASMSTART
7017 ; GFX900-NEXT:    ; use s[8:11]
7018 ; GFX900-NEXT:    ;;#ASMEND
7019 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7021 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__2_u_u_u:
7022 ; GFX90A:       ; %bb.0:
7023 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7024 ; GFX90A-NEXT:    ;;#ASMSTART
7025 ; GFX90A-NEXT:    ; def s[4:6]
7026 ; GFX90A-NEXT:    ;;#ASMEND
7027 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7028 ; GFX90A-NEXT:    ;;#ASMSTART
7029 ; GFX90A-NEXT:    ; use s[8:11]
7030 ; GFX90A-NEXT:    ;;#ASMEND
7031 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7033 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__2_u_u_u:
7034 ; GFX940:       ; %bb.0:
7035 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7036 ; GFX940-NEXT:    ;;#ASMSTART
7037 ; GFX940-NEXT:    ; def s[0:2]
7038 ; GFX940-NEXT:    ;;#ASMEND
7039 ; GFX940-NEXT:    s_mov_b32 s8, s2
7040 ; GFX940-NEXT:    ;;#ASMSTART
7041 ; GFX940-NEXT:    ; use s[8:11]
7042 ; GFX940-NEXT:    ;;#ASMEND
7043 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7044   %vec0 = call <3 x float> asm "; def $0", "=s"()
7045   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
7046   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7047   ret void
7050 define void @s_shuffle_v4f32_v3f32__3_u_u_u() {
7051 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__3_u_u_u:
7052 ; GFX9:       ; %bb.0:
7053 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7054 ; GFX9-NEXT:    ;;#ASMSTART
7055 ; GFX9-NEXT:    ; use s[8:11]
7056 ; GFX9-NEXT:    ;;#ASMEND
7057 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
7058   %vec0 = call <3 x float> asm "; def $0", "=s"()
7059   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
7060   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7061   ret void
7064 define void @s_shuffle_v4f32_v3f32__4_u_u_u() {
7065 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__4_u_u_u:
7066 ; GFX900:       ; %bb.0:
7067 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7068 ; GFX900-NEXT:    ;;#ASMSTART
7069 ; GFX900-NEXT:    ; def s[4:6]
7070 ; GFX900-NEXT:    ;;#ASMEND
7071 ; GFX900-NEXT:    s_mov_b32 s8, s5
7072 ; GFX900-NEXT:    ;;#ASMSTART
7073 ; GFX900-NEXT:    ; use s[8:11]
7074 ; GFX900-NEXT:    ;;#ASMEND
7075 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7077 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__4_u_u_u:
7078 ; GFX90A:       ; %bb.0:
7079 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7080 ; GFX90A-NEXT:    ;;#ASMSTART
7081 ; GFX90A-NEXT:    ; def s[4:6]
7082 ; GFX90A-NEXT:    ;;#ASMEND
7083 ; GFX90A-NEXT:    s_mov_b32 s8, s5
7084 ; GFX90A-NEXT:    ;;#ASMSTART
7085 ; GFX90A-NEXT:    ; use s[8:11]
7086 ; GFX90A-NEXT:    ;;#ASMEND
7087 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7089 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__4_u_u_u:
7090 ; GFX940:       ; %bb.0:
7091 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7092 ; GFX940-NEXT:    ;;#ASMSTART
7093 ; GFX940-NEXT:    ; def s[0:2]
7094 ; GFX940-NEXT:    ;;#ASMEND
7095 ; GFX940-NEXT:    s_mov_b32 s8, s1
7096 ; GFX940-NEXT:    ;;#ASMSTART
7097 ; GFX940-NEXT:    ; use s[8:11]
7098 ; GFX940-NEXT:    ;;#ASMEND
7099 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7100   %vec0 = call <3 x float> asm "; def $0", "=s"()
7101   %vec1 = call <3 x float> asm "; def $0", "=s"()
7102   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>
7103   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7104   ret void
7107 define void @s_shuffle_v4f32_v3f32__5_u_u_u() {
7108 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_u_u_u:
7109 ; GFX900:       ; %bb.0:
7110 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7111 ; GFX900-NEXT:    ;;#ASMSTART
7112 ; GFX900-NEXT:    ; def s[4:6]
7113 ; GFX900-NEXT:    ;;#ASMEND
7114 ; GFX900-NEXT:    s_mov_b32 s8, s6
7115 ; GFX900-NEXT:    ;;#ASMSTART
7116 ; GFX900-NEXT:    ; use s[8:11]
7117 ; GFX900-NEXT:    ;;#ASMEND
7118 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7120 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_u_u_u:
7121 ; GFX90A:       ; %bb.0:
7122 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7123 ; GFX90A-NEXT:    ;;#ASMSTART
7124 ; GFX90A-NEXT:    ; def s[4:6]
7125 ; GFX90A-NEXT:    ;;#ASMEND
7126 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7127 ; GFX90A-NEXT:    ;;#ASMSTART
7128 ; GFX90A-NEXT:    ; use s[8:11]
7129 ; GFX90A-NEXT:    ;;#ASMEND
7130 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7132 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_u_u_u:
7133 ; GFX940:       ; %bb.0:
7134 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7135 ; GFX940-NEXT:    ;;#ASMSTART
7136 ; GFX940-NEXT:    ; def s[0:2]
7137 ; GFX940-NEXT:    ;;#ASMEND
7138 ; GFX940-NEXT:    s_mov_b32 s8, s2
7139 ; GFX940-NEXT:    ;;#ASMSTART
7140 ; GFX940-NEXT:    ; use s[8:11]
7141 ; GFX940-NEXT:    ;;#ASMEND
7142 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7143   %vec0 = call <3 x float> asm "; def $0", "=s"()
7144   %vec1 = call <3 x float> asm "; def $0", "=s"()
7145   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>
7146   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7147   ret void
7150 define void @s_shuffle_v4f32_v3f32__5_0_u_u() {
7151 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_0_u_u:
7152 ; GFX900:       ; %bb.0:
7153 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7154 ; GFX900-NEXT:    ;;#ASMSTART
7155 ; GFX900-NEXT:    ; def s[8:10]
7156 ; GFX900-NEXT:    ;;#ASMEND
7157 ; GFX900-NEXT:    ;;#ASMSTART
7158 ; GFX900-NEXT:    ; def s[4:6]
7159 ; GFX900-NEXT:    ;;#ASMEND
7160 ; GFX900-NEXT:    s_mov_b32 s8, s10
7161 ; GFX900-NEXT:    s_mov_b32 s9, s4
7162 ; GFX900-NEXT:    ;;#ASMSTART
7163 ; GFX900-NEXT:    ; use s[8:11]
7164 ; GFX900-NEXT:    ;;#ASMEND
7165 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7167 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_0_u_u:
7168 ; GFX90A:       ; %bb.0:
7169 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7170 ; GFX90A-NEXT:    ;;#ASMSTART
7171 ; GFX90A-NEXT:    ; def s[8:10]
7172 ; GFX90A-NEXT:    ;;#ASMEND
7173 ; GFX90A-NEXT:    ;;#ASMSTART
7174 ; GFX90A-NEXT:    ; def s[4:6]
7175 ; GFX90A-NEXT:    ;;#ASMEND
7176 ; GFX90A-NEXT:    s_mov_b32 s8, s10
7177 ; GFX90A-NEXT:    s_mov_b32 s9, s4
7178 ; GFX90A-NEXT:    ;;#ASMSTART
7179 ; GFX90A-NEXT:    ; use s[8:11]
7180 ; GFX90A-NEXT:    ;;#ASMEND
7181 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7183 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_0_u_u:
7184 ; GFX940:       ; %bb.0:
7185 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7186 ; GFX940-NEXT:    ;;#ASMSTART
7187 ; GFX940-NEXT:    ; def s[0:2]
7188 ; GFX940-NEXT:    ;;#ASMEND
7189 ; GFX940-NEXT:    ;;#ASMSTART
7190 ; GFX940-NEXT:    ; def s[4:6]
7191 ; GFX940-NEXT:    ;;#ASMEND
7192 ; GFX940-NEXT:    s_mov_b32 s8, s6
7193 ; GFX940-NEXT:    s_mov_b32 s9, s0
7194 ; GFX940-NEXT:    ;;#ASMSTART
7195 ; GFX940-NEXT:    ; use s[8:11]
7196 ; GFX940-NEXT:    ;;#ASMEND
7197 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7198   %vec0 = call <3 x float> asm "; def $0", "=s"()
7199   %vec1 = call <3 x float> asm "; def $0", "=s"()
7200   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>
7201   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7202   ret void
7205 define void @s_shuffle_v4f32_v3f32__5_1_u_u() {
7206 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_1_u_u:
7207 ; GFX900:       ; %bb.0:
7208 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7209 ; GFX900-NEXT:    ;;#ASMSTART
7210 ; GFX900-NEXT:    ; def s[8:10]
7211 ; GFX900-NEXT:    ;;#ASMEND
7212 ; GFX900-NEXT:    ;;#ASMSTART
7213 ; GFX900-NEXT:    ; def s[4:6]
7214 ; GFX900-NEXT:    ;;#ASMEND
7215 ; GFX900-NEXT:    s_mov_b32 s8, s6
7216 ; GFX900-NEXT:    ;;#ASMSTART
7217 ; GFX900-NEXT:    ; use s[8:11]
7218 ; GFX900-NEXT:    ;;#ASMEND
7219 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7221 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_1_u_u:
7222 ; GFX90A:       ; %bb.0:
7223 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7224 ; GFX90A-NEXT:    ;;#ASMSTART
7225 ; GFX90A-NEXT:    ; def s[8:10]
7226 ; GFX90A-NEXT:    ;;#ASMEND
7227 ; GFX90A-NEXT:    ;;#ASMSTART
7228 ; GFX90A-NEXT:    ; def s[4:6]
7229 ; GFX90A-NEXT:    ;;#ASMEND
7230 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7231 ; GFX90A-NEXT:    ;;#ASMSTART
7232 ; GFX90A-NEXT:    ; use s[8:11]
7233 ; GFX90A-NEXT:    ;;#ASMEND
7234 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7236 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_1_u_u:
7237 ; GFX940:       ; %bb.0:
7238 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7239 ; GFX940-NEXT:    ;;#ASMSTART
7240 ; GFX940-NEXT:    ; def s[8:10]
7241 ; GFX940-NEXT:    ;;#ASMEND
7242 ; GFX940-NEXT:    ;;#ASMSTART
7243 ; GFX940-NEXT:    ; def s[0:2]
7244 ; GFX940-NEXT:    ;;#ASMEND
7245 ; GFX940-NEXT:    s_mov_b32 s8, s2
7246 ; GFX940-NEXT:    ;;#ASMSTART
7247 ; GFX940-NEXT:    ; use s[8:11]
7248 ; GFX940-NEXT:    ;;#ASMEND
7249 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7250   %vec0 = call <3 x float> asm "; def $0", "=s"()
7251   %vec1 = call <3 x float> asm "; def $0", "=s"()
7252   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>
7253   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7254   ret void
7257 define void @s_shuffle_v4f32_v3f32__5_2_u_u() {
7258 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_2_u_u:
7259 ; GFX900:       ; %bb.0:
7260 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7261 ; GFX900-NEXT:    ;;#ASMSTART
7262 ; GFX900-NEXT:    ; def s[8:10]
7263 ; GFX900-NEXT:    ;;#ASMEND
7264 ; GFX900-NEXT:    ;;#ASMSTART
7265 ; GFX900-NEXT:    ; def s[4:6]
7266 ; GFX900-NEXT:    ;;#ASMEND
7267 ; GFX900-NEXT:    s_mov_b32 s8, s10
7268 ; GFX900-NEXT:    s_mov_b32 s9, s6
7269 ; GFX900-NEXT:    ;;#ASMSTART
7270 ; GFX900-NEXT:    ; use s[8:11]
7271 ; GFX900-NEXT:    ;;#ASMEND
7272 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7274 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_2_u_u:
7275 ; GFX90A:       ; %bb.0:
7276 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7277 ; GFX90A-NEXT:    ;;#ASMSTART
7278 ; GFX90A-NEXT:    ; def s[8:10]
7279 ; GFX90A-NEXT:    ;;#ASMEND
7280 ; GFX90A-NEXT:    ;;#ASMSTART
7281 ; GFX90A-NEXT:    ; def s[4:6]
7282 ; GFX90A-NEXT:    ;;#ASMEND
7283 ; GFX90A-NEXT:    s_mov_b32 s8, s10
7284 ; GFX90A-NEXT:    s_mov_b32 s9, s6
7285 ; GFX90A-NEXT:    ;;#ASMSTART
7286 ; GFX90A-NEXT:    ; use s[8:11]
7287 ; GFX90A-NEXT:    ;;#ASMEND
7288 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7290 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_2_u_u:
7291 ; GFX940:       ; %bb.0:
7292 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7293 ; GFX940-NEXT:    ;;#ASMSTART
7294 ; GFX940-NEXT:    ; def s[0:2]
7295 ; GFX940-NEXT:    ;;#ASMEND
7296 ; GFX940-NEXT:    ;;#ASMSTART
7297 ; GFX940-NEXT:    ; def s[4:6]
7298 ; GFX940-NEXT:    ;;#ASMEND
7299 ; GFX940-NEXT:    s_mov_b32 s8, s6
7300 ; GFX940-NEXT:    s_mov_b32 s9, s2
7301 ; GFX940-NEXT:    ;;#ASMSTART
7302 ; GFX940-NEXT:    ; use s[8:11]
7303 ; GFX940-NEXT:    ;;#ASMEND
7304 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7305   %vec0 = call <3 x float> asm "; def $0", "=s"()
7306   %vec1 = call <3 x float> asm "; def $0", "=s"()
7307   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>
7308   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7309   ret void
7312 define void @s_shuffle_v4f32_v3f32__5_3_u_u() {
7313 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_3_u_u:
7314 ; GFX900:       ; %bb.0:
7315 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7316 ; GFX900-NEXT:    ;;#ASMSTART
7317 ; GFX900-NEXT:    ; def s[4:6]
7318 ; GFX900-NEXT:    ;;#ASMEND
7319 ; GFX900-NEXT:    s_mov_b32 s8, s6
7320 ; GFX900-NEXT:    s_mov_b32 s9, s4
7321 ; GFX900-NEXT:    ;;#ASMSTART
7322 ; GFX900-NEXT:    ; use s[8:11]
7323 ; GFX900-NEXT:    ;;#ASMEND
7324 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7326 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_3_u_u:
7327 ; GFX90A:       ; %bb.0:
7328 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7329 ; GFX90A-NEXT:    ;;#ASMSTART
7330 ; GFX90A-NEXT:    ; def s[4:6]
7331 ; GFX90A-NEXT:    ;;#ASMEND
7332 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7333 ; GFX90A-NEXT:    s_mov_b32 s9, s4
7334 ; GFX90A-NEXT:    ;;#ASMSTART
7335 ; GFX90A-NEXT:    ; use s[8:11]
7336 ; GFX90A-NEXT:    ;;#ASMEND
7337 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7339 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_3_u_u:
7340 ; GFX940:       ; %bb.0:
7341 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7342 ; GFX940-NEXT:    ;;#ASMSTART
7343 ; GFX940-NEXT:    ; def s[0:2]
7344 ; GFX940-NEXT:    ;;#ASMEND
7345 ; GFX940-NEXT:    s_mov_b32 s8, s2
7346 ; GFX940-NEXT:    s_mov_b32 s9, s0
7347 ; GFX940-NEXT:    ;;#ASMSTART
7348 ; GFX940-NEXT:    ; use s[8:11]
7349 ; GFX940-NEXT:    ;;#ASMEND
7350 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7351   %vec0 = call <3 x float> asm "; def $0", "=s"()
7352   %vec1 = call <3 x float> asm "; def $0", "=s"()
7353   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>
7354   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7355   ret void
7358 define void @s_shuffle_v4f32_v3f32__5_4_u_u() {
7359 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__5_4_u_u:
7360 ; GFX9:       ; %bb.0:
7361 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7362 ; GFX9-NEXT:    ;;#ASMSTART
7363 ; GFX9-NEXT:    ; def s[8:10]
7364 ; GFX9-NEXT:    ;;#ASMEND
7365 ; GFX9-NEXT:    s_mov_b32 s8, s10
7366 ; GFX9-NEXT:    ;;#ASMSTART
7367 ; GFX9-NEXT:    ; use s[8:11]
7368 ; GFX9-NEXT:    ;;#ASMEND
7369 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
7370   %vec0 = call <3 x float> asm "; def $0", "=s"()
7371   %vec1 = call <3 x float> asm "; def $0", "=s"()
7372   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>
7373   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7374   ret void
7377 define void @s_shuffle_v4f32_v3f32__5_5_u_u() {
7378 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_u_u:
7379 ; GFX900:       ; %bb.0:
7380 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7381 ; GFX900-NEXT:    ;;#ASMSTART
7382 ; GFX900-NEXT:    ; def s[4:6]
7383 ; GFX900-NEXT:    ;;#ASMEND
7384 ; GFX900-NEXT:    s_mov_b32 s8, s6
7385 ; GFX900-NEXT:    s_mov_b32 s9, s6
7386 ; GFX900-NEXT:    ;;#ASMSTART
7387 ; GFX900-NEXT:    ; use s[8:11]
7388 ; GFX900-NEXT:    ;;#ASMEND
7389 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7391 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_u_u:
7392 ; GFX90A:       ; %bb.0:
7393 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7394 ; GFX90A-NEXT:    ;;#ASMSTART
7395 ; GFX90A-NEXT:    ; def s[4:6]
7396 ; GFX90A-NEXT:    ;;#ASMEND
7397 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7398 ; GFX90A-NEXT:    s_mov_b32 s9, s6
7399 ; GFX90A-NEXT:    ;;#ASMSTART
7400 ; GFX90A-NEXT:    ; use s[8:11]
7401 ; GFX90A-NEXT:    ;;#ASMEND
7402 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7404 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_u_u:
7405 ; GFX940:       ; %bb.0:
7406 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7407 ; GFX940-NEXT:    ;;#ASMSTART
7408 ; GFX940-NEXT:    ; def s[0:2]
7409 ; GFX940-NEXT:    ;;#ASMEND
7410 ; GFX940-NEXT:    s_mov_b32 s8, s2
7411 ; GFX940-NEXT:    s_mov_b32 s9, s2
7412 ; GFX940-NEXT:    ;;#ASMSTART
7413 ; GFX940-NEXT:    ; use s[8:11]
7414 ; GFX940-NEXT:    ;;#ASMEND
7415 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7416   %vec0 = call <3 x float> asm "; def $0", "=s"()
7417   %vec1 = call <3 x float> asm "; def $0", "=s"()
7418   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>
7419   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7420   ret void
7423 define void @s_shuffle_v4f32_v3f32__5_5_0_u() {
7424 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_0_u:
7425 ; GFX900:       ; %bb.0:
7426 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7427 ; GFX900-NEXT:    ;;#ASMSTART
7428 ; GFX900-NEXT:    ; def s[8:10]
7429 ; GFX900-NEXT:    ;;#ASMEND
7430 ; GFX900-NEXT:    ;;#ASMSTART
7431 ; GFX900-NEXT:    ; def s[4:6]
7432 ; GFX900-NEXT:    ;;#ASMEND
7433 ; GFX900-NEXT:    s_mov_b32 s8, s10
7434 ; GFX900-NEXT:    s_mov_b32 s9, s10
7435 ; GFX900-NEXT:    s_mov_b32 s10, s4
7436 ; GFX900-NEXT:    ;;#ASMSTART
7437 ; GFX900-NEXT:    ; use s[8:11]
7438 ; GFX900-NEXT:    ;;#ASMEND
7439 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7441 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_0_u:
7442 ; GFX90A:       ; %bb.0:
7443 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7444 ; GFX90A-NEXT:    ;;#ASMSTART
7445 ; GFX90A-NEXT:    ; def s[8:10]
7446 ; GFX90A-NEXT:    ;;#ASMEND
7447 ; GFX90A-NEXT:    ;;#ASMSTART
7448 ; GFX90A-NEXT:    ; def s[4:6]
7449 ; GFX90A-NEXT:    ;;#ASMEND
7450 ; GFX90A-NEXT:    s_mov_b32 s8, s10
7451 ; GFX90A-NEXT:    s_mov_b32 s9, s10
7452 ; GFX90A-NEXT:    s_mov_b32 s10, s4
7453 ; GFX90A-NEXT:    ;;#ASMSTART
7454 ; GFX90A-NEXT:    ; use s[8:11]
7455 ; GFX90A-NEXT:    ;;#ASMEND
7456 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7458 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_0_u:
7459 ; GFX940:       ; %bb.0:
7460 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7461 ; GFX940-NEXT:    ;;#ASMSTART
7462 ; GFX940-NEXT:    ; def s[0:2]
7463 ; GFX940-NEXT:    ;;#ASMEND
7464 ; GFX940-NEXT:    ;;#ASMSTART
7465 ; GFX940-NEXT:    ; def s[4:6]
7466 ; GFX940-NEXT:    ;;#ASMEND
7467 ; GFX940-NEXT:    s_mov_b32 s8, s6
7468 ; GFX940-NEXT:    s_mov_b32 s9, s6
7469 ; GFX940-NEXT:    s_mov_b32 s10, s0
7470 ; GFX940-NEXT:    ;;#ASMSTART
7471 ; GFX940-NEXT:    ; use s[8:11]
7472 ; GFX940-NEXT:    ;;#ASMEND
7473 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7474   %vec0 = call <3 x float> asm "; def $0", "=s"()
7475   %vec1 = call <3 x float> asm "; def $0", "=s"()
7476   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>
7477   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7478   ret void
7481 define void @s_shuffle_v4f32_v3f32__5_5_1_u() {
7482 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_1_u:
7483 ; GFX900:       ; %bb.0:
7484 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7485 ; GFX900-NEXT:    ;;#ASMSTART
7486 ; GFX900-NEXT:    ; def s[8:10]
7487 ; GFX900-NEXT:    ;;#ASMEND
7488 ; GFX900-NEXT:    ;;#ASMSTART
7489 ; GFX900-NEXT:    ; def s[4:6]
7490 ; GFX900-NEXT:    ;;#ASMEND
7491 ; GFX900-NEXT:    s_mov_b32 s8, s10
7492 ; GFX900-NEXT:    s_mov_b32 s9, s10
7493 ; GFX900-NEXT:    s_mov_b32 s10, s5
7494 ; GFX900-NEXT:    ;;#ASMSTART
7495 ; GFX900-NEXT:    ; use s[8:11]
7496 ; GFX900-NEXT:    ;;#ASMEND
7497 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7499 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_1_u:
7500 ; GFX90A:       ; %bb.0:
7501 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7502 ; GFX90A-NEXT:    ;;#ASMSTART
7503 ; GFX90A-NEXT:    ; def s[8:10]
7504 ; GFX90A-NEXT:    ;;#ASMEND
7505 ; GFX90A-NEXT:    ;;#ASMSTART
7506 ; GFX90A-NEXT:    ; def s[4:6]
7507 ; GFX90A-NEXT:    ;;#ASMEND
7508 ; GFX90A-NEXT:    s_mov_b32 s8, s10
7509 ; GFX90A-NEXT:    s_mov_b32 s9, s10
7510 ; GFX90A-NEXT:    s_mov_b32 s10, s5
7511 ; GFX90A-NEXT:    ;;#ASMSTART
7512 ; GFX90A-NEXT:    ; use s[8:11]
7513 ; GFX90A-NEXT:    ;;#ASMEND
7514 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7516 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_1_u:
7517 ; GFX940:       ; %bb.0:
7518 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7519 ; GFX940-NEXT:    ;;#ASMSTART
7520 ; GFX940-NEXT:    ; def s[0:2]
7521 ; GFX940-NEXT:    ;;#ASMEND
7522 ; GFX940-NEXT:    ;;#ASMSTART
7523 ; GFX940-NEXT:    ; def s[4:6]
7524 ; GFX940-NEXT:    ;;#ASMEND
7525 ; GFX940-NEXT:    s_mov_b32 s8, s6
7526 ; GFX940-NEXT:    s_mov_b32 s9, s6
7527 ; GFX940-NEXT:    s_mov_b32 s10, s1
7528 ; GFX940-NEXT:    ;;#ASMSTART
7529 ; GFX940-NEXT:    ; use s[8:11]
7530 ; GFX940-NEXT:    ;;#ASMEND
7531 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7532   %vec0 = call <3 x float> asm "; def $0", "=s"()
7533   %vec1 = call <3 x float> asm "; def $0", "=s"()
7534   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>
7535   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7536   ret void
7539 define void @s_shuffle_v4f32_v3f32__5_5_2_u() {
7540 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_2_u:
7541 ; GFX900:       ; %bb.0:
7542 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7543 ; GFX900-NEXT:    ;;#ASMSTART
7544 ; GFX900-NEXT:    ; def s[8:10]
7545 ; GFX900-NEXT:    ;;#ASMEND
7546 ; GFX900-NEXT:    ;;#ASMSTART
7547 ; GFX900-NEXT:    ; def s[4:6]
7548 ; GFX900-NEXT:    ;;#ASMEND
7549 ; GFX900-NEXT:    s_mov_b32 s8, s6
7550 ; GFX900-NEXT:    s_mov_b32 s9, s6
7551 ; GFX900-NEXT:    ;;#ASMSTART
7552 ; GFX900-NEXT:    ; use s[8:11]
7553 ; GFX900-NEXT:    ;;#ASMEND
7554 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7556 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_2_u:
7557 ; GFX90A:       ; %bb.0:
7558 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7559 ; GFX90A-NEXT:    ;;#ASMSTART
7560 ; GFX90A-NEXT:    ; def s[8:10]
7561 ; GFX90A-NEXT:    ;;#ASMEND
7562 ; GFX90A-NEXT:    ;;#ASMSTART
7563 ; GFX90A-NEXT:    ; def s[4:6]
7564 ; GFX90A-NEXT:    ;;#ASMEND
7565 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7566 ; GFX90A-NEXT:    s_mov_b32 s9, s6
7567 ; GFX90A-NEXT:    ;;#ASMSTART
7568 ; GFX90A-NEXT:    ; use s[8:11]
7569 ; GFX90A-NEXT:    ;;#ASMEND
7570 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7572 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_2_u:
7573 ; GFX940:       ; %bb.0:
7574 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7575 ; GFX940-NEXT:    ;;#ASMSTART
7576 ; GFX940-NEXT:    ; def s[8:10]
7577 ; GFX940-NEXT:    ;;#ASMEND
7578 ; GFX940-NEXT:    ;;#ASMSTART
7579 ; GFX940-NEXT:    ; def s[0:2]
7580 ; GFX940-NEXT:    ;;#ASMEND
7581 ; GFX940-NEXT:    s_mov_b32 s8, s2
7582 ; GFX940-NEXT:    s_mov_b32 s9, s2
7583 ; GFX940-NEXT:    ;;#ASMSTART
7584 ; GFX940-NEXT:    ; use s[8:11]
7585 ; GFX940-NEXT:    ;;#ASMEND
7586 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7587   %vec0 = call <3 x float> asm "; def $0", "=s"()
7588   %vec1 = call <3 x float> asm "; def $0", "=s"()
7589   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>
7590   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7591   ret void
7594 define void @s_shuffle_v4f32_v3f32__5_5_3_u() {
7595 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_3_u:
7596 ; GFX900:       ; %bb.0:
7597 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7598 ; GFX900-NEXT:    ;;#ASMSTART
7599 ; GFX900-NEXT:    ; def s[4:6]
7600 ; GFX900-NEXT:    ;;#ASMEND
7601 ; GFX900-NEXT:    s_mov_b32 s8, s6
7602 ; GFX900-NEXT:    s_mov_b32 s9, s6
7603 ; GFX900-NEXT:    s_mov_b32 s10, s4
7604 ; GFX900-NEXT:    ;;#ASMSTART
7605 ; GFX900-NEXT:    ; use s[8:11]
7606 ; GFX900-NEXT:    ;;#ASMEND
7607 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7609 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_3_u:
7610 ; GFX90A:       ; %bb.0:
7611 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7612 ; GFX90A-NEXT:    ;;#ASMSTART
7613 ; GFX90A-NEXT:    ; def s[4:6]
7614 ; GFX90A-NEXT:    ;;#ASMEND
7615 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7616 ; GFX90A-NEXT:    s_mov_b32 s9, s6
7617 ; GFX90A-NEXT:    s_mov_b32 s10, s4
7618 ; GFX90A-NEXT:    ;;#ASMSTART
7619 ; GFX90A-NEXT:    ; use s[8:11]
7620 ; GFX90A-NEXT:    ;;#ASMEND
7621 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7623 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_3_u:
7624 ; GFX940:       ; %bb.0:
7625 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7626 ; GFX940-NEXT:    ;;#ASMSTART
7627 ; GFX940-NEXT:    ; def s[0:2]
7628 ; GFX940-NEXT:    ;;#ASMEND
7629 ; GFX940-NEXT:    s_mov_b32 s8, s2
7630 ; GFX940-NEXT:    s_mov_b32 s9, s2
7631 ; GFX940-NEXT:    s_mov_b32 s10, s0
7632 ; GFX940-NEXT:    ;;#ASMSTART
7633 ; GFX940-NEXT:    ; use s[8:11]
7634 ; GFX940-NEXT:    ;;#ASMEND
7635 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7636   %vec0 = call <3 x float> asm "; def $0", "=s"()
7637   %vec1 = call <3 x float> asm "; def $0", "=s"()
7638   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>
7639   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7640   ret void
7643 define void @s_shuffle_v4f32_v3f32__5_5_4_u() {
7644 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_4_u:
7645 ; GFX900:       ; %bb.0:
7646 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7647 ; GFX900-NEXT:    ;;#ASMSTART
7648 ; GFX900-NEXT:    ; def s[4:6]
7649 ; GFX900-NEXT:    ;;#ASMEND
7650 ; GFX900-NEXT:    s_mov_b32 s8, s6
7651 ; GFX900-NEXT:    s_mov_b32 s9, s6
7652 ; GFX900-NEXT:    s_mov_b32 s10, s5
7653 ; GFX900-NEXT:    ;;#ASMSTART
7654 ; GFX900-NEXT:    ; use s[8:11]
7655 ; GFX900-NEXT:    ;;#ASMEND
7656 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7658 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_4_u:
7659 ; GFX90A:       ; %bb.0:
7660 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7661 ; GFX90A-NEXT:    ;;#ASMSTART
7662 ; GFX90A-NEXT:    ; def s[4:6]
7663 ; GFX90A-NEXT:    ;;#ASMEND
7664 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7665 ; GFX90A-NEXT:    s_mov_b32 s9, s6
7666 ; GFX90A-NEXT:    s_mov_b32 s10, s5
7667 ; GFX90A-NEXT:    ;;#ASMSTART
7668 ; GFX90A-NEXT:    ; use s[8:11]
7669 ; GFX90A-NEXT:    ;;#ASMEND
7670 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7672 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_4_u:
7673 ; GFX940:       ; %bb.0:
7674 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7675 ; GFX940-NEXT:    ;;#ASMSTART
7676 ; GFX940-NEXT:    ; def s[0:2]
7677 ; GFX940-NEXT:    ;;#ASMEND
7678 ; GFX940-NEXT:    s_mov_b32 s8, s2
7679 ; GFX940-NEXT:    s_mov_b32 s9, s2
7680 ; GFX940-NEXT:    s_mov_b32 s10, s1
7681 ; GFX940-NEXT:    ;;#ASMSTART
7682 ; GFX940-NEXT:    ; use s[8:11]
7683 ; GFX940-NEXT:    ;;#ASMEND
7684 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7685   %vec0 = call <3 x float> asm "; def $0", "=s"()
7686   %vec1 = call <3 x float> asm "; def $0", "=s"()
7687   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>
7688   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7689   ret void
7692 define void @s_shuffle_v4f32_v3f32__5_5_5_u() {
7693 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__5_5_5_u:
7694 ; GFX9:       ; %bb.0:
7695 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7696 ; GFX9-NEXT:    ;;#ASMSTART
7697 ; GFX9-NEXT:    ; def s[8:10]
7698 ; GFX9-NEXT:    ;;#ASMEND
7699 ; GFX9-NEXT:    s_mov_b32 s8, s10
7700 ; GFX9-NEXT:    s_mov_b32 s9, s10
7701 ; GFX9-NEXT:    ;;#ASMSTART
7702 ; GFX9-NEXT:    ; use s[8:11]
7703 ; GFX9-NEXT:    ;;#ASMEND
7704 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
7705   %vec0 = call <3 x float> asm "; def $0", "=s"()
7706   %vec1 = call <3 x float> asm "; def $0", "=s"()
7707   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>
7708   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7709   ret void
7712 define void @s_shuffle_v4f32_v3f32__5_5_5_0() {
7713 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_5_0:
7714 ; GFX900:       ; %bb.0:
7715 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7716 ; GFX900-NEXT:    ;;#ASMSTART
7717 ; GFX900-NEXT:    ; def s[8:10]
7718 ; GFX900-NEXT:    ;;#ASMEND
7719 ; GFX900-NEXT:    ;;#ASMSTART
7720 ; GFX900-NEXT:    ; def s[4:6]
7721 ; GFX900-NEXT:    ;;#ASMEND
7722 ; GFX900-NEXT:    s_mov_b32 s8, s10
7723 ; GFX900-NEXT:    s_mov_b32 s9, s10
7724 ; GFX900-NEXT:    s_mov_b32 s11, s4
7725 ; GFX900-NEXT:    ;;#ASMSTART
7726 ; GFX900-NEXT:    ; use s[8:11]
7727 ; GFX900-NEXT:    ;;#ASMEND
7728 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7730 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_5_0:
7731 ; GFX90A:       ; %bb.0:
7732 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7733 ; GFX90A-NEXT:    ;;#ASMSTART
7734 ; GFX90A-NEXT:    ; def s[8:10]
7735 ; GFX90A-NEXT:    ;;#ASMEND
7736 ; GFX90A-NEXT:    ;;#ASMSTART
7737 ; GFX90A-NEXT:    ; def s[4:6]
7738 ; GFX90A-NEXT:    ;;#ASMEND
7739 ; GFX90A-NEXT:    s_mov_b32 s8, s10
7740 ; GFX90A-NEXT:    s_mov_b32 s9, s10
7741 ; GFX90A-NEXT:    s_mov_b32 s11, s4
7742 ; GFX90A-NEXT:    ;;#ASMSTART
7743 ; GFX90A-NEXT:    ; use s[8:11]
7744 ; GFX90A-NEXT:    ;;#ASMEND
7745 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7747 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_5_0:
7748 ; GFX940:       ; %bb.0:
7749 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7750 ; GFX940-NEXT:    ;;#ASMSTART
7751 ; GFX940-NEXT:    ; def s[8:10]
7752 ; GFX940-NEXT:    ;;#ASMEND
7753 ; GFX940-NEXT:    ;;#ASMSTART
7754 ; GFX940-NEXT:    ; def s[0:2]
7755 ; GFX940-NEXT:    ;;#ASMEND
7756 ; GFX940-NEXT:    s_mov_b32 s8, s10
7757 ; GFX940-NEXT:    s_mov_b32 s9, s10
7758 ; GFX940-NEXT:    s_mov_b32 s11, s0
7759 ; GFX940-NEXT:    ;;#ASMSTART
7760 ; GFX940-NEXT:    ; use s[8:11]
7761 ; GFX940-NEXT:    ;;#ASMEND
7762 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7763   %vec0 = call <3 x float> asm "; def $0", "=s"()
7764   %vec1 = call <3 x float> asm "; def $0", "=s"()
7765   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 0>
7766   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7767   ret void
7770 define void @s_shuffle_v4f32_v3f32__5_5_5_1() {
7771 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_5_1:
7772 ; GFX900:       ; %bb.0:
7773 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7774 ; GFX900-NEXT:    ;;#ASMSTART
7775 ; GFX900-NEXT:    ; def s[8:10]
7776 ; GFX900-NEXT:    ;;#ASMEND
7777 ; GFX900-NEXT:    ;;#ASMSTART
7778 ; GFX900-NEXT:    ; def s[4:6]
7779 ; GFX900-NEXT:    ;;#ASMEND
7780 ; GFX900-NEXT:    s_mov_b32 s8, s10
7781 ; GFX900-NEXT:    s_mov_b32 s9, s10
7782 ; GFX900-NEXT:    s_mov_b32 s11, s5
7783 ; GFX900-NEXT:    ;;#ASMSTART
7784 ; GFX900-NEXT:    ; use s[8:11]
7785 ; GFX900-NEXT:    ;;#ASMEND
7786 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7788 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_5_1:
7789 ; GFX90A:       ; %bb.0:
7790 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7791 ; GFX90A-NEXT:    ;;#ASMSTART
7792 ; GFX90A-NEXT:    ; def s[8:10]
7793 ; GFX90A-NEXT:    ;;#ASMEND
7794 ; GFX90A-NEXT:    ;;#ASMSTART
7795 ; GFX90A-NEXT:    ; def s[4:6]
7796 ; GFX90A-NEXT:    ;;#ASMEND
7797 ; GFX90A-NEXT:    s_mov_b32 s8, s10
7798 ; GFX90A-NEXT:    s_mov_b32 s9, s10
7799 ; GFX90A-NEXT:    s_mov_b32 s11, s5
7800 ; GFX90A-NEXT:    ;;#ASMSTART
7801 ; GFX90A-NEXT:    ; use s[8:11]
7802 ; GFX90A-NEXT:    ;;#ASMEND
7803 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7805 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_5_1:
7806 ; GFX940:       ; %bb.0:
7807 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7808 ; GFX940-NEXT:    ;;#ASMSTART
7809 ; GFX940-NEXT:    ; def s[8:10]
7810 ; GFX940-NEXT:    ;;#ASMEND
7811 ; GFX940-NEXT:    ;;#ASMSTART
7812 ; GFX940-NEXT:    ; def s[0:2]
7813 ; GFX940-NEXT:    ;;#ASMEND
7814 ; GFX940-NEXT:    s_mov_b32 s8, s10
7815 ; GFX940-NEXT:    s_mov_b32 s9, s10
7816 ; GFX940-NEXT:    s_mov_b32 s11, s1
7817 ; GFX940-NEXT:    ;;#ASMSTART
7818 ; GFX940-NEXT:    ; use s[8:11]
7819 ; GFX940-NEXT:    ;;#ASMEND
7820 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7821   %vec0 = call <3 x float> asm "; def $0", "=s"()
7822   %vec1 = call <3 x float> asm "; def $0", "=s"()
7823   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 1>
7824   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7825   ret void
7828 define void @s_shuffle_v4f32_v3f32__5_5_5_2() {
7829 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_5_2:
7830 ; GFX900:       ; %bb.0:
7831 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7832 ; GFX900-NEXT:    ;;#ASMSTART
7833 ; GFX900-NEXT:    ; def s[8:10]
7834 ; GFX900-NEXT:    ;;#ASMEND
7835 ; GFX900-NEXT:    ;;#ASMSTART
7836 ; GFX900-NEXT:    ; def s[4:6]
7837 ; GFX900-NEXT:    ;;#ASMEND
7838 ; GFX900-NEXT:    s_mov_b32 s8, s10
7839 ; GFX900-NEXT:    s_mov_b32 s9, s10
7840 ; GFX900-NEXT:    s_mov_b32 s11, s6
7841 ; GFX900-NEXT:    ;;#ASMSTART
7842 ; GFX900-NEXT:    ; use s[8:11]
7843 ; GFX900-NEXT:    ;;#ASMEND
7844 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7846 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_5_2:
7847 ; GFX90A:       ; %bb.0:
7848 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7849 ; GFX90A-NEXT:    ;;#ASMSTART
7850 ; GFX90A-NEXT:    ; def s[8:10]
7851 ; GFX90A-NEXT:    ;;#ASMEND
7852 ; GFX90A-NEXT:    ;;#ASMSTART
7853 ; GFX90A-NEXT:    ; def s[4:6]
7854 ; GFX90A-NEXT:    ;;#ASMEND
7855 ; GFX90A-NEXT:    s_mov_b32 s8, s10
7856 ; GFX90A-NEXT:    s_mov_b32 s9, s10
7857 ; GFX90A-NEXT:    s_mov_b32 s11, s6
7858 ; GFX90A-NEXT:    ;;#ASMSTART
7859 ; GFX90A-NEXT:    ; use s[8:11]
7860 ; GFX90A-NEXT:    ;;#ASMEND
7861 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7863 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_5_2:
7864 ; GFX940:       ; %bb.0:
7865 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7866 ; GFX940-NEXT:    ;;#ASMSTART
7867 ; GFX940-NEXT:    ; def s[8:10]
7868 ; GFX940-NEXT:    ;;#ASMEND
7869 ; GFX940-NEXT:    ;;#ASMSTART
7870 ; GFX940-NEXT:    ; def s[0:2]
7871 ; GFX940-NEXT:    ;;#ASMEND
7872 ; GFX940-NEXT:    s_mov_b32 s8, s10
7873 ; GFX940-NEXT:    s_mov_b32 s9, s10
7874 ; GFX940-NEXT:    s_mov_b32 s11, s2
7875 ; GFX940-NEXT:    ;;#ASMSTART
7876 ; GFX940-NEXT:    ; use s[8:11]
7877 ; GFX940-NEXT:    ;;#ASMEND
7878 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7879   %vec0 = call <3 x float> asm "; def $0", "=s"()
7880   %vec1 = call <3 x float> asm "; def $0", "=s"()
7881   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 2>
7882   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7883   ret void
7886 define void @s_shuffle_v4f32_v3f32__5_5_5_3() {
7887 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_5_3:
7888 ; GFX900:       ; %bb.0:
7889 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7890 ; GFX900-NEXT:    ;;#ASMSTART
7891 ; GFX900-NEXT:    ; def s[4:6]
7892 ; GFX900-NEXT:    ;;#ASMEND
7893 ; GFX900-NEXT:    s_mov_b32 s8, s6
7894 ; GFX900-NEXT:    s_mov_b32 s9, s6
7895 ; GFX900-NEXT:    s_mov_b32 s10, s6
7896 ; GFX900-NEXT:    s_mov_b32 s11, s4
7897 ; GFX900-NEXT:    ;;#ASMSTART
7898 ; GFX900-NEXT:    ; use s[8:11]
7899 ; GFX900-NEXT:    ;;#ASMEND
7900 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7902 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_5_3:
7903 ; GFX90A:       ; %bb.0:
7904 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7905 ; GFX90A-NEXT:    ;;#ASMSTART
7906 ; GFX90A-NEXT:    ; def s[4:6]
7907 ; GFX90A-NEXT:    ;;#ASMEND
7908 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7909 ; GFX90A-NEXT:    s_mov_b32 s9, s6
7910 ; GFX90A-NEXT:    s_mov_b32 s10, s6
7911 ; GFX90A-NEXT:    s_mov_b32 s11, s4
7912 ; GFX90A-NEXT:    ;;#ASMSTART
7913 ; GFX90A-NEXT:    ; use s[8:11]
7914 ; GFX90A-NEXT:    ;;#ASMEND
7915 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7917 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_5_3:
7918 ; GFX940:       ; %bb.0:
7919 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7920 ; GFX940-NEXT:    ;;#ASMSTART
7921 ; GFX940-NEXT:    ; def s[0:2]
7922 ; GFX940-NEXT:    ;;#ASMEND
7923 ; GFX940-NEXT:    s_mov_b32 s8, s2
7924 ; GFX940-NEXT:    s_mov_b32 s9, s2
7925 ; GFX940-NEXT:    s_mov_b32 s10, s2
7926 ; GFX940-NEXT:    s_mov_b32 s11, s0
7927 ; GFX940-NEXT:    ;;#ASMSTART
7928 ; GFX940-NEXT:    ; use s[8:11]
7929 ; GFX940-NEXT:    ;;#ASMEND
7930 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7931   %vec0 = call <3 x float> asm "; def $0", "=s"()
7932   %vec1 = call <3 x float> asm "; def $0", "=s"()
7933   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 3>
7934   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7935   ret void
7938 define void @s_shuffle_v4f32_v3f32__5_5_5_4() {
7939 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_5_4:
7940 ; GFX900:       ; %bb.0:
7941 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7942 ; GFX900-NEXT:    ;;#ASMSTART
7943 ; GFX900-NEXT:    ; def s[4:6]
7944 ; GFX900-NEXT:    ;;#ASMEND
7945 ; GFX900-NEXT:    s_mov_b32 s8, s6
7946 ; GFX900-NEXT:    s_mov_b32 s9, s6
7947 ; GFX900-NEXT:    s_mov_b32 s10, s6
7948 ; GFX900-NEXT:    s_mov_b32 s11, s5
7949 ; GFX900-NEXT:    ;;#ASMSTART
7950 ; GFX900-NEXT:    ; use s[8:11]
7951 ; GFX900-NEXT:    ;;#ASMEND
7952 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
7954 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_5_4:
7955 ; GFX90A:       ; %bb.0:
7956 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7957 ; GFX90A-NEXT:    ;;#ASMSTART
7958 ; GFX90A-NEXT:    ; def s[4:6]
7959 ; GFX90A-NEXT:    ;;#ASMEND
7960 ; GFX90A-NEXT:    s_mov_b32 s8, s6
7961 ; GFX90A-NEXT:    s_mov_b32 s9, s6
7962 ; GFX90A-NEXT:    s_mov_b32 s10, s6
7963 ; GFX90A-NEXT:    s_mov_b32 s11, s5
7964 ; GFX90A-NEXT:    ;;#ASMSTART
7965 ; GFX90A-NEXT:    ; use s[8:11]
7966 ; GFX90A-NEXT:    ;;#ASMEND
7967 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7969 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_5_4:
7970 ; GFX940:       ; %bb.0:
7971 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7972 ; GFX940-NEXT:    ;;#ASMSTART
7973 ; GFX940-NEXT:    ; def s[0:2]
7974 ; GFX940-NEXT:    ;;#ASMEND
7975 ; GFX940-NEXT:    s_mov_b32 s8, s2
7976 ; GFX940-NEXT:    s_mov_b32 s9, s2
7977 ; GFX940-NEXT:    s_mov_b32 s10, s2
7978 ; GFX940-NEXT:    s_mov_b32 s11, s1
7979 ; GFX940-NEXT:    ;;#ASMSTART
7980 ; GFX940-NEXT:    ; use s[8:11]
7981 ; GFX940-NEXT:    ;;#ASMEND
7982 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
7983   %vec0 = call <3 x float> asm "; def $0", "=s"()
7984   %vec1 = call <3 x float> asm "; def $0", "=s"()
7985   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 4>
7986   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
7987   ret void
7990 define void @s_shuffle_v4f32_v3f32__5_5_5_5() {
7991 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__5_5_5_5:
7992 ; GFX9:       ; %bb.0:
7993 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7994 ; GFX9-NEXT:    ;;#ASMSTART
7995 ; GFX9-NEXT:    ; def s[8:10]
7996 ; GFX9-NEXT:    ;;#ASMEND
7997 ; GFX9-NEXT:    s_mov_b32 s8, s10
7998 ; GFX9-NEXT:    s_mov_b32 s9, s10
7999 ; GFX9-NEXT:    s_mov_b32 s11, s10
8000 ; GFX9-NEXT:    ;;#ASMSTART
8001 ; GFX9-NEXT:    ; use s[8:11]
8002 ; GFX9-NEXT:    ;;#ASMEND
8003 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
8004   %vec0 = call <3 x float> asm "; def $0", "=s"()
8005   %vec1 = call <3 x float> asm "; def $0", "=s"()
8006   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>
8007   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8008   ret void
8011 define void @s_shuffle_v4f32_v3f32__u_0_0_0() {
8012 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__u_0_0_0:
8013 ; GFX900:       ; %bb.0:
8014 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8015 ; GFX900-NEXT:    ;;#ASMSTART
8016 ; GFX900-NEXT:    ; def s[4:6]
8017 ; GFX900-NEXT:    ;;#ASMEND
8018 ; GFX900-NEXT:    s_mov_b32 s9, s4
8019 ; GFX900-NEXT:    s_mov_b32 s10, s4
8020 ; GFX900-NEXT:    s_mov_b32 s11, s4
8021 ; GFX900-NEXT:    ;;#ASMSTART
8022 ; GFX900-NEXT:    ; use s[8:11]
8023 ; GFX900-NEXT:    ;;#ASMEND
8024 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8026 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__u_0_0_0:
8027 ; GFX90A:       ; %bb.0:
8028 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8029 ; GFX90A-NEXT:    ;;#ASMSTART
8030 ; GFX90A-NEXT:    ; def s[4:6]
8031 ; GFX90A-NEXT:    ;;#ASMEND
8032 ; GFX90A-NEXT:    s_mov_b32 s9, s4
8033 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8034 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8035 ; GFX90A-NEXT:    ;;#ASMSTART
8036 ; GFX90A-NEXT:    ; use s[8:11]
8037 ; GFX90A-NEXT:    ;;#ASMEND
8038 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8040 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__u_0_0_0:
8041 ; GFX940:       ; %bb.0:
8042 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8043 ; GFX940-NEXT:    ;;#ASMSTART
8044 ; GFX940-NEXT:    ; def s[0:2]
8045 ; GFX940-NEXT:    ;;#ASMEND
8046 ; GFX940-NEXT:    s_mov_b32 s9, s0
8047 ; GFX940-NEXT:    s_mov_b32 s10, s0
8048 ; GFX940-NEXT:    s_mov_b32 s11, s0
8049 ; GFX940-NEXT:    ;;#ASMSTART
8050 ; GFX940-NEXT:    ; use s[8:11]
8051 ; GFX940-NEXT:    ;;#ASMEND
8052 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8053   %vec0 = call <3 x float> asm "; def $0", "=s"()
8054   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>
8055   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8056   ret void
8059 define void @s_shuffle_v4f32_v3f32__0_0_0_0() {
8060 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__0_0_0_0:
8061 ; GFX9:       ; %bb.0:
8062 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8063 ; GFX9-NEXT:    ;;#ASMSTART
8064 ; GFX9-NEXT:    ; def s[8:10]
8065 ; GFX9-NEXT:    ;;#ASMEND
8066 ; GFX9-NEXT:    s_mov_b32 s9, s8
8067 ; GFX9-NEXT:    s_mov_b32 s10, s8
8068 ; GFX9-NEXT:    s_mov_b32 s11, s8
8069 ; GFX9-NEXT:    ;;#ASMSTART
8070 ; GFX9-NEXT:    ; use s[8:11]
8071 ; GFX9-NEXT:    ;;#ASMEND
8072 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
8073   %vec0 = call <3 x float> asm "; def $0", "=s"()
8074   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> zeroinitializer
8075   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8076   ret void
8079 define void @s_shuffle_v4f32_v3f32__1_0_0_0() {
8080 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__1_0_0_0:
8081 ; GFX900:       ; %bb.0:
8082 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8083 ; GFX900-NEXT:    ;;#ASMSTART
8084 ; GFX900-NEXT:    ; def s[4:6]
8085 ; GFX900-NEXT:    ;;#ASMEND
8086 ; GFX900-NEXT:    s_mov_b32 s8, s5
8087 ; GFX900-NEXT:    s_mov_b32 s9, s4
8088 ; GFX900-NEXT:    s_mov_b32 s10, s4
8089 ; GFX900-NEXT:    s_mov_b32 s11, s4
8090 ; GFX900-NEXT:    ;;#ASMSTART
8091 ; GFX900-NEXT:    ; use s[8:11]
8092 ; GFX900-NEXT:    ;;#ASMEND
8093 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8095 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__1_0_0_0:
8096 ; GFX90A:       ; %bb.0:
8097 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8098 ; GFX90A-NEXT:    ;;#ASMSTART
8099 ; GFX90A-NEXT:    ; def s[4:6]
8100 ; GFX90A-NEXT:    ;;#ASMEND
8101 ; GFX90A-NEXT:    s_mov_b32 s8, s5
8102 ; GFX90A-NEXT:    s_mov_b32 s9, s4
8103 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8104 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8105 ; GFX90A-NEXT:    ;;#ASMSTART
8106 ; GFX90A-NEXT:    ; use s[8:11]
8107 ; GFX90A-NEXT:    ;;#ASMEND
8108 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8110 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__1_0_0_0:
8111 ; GFX940:       ; %bb.0:
8112 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8113 ; GFX940-NEXT:    ;;#ASMSTART
8114 ; GFX940-NEXT:    ; def s[0:2]
8115 ; GFX940-NEXT:    ;;#ASMEND
8116 ; GFX940-NEXT:    s_mov_b32 s8, s1
8117 ; GFX940-NEXT:    s_mov_b32 s9, s0
8118 ; GFX940-NEXT:    s_mov_b32 s10, s0
8119 ; GFX940-NEXT:    s_mov_b32 s11, s0
8120 ; GFX940-NEXT:    ;;#ASMSTART
8121 ; GFX940-NEXT:    ; use s[8:11]
8122 ; GFX940-NEXT:    ;;#ASMEND
8123 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8124   %vec0 = call <3 x float> asm "; def $0", "=s"()
8125   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
8126   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8127   ret void
8130 define void @s_shuffle_v4f32_v3f32__2_0_0_0() {
8131 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__2_0_0_0:
8132 ; GFX900:       ; %bb.0:
8133 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8134 ; GFX900-NEXT:    ;;#ASMSTART
8135 ; GFX900-NEXT:    ; def s[4:6]
8136 ; GFX900-NEXT:    ;;#ASMEND
8137 ; GFX900-NEXT:    s_mov_b32 s8, s6
8138 ; GFX900-NEXT:    s_mov_b32 s9, s4
8139 ; GFX900-NEXT:    s_mov_b32 s10, s4
8140 ; GFX900-NEXT:    s_mov_b32 s11, s4
8141 ; GFX900-NEXT:    ;;#ASMSTART
8142 ; GFX900-NEXT:    ; use s[8:11]
8143 ; GFX900-NEXT:    ;;#ASMEND
8144 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8146 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__2_0_0_0:
8147 ; GFX90A:       ; %bb.0:
8148 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8149 ; GFX90A-NEXT:    ;;#ASMSTART
8150 ; GFX90A-NEXT:    ; def s[4:6]
8151 ; GFX90A-NEXT:    ;;#ASMEND
8152 ; GFX90A-NEXT:    s_mov_b32 s8, s6
8153 ; GFX90A-NEXT:    s_mov_b32 s9, s4
8154 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8155 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8156 ; GFX90A-NEXT:    ;;#ASMSTART
8157 ; GFX90A-NEXT:    ; use s[8:11]
8158 ; GFX90A-NEXT:    ;;#ASMEND
8159 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8161 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__2_0_0_0:
8162 ; GFX940:       ; %bb.0:
8163 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8164 ; GFX940-NEXT:    ;;#ASMSTART
8165 ; GFX940-NEXT:    ; def s[0:2]
8166 ; GFX940-NEXT:    ;;#ASMEND
8167 ; GFX940-NEXT:    s_mov_b32 s8, s2
8168 ; GFX940-NEXT:    s_mov_b32 s9, s0
8169 ; GFX940-NEXT:    s_mov_b32 s10, s0
8170 ; GFX940-NEXT:    s_mov_b32 s11, s0
8171 ; GFX940-NEXT:    ;;#ASMSTART
8172 ; GFX940-NEXT:    ; use s[8:11]
8173 ; GFX940-NEXT:    ;;#ASMEND
8174 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8175   %vec0 = call <3 x float> asm "; def $0", "=s"()
8176   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
8177   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8178   ret void
8181 define void @s_shuffle_v4f32_v3f32__3_0_0_0() {
8182 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__3_0_0_0:
8183 ; GFX900:       ; %bb.0:
8184 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8185 ; GFX900-NEXT:    ;;#ASMSTART
8186 ; GFX900-NEXT:    ; def s[4:6]
8187 ; GFX900-NEXT:    ;;#ASMEND
8188 ; GFX900-NEXT:    s_mov_b32 s9, s4
8189 ; GFX900-NEXT:    s_mov_b32 s10, s4
8190 ; GFX900-NEXT:    s_mov_b32 s11, s4
8191 ; GFX900-NEXT:    ;;#ASMSTART
8192 ; GFX900-NEXT:    ; use s[8:11]
8193 ; GFX900-NEXT:    ;;#ASMEND
8194 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8196 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__3_0_0_0:
8197 ; GFX90A:       ; %bb.0:
8198 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8199 ; GFX90A-NEXT:    ;;#ASMSTART
8200 ; GFX90A-NEXT:    ; def s[4:6]
8201 ; GFX90A-NEXT:    ;;#ASMEND
8202 ; GFX90A-NEXT:    s_mov_b32 s9, s4
8203 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8204 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8205 ; GFX90A-NEXT:    ;;#ASMSTART
8206 ; GFX90A-NEXT:    ; use s[8:11]
8207 ; GFX90A-NEXT:    ;;#ASMEND
8208 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8210 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__3_0_0_0:
8211 ; GFX940:       ; %bb.0:
8212 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8213 ; GFX940-NEXT:    ;;#ASMSTART
8214 ; GFX940-NEXT:    ; def s[0:2]
8215 ; GFX940-NEXT:    ;;#ASMEND
8216 ; GFX940-NEXT:    s_mov_b32 s9, s0
8217 ; GFX940-NEXT:    s_mov_b32 s10, s0
8218 ; GFX940-NEXT:    s_mov_b32 s11, s0
8219 ; GFX940-NEXT:    ;;#ASMSTART
8220 ; GFX940-NEXT:    ; use s[8:11]
8221 ; GFX940-NEXT:    ;;#ASMEND
8222 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8223   %vec0 = call <3 x float> asm "; def $0", "=s"()
8224   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
8225   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8226   ret void
8229 define void @s_shuffle_v4f32_v3f32__4_0_0_0() {
8230 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__4_0_0_0:
8231 ; GFX900:       ; %bb.0:
8232 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8233 ; GFX900-NEXT:    ;;#ASMSTART
8234 ; GFX900-NEXT:    ; def s[8:10]
8235 ; GFX900-NEXT:    ;;#ASMEND
8236 ; GFX900-NEXT:    ;;#ASMSTART
8237 ; GFX900-NEXT:    ; def s[4:6]
8238 ; GFX900-NEXT:    ;;#ASMEND
8239 ; GFX900-NEXT:    s_mov_b32 s8, s9
8240 ; GFX900-NEXT:    s_mov_b32 s9, s4
8241 ; GFX900-NEXT:    s_mov_b32 s10, s4
8242 ; GFX900-NEXT:    s_mov_b32 s11, s4
8243 ; GFX900-NEXT:    ;;#ASMSTART
8244 ; GFX900-NEXT:    ; use s[8:11]
8245 ; GFX900-NEXT:    ;;#ASMEND
8246 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8248 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__4_0_0_0:
8249 ; GFX90A:       ; %bb.0:
8250 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8251 ; GFX90A-NEXT:    ;;#ASMSTART
8252 ; GFX90A-NEXT:    ; def s[8:10]
8253 ; GFX90A-NEXT:    ;;#ASMEND
8254 ; GFX90A-NEXT:    ;;#ASMSTART
8255 ; GFX90A-NEXT:    ; def s[4:6]
8256 ; GFX90A-NEXT:    ;;#ASMEND
8257 ; GFX90A-NEXT:    s_mov_b32 s8, s9
8258 ; GFX90A-NEXT:    s_mov_b32 s9, s4
8259 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8260 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8261 ; GFX90A-NEXT:    ;;#ASMSTART
8262 ; GFX90A-NEXT:    ; use s[8:11]
8263 ; GFX90A-NEXT:    ;;#ASMEND
8264 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8266 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__4_0_0_0:
8267 ; GFX940:       ; %bb.0:
8268 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8269 ; GFX940-NEXT:    ;;#ASMSTART
8270 ; GFX940-NEXT:    ; def s[0:2]
8271 ; GFX940-NEXT:    ;;#ASMEND
8272 ; GFX940-NEXT:    ;;#ASMSTART
8273 ; GFX940-NEXT:    ; def s[4:6]
8274 ; GFX940-NEXT:    ;;#ASMEND
8275 ; GFX940-NEXT:    s_mov_b32 s8, s5
8276 ; GFX940-NEXT:    s_mov_b32 s9, s0
8277 ; GFX940-NEXT:    s_mov_b32 s10, s0
8278 ; GFX940-NEXT:    s_mov_b32 s11, s0
8279 ; GFX940-NEXT:    ;;#ASMSTART
8280 ; GFX940-NEXT:    ; use s[8:11]
8281 ; GFX940-NEXT:    ;;#ASMEND
8282 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8283   %vec0 = call <3 x float> asm "; def $0", "=s"()
8284   %vec1 = call <3 x float> asm "; def $0", "=s"()
8285   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 0, i32 0, i32 0>
8286   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8287   ret void
8290 define void @s_shuffle_v4f32_v3f32__5_0_0_0() {
8291 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_0_0_0:
8292 ; GFX900:       ; %bb.0:
8293 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8294 ; GFX900-NEXT:    ;;#ASMSTART
8295 ; GFX900-NEXT:    ; def s[8:10]
8296 ; GFX900-NEXT:    ;;#ASMEND
8297 ; GFX900-NEXT:    ;;#ASMSTART
8298 ; GFX900-NEXT:    ; def s[4:6]
8299 ; GFX900-NEXT:    ;;#ASMEND
8300 ; GFX900-NEXT:    s_mov_b32 s8, s10
8301 ; GFX900-NEXT:    s_mov_b32 s9, s4
8302 ; GFX900-NEXT:    s_mov_b32 s10, s4
8303 ; GFX900-NEXT:    s_mov_b32 s11, s4
8304 ; GFX900-NEXT:    ;;#ASMSTART
8305 ; GFX900-NEXT:    ; use s[8:11]
8306 ; GFX900-NEXT:    ;;#ASMEND
8307 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8309 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_0_0_0:
8310 ; GFX90A:       ; %bb.0:
8311 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8312 ; GFX90A-NEXT:    ;;#ASMSTART
8313 ; GFX90A-NEXT:    ; def s[8:10]
8314 ; GFX90A-NEXT:    ;;#ASMEND
8315 ; GFX90A-NEXT:    ;;#ASMSTART
8316 ; GFX90A-NEXT:    ; def s[4:6]
8317 ; GFX90A-NEXT:    ;;#ASMEND
8318 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8319 ; GFX90A-NEXT:    s_mov_b32 s9, s4
8320 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8321 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8322 ; GFX90A-NEXT:    ;;#ASMSTART
8323 ; GFX90A-NEXT:    ; use s[8:11]
8324 ; GFX90A-NEXT:    ;;#ASMEND
8325 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8327 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_0_0_0:
8328 ; GFX940:       ; %bb.0:
8329 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8330 ; GFX940-NEXT:    ;;#ASMSTART
8331 ; GFX940-NEXT:    ; def s[0:2]
8332 ; GFX940-NEXT:    ;;#ASMEND
8333 ; GFX940-NEXT:    ;;#ASMSTART
8334 ; GFX940-NEXT:    ; def s[4:6]
8335 ; GFX940-NEXT:    ;;#ASMEND
8336 ; GFX940-NEXT:    s_mov_b32 s8, s6
8337 ; GFX940-NEXT:    s_mov_b32 s9, s0
8338 ; GFX940-NEXT:    s_mov_b32 s10, s0
8339 ; GFX940-NEXT:    s_mov_b32 s11, s0
8340 ; GFX940-NEXT:    ;;#ASMSTART
8341 ; GFX940-NEXT:    ; use s[8:11]
8342 ; GFX940-NEXT:    ;;#ASMEND
8343 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8344   %vec0 = call <3 x float> asm "; def $0", "=s"()
8345   %vec1 = call <3 x float> asm "; def $0", "=s"()
8346   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>
8347   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8348   ret void
8351 define void @s_shuffle_v4f32_v3f32__5_u_0_0() {
8352 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_u_0_0:
8353 ; GFX900:       ; %bb.0:
8354 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8355 ; GFX900-NEXT:    ;;#ASMSTART
8356 ; GFX900-NEXT:    ; def s[8:10]
8357 ; GFX900-NEXT:    ;;#ASMEND
8358 ; GFX900-NEXT:    ;;#ASMSTART
8359 ; GFX900-NEXT:    ; def s[4:6]
8360 ; GFX900-NEXT:    ;;#ASMEND
8361 ; GFX900-NEXT:    s_mov_b32 s8, s10
8362 ; GFX900-NEXT:    s_mov_b32 s10, s4
8363 ; GFX900-NEXT:    s_mov_b32 s11, s4
8364 ; GFX900-NEXT:    ;;#ASMSTART
8365 ; GFX900-NEXT:    ; use s[8:11]
8366 ; GFX900-NEXT:    ;;#ASMEND
8367 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8369 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_u_0_0:
8370 ; GFX90A:       ; %bb.0:
8371 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8372 ; GFX90A-NEXT:    ;;#ASMSTART
8373 ; GFX90A-NEXT:    ; def s[8:10]
8374 ; GFX90A-NEXT:    ;;#ASMEND
8375 ; GFX90A-NEXT:    ;;#ASMSTART
8376 ; GFX90A-NEXT:    ; def s[4:6]
8377 ; GFX90A-NEXT:    ;;#ASMEND
8378 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8379 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8380 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8381 ; GFX90A-NEXT:    ;;#ASMSTART
8382 ; GFX90A-NEXT:    ; use s[8:11]
8383 ; GFX90A-NEXT:    ;;#ASMEND
8384 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8386 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_u_0_0:
8387 ; GFX940:       ; %bb.0:
8388 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8389 ; GFX940-NEXT:    ;;#ASMSTART
8390 ; GFX940-NEXT:    ; def s[0:2]
8391 ; GFX940-NEXT:    ;;#ASMEND
8392 ; GFX940-NEXT:    ;;#ASMSTART
8393 ; GFX940-NEXT:    ; def s[4:6]
8394 ; GFX940-NEXT:    ;;#ASMEND
8395 ; GFX940-NEXT:    s_mov_b32 s8, s6
8396 ; GFX940-NEXT:    s_mov_b32 s10, s0
8397 ; GFX940-NEXT:    s_mov_b32 s11, s0
8398 ; GFX940-NEXT:    ;;#ASMSTART
8399 ; GFX940-NEXT:    ; use s[8:11]
8400 ; GFX940-NEXT:    ;;#ASMEND
8401 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8402   %vec0 = call <3 x float> asm "; def $0", "=s"()
8403   %vec1 = call <3 x float> asm "; def $0", "=s"()
8404   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>
8405   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8406   ret void
8409 define void @s_shuffle_v4f32_v3f32__5_1_0_0() {
8410 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_1_0_0:
8411 ; GFX900:       ; %bb.0:
8412 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8413 ; GFX900-NEXT:    ;;#ASMSTART
8414 ; GFX900-NEXT:    ; def s[8:10]
8415 ; GFX900-NEXT:    ;;#ASMEND
8416 ; GFX900-NEXT:    ;;#ASMSTART
8417 ; GFX900-NEXT:    ; def s[4:6]
8418 ; GFX900-NEXT:    ;;#ASMEND
8419 ; GFX900-NEXT:    s_mov_b32 s8, s10
8420 ; GFX900-NEXT:    s_mov_b32 s9, s5
8421 ; GFX900-NEXT:    s_mov_b32 s10, s4
8422 ; GFX900-NEXT:    s_mov_b32 s11, s4
8423 ; GFX900-NEXT:    ;;#ASMSTART
8424 ; GFX900-NEXT:    ; use s[8:11]
8425 ; GFX900-NEXT:    ;;#ASMEND
8426 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8428 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_1_0_0:
8429 ; GFX90A:       ; %bb.0:
8430 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8431 ; GFX90A-NEXT:    ;;#ASMSTART
8432 ; GFX90A-NEXT:    ; def s[8:10]
8433 ; GFX90A-NEXT:    ;;#ASMEND
8434 ; GFX90A-NEXT:    ;;#ASMSTART
8435 ; GFX90A-NEXT:    ; def s[4:6]
8436 ; GFX90A-NEXT:    ;;#ASMEND
8437 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8438 ; GFX90A-NEXT:    s_mov_b32 s9, s5
8439 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8440 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8441 ; GFX90A-NEXT:    ;;#ASMSTART
8442 ; GFX90A-NEXT:    ; use s[8:11]
8443 ; GFX90A-NEXT:    ;;#ASMEND
8444 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8446 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_1_0_0:
8447 ; GFX940:       ; %bb.0:
8448 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8449 ; GFX940-NEXT:    ;;#ASMSTART
8450 ; GFX940-NEXT:    ; def s[0:2]
8451 ; GFX940-NEXT:    ;;#ASMEND
8452 ; GFX940-NEXT:    ;;#ASMSTART
8453 ; GFX940-NEXT:    ; def s[4:6]
8454 ; GFX940-NEXT:    ;;#ASMEND
8455 ; GFX940-NEXT:    s_mov_b32 s8, s6
8456 ; GFX940-NEXT:    s_mov_b32 s9, s1
8457 ; GFX940-NEXT:    s_mov_b32 s10, s0
8458 ; GFX940-NEXT:    s_mov_b32 s11, s0
8459 ; GFX940-NEXT:    ;;#ASMSTART
8460 ; GFX940-NEXT:    ; use s[8:11]
8461 ; GFX940-NEXT:    ;;#ASMEND
8462 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8463   %vec0 = call <3 x float> asm "; def $0", "=s"()
8464   %vec1 = call <3 x float> asm "; def $0", "=s"()
8465   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 0, i32 0>
8466   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8467   ret void
8470 define void @s_shuffle_v4f32_v3f32__5_2_0_0() {
8471 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_2_0_0:
8472 ; GFX900:       ; %bb.0:
8473 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8474 ; GFX900-NEXT:    ;;#ASMSTART
8475 ; GFX900-NEXT:    ; def s[8:10]
8476 ; GFX900-NEXT:    ;;#ASMEND
8477 ; GFX900-NEXT:    ;;#ASMSTART
8478 ; GFX900-NEXT:    ; def s[4:6]
8479 ; GFX900-NEXT:    ;;#ASMEND
8480 ; GFX900-NEXT:    s_mov_b32 s8, s10
8481 ; GFX900-NEXT:    s_mov_b32 s9, s6
8482 ; GFX900-NEXT:    s_mov_b32 s10, s4
8483 ; GFX900-NEXT:    s_mov_b32 s11, s4
8484 ; GFX900-NEXT:    ;;#ASMSTART
8485 ; GFX900-NEXT:    ; use s[8:11]
8486 ; GFX900-NEXT:    ;;#ASMEND
8487 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8489 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_2_0_0:
8490 ; GFX90A:       ; %bb.0:
8491 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8492 ; GFX90A-NEXT:    ;;#ASMSTART
8493 ; GFX90A-NEXT:    ; def s[8:10]
8494 ; GFX90A-NEXT:    ;;#ASMEND
8495 ; GFX90A-NEXT:    ;;#ASMSTART
8496 ; GFX90A-NEXT:    ; def s[4:6]
8497 ; GFX90A-NEXT:    ;;#ASMEND
8498 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8499 ; GFX90A-NEXT:    s_mov_b32 s9, s6
8500 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8501 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8502 ; GFX90A-NEXT:    ;;#ASMSTART
8503 ; GFX90A-NEXT:    ; use s[8:11]
8504 ; GFX90A-NEXT:    ;;#ASMEND
8505 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8507 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_2_0_0:
8508 ; GFX940:       ; %bb.0:
8509 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8510 ; GFX940-NEXT:    ;;#ASMSTART
8511 ; GFX940-NEXT:    ; def s[0:2]
8512 ; GFX940-NEXT:    ;;#ASMEND
8513 ; GFX940-NEXT:    ;;#ASMSTART
8514 ; GFX940-NEXT:    ; def s[4:6]
8515 ; GFX940-NEXT:    ;;#ASMEND
8516 ; GFX940-NEXT:    s_mov_b32 s8, s6
8517 ; GFX940-NEXT:    s_mov_b32 s9, s2
8518 ; GFX940-NEXT:    s_mov_b32 s10, s0
8519 ; GFX940-NEXT:    s_mov_b32 s11, s0
8520 ; GFX940-NEXT:    ;;#ASMSTART
8521 ; GFX940-NEXT:    ; use s[8:11]
8522 ; GFX940-NEXT:    ;;#ASMEND
8523 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8524   %vec0 = call <3 x float> asm "; def $0", "=s"()
8525   %vec1 = call <3 x float> asm "; def $0", "=s"()
8526   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 0, i32 0>
8527   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8528   ret void
8531 define void @s_shuffle_v4f32_v3f32__5_3_0_0() {
8532 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_3_0_0:
8533 ; GFX900:       ; %bb.0:
8534 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8535 ; GFX900-NEXT:    ;;#ASMSTART
8536 ; GFX900-NEXT:    ; def s[4:6]
8537 ; GFX900-NEXT:    ;;#ASMEND
8538 ; GFX900-NEXT:    ;;#ASMSTART
8539 ; GFX900-NEXT:    ; def s[12:14]
8540 ; GFX900-NEXT:    ;;#ASMEND
8541 ; GFX900-NEXT:    s_mov_b32 s8, s14
8542 ; GFX900-NEXT:    s_mov_b32 s9, s12
8543 ; GFX900-NEXT:    s_mov_b32 s10, s4
8544 ; GFX900-NEXT:    s_mov_b32 s11, s4
8545 ; GFX900-NEXT:    ;;#ASMSTART
8546 ; GFX900-NEXT:    ; use s[8:11]
8547 ; GFX900-NEXT:    ;;#ASMEND
8548 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8550 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_3_0_0:
8551 ; GFX90A:       ; %bb.0:
8552 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8553 ; GFX90A-NEXT:    ;;#ASMSTART
8554 ; GFX90A-NEXT:    ; def s[4:6]
8555 ; GFX90A-NEXT:    ;;#ASMEND
8556 ; GFX90A-NEXT:    ;;#ASMSTART
8557 ; GFX90A-NEXT:    ; def s[12:14]
8558 ; GFX90A-NEXT:    ;;#ASMEND
8559 ; GFX90A-NEXT:    s_mov_b32 s8, s14
8560 ; GFX90A-NEXT:    s_mov_b32 s9, s12
8561 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8562 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8563 ; GFX90A-NEXT:    ;;#ASMSTART
8564 ; GFX90A-NEXT:    ; use s[8:11]
8565 ; GFX90A-NEXT:    ;;#ASMEND
8566 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8568 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_3_0_0:
8569 ; GFX940:       ; %bb.0:
8570 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8571 ; GFX940-NEXT:    ;;#ASMSTART
8572 ; GFX940-NEXT:    ; def s[0:2]
8573 ; GFX940-NEXT:    ;;#ASMEND
8574 ; GFX940-NEXT:    ;;#ASMSTART
8575 ; GFX940-NEXT:    ; def s[4:6]
8576 ; GFX940-NEXT:    ;;#ASMEND
8577 ; GFX940-NEXT:    s_mov_b32 s8, s6
8578 ; GFX940-NEXT:    s_mov_b32 s9, s4
8579 ; GFX940-NEXT:    s_mov_b32 s10, s0
8580 ; GFX940-NEXT:    s_mov_b32 s11, s0
8581 ; GFX940-NEXT:    ;;#ASMSTART
8582 ; GFX940-NEXT:    ; use s[8:11]
8583 ; GFX940-NEXT:    ;;#ASMEND
8584 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8585   %vec0 = call <3 x float> asm "; def $0", "=s"()
8586   %vec1 = call <3 x float> asm "; def $0", "=s"()
8587   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 0, i32 0>
8588   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8589   ret void
8592 define void @s_shuffle_v4f32_v3f32__5_4_0_0() {
8593 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_4_0_0:
8594 ; GFX900:       ; %bb.0:
8595 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8596 ; GFX900-NEXT:    ;;#ASMSTART
8597 ; GFX900-NEXT:    ; def s[8:10]
8598 ; GFX900-NEXT:    ;;#ASMEND
8599 ; GFX900-NEXT:    ;;#ASMSTART
8600 ; GFX900-NEXT:    ; def s[4:6]
8601 ; GFX900-NEXT:    ;;#ASMEND
8602 ; GFX900-NEXT:    s_mov_b32 s8, s10
8603 ; GFX900-NEXT:    s_mov_b32 s10, s4
8604 ; GFX900-NEXT:    s_mov_b32 s11, s4
8605 ; GFX900-NEXT:    ;;#ASMSTART
8606 ; GFX900-NEXT:    ; use s[8:11]
8607 ; GFX900-NEXT:    ;;#ASMEND
8608 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8610 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_4_0_0:
8611 ; GFX90A:       ; %bb.0:
8612 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8613 ; GFX90A-NEXT:    ;;#ASMSTART
8614 ; GFX90A-NEXT:    ; def s[8:10]
8615 ; GFX90A-NEXT:    ;;#ASMEND
8616 ; GFX90A-NEXT:    ;;#ASMSTART
8617 ; GFX90A-NEXT:    ; def s[4:6]
8618 ; GFX90A-NEXT:    ;;#ASMEND
8619 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8620 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8621 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8622 ; GFX90A-NEXT:    ;;#ASMSTART
8623 ; GFX90A-NEXT:    ; use s[8:11]
8624 ; GFX90A-NEXT:    ;;#ASMEND
8625 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8627 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_4_0_0:
8628 ; GFX940:       ; %bb.0:
8629 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8630 ; GFX940-NEXT:    ;;#ASMSTART
8631 ; GFX940-NEXT:    ; def s[8:10]
8632 ; GFX940-NEXT:    ;;#ASMEND
8633 ; GFX940-NEXT:    ;;#ASMSTART
8634 ; GFX940-NEXT:    ; def s[0:2]
8635 ; GFX940-NEXT:    ;;#ASMEND
8636 ; GFX940-NEXT:    s_mov_b32 s8, s10
8637 ; GFX940-NEXT:    s_mov_b32 s10, s0
8638 ; GFX940-NEXT:    s_mov_b32 s11, s0
8639 ; GFX940-NEXT:    ;;#ASMSTART
8640 ; GFX940-NEXT:    ; use s[8:11]
8641 ; GFX940-NEXT:    ;;#ASMEND
8642 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8643   %vec0 = call <3 x float> asm "; def $0", "=s"()
8644   %vec1 = call <3 x float> asm "; def $0", "=s"()
8645   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 0, i32 0>
8646   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8647   ret void
8650 define void @s_shuffle_v4f32_v3f32__5_5_0_0() {
8651 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_0_0:
8652 ; GFX900:       ; %bb.0:
8653 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8654 ; GFX900-NEXT:    ;;#ASMSTART
8655 ; GFX900-NEXT:    ; def s[8:10]
8656 ; GFX900-NEXT:    ;;#ASMEND
8657 ; GFX900-NEXT:    ;;#ASMSTART
8658 ; GFX900-NEXT:    ; def s[4:6]
8659 ; GFX900-NEXT:    ;;#ASMEND
8660 ; GFX900-NEXT:    s_mov_b32 s8, s10
8661 ; GFX900-NEXT:    s_mov_b32 s9, s10
8662 ; GFX900-NEXT:    s_mov_b32 s10, s4
8663 ; GFX900-NEXT:    s_mov_b32 s11, s4
8664 ; GFX900-NEXT:    ;;#ASMSTART
8665 ; GFX900-NEXT:    ; use s[8:11]
8666 ; GFX900-NEXT:    ;;#ASMEND
8667 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8669 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_0_0:
8670 ; GFX90A:       ; %bb.0:
8671 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8672 ; GFX90A-NEXT:    ;;#ASMSTART
8673 ; GFX90A-NEXT:    ; def s[8:10]
8674 ; GFX90A-NEXT:    ;;#ASMEND
8675 ; GFX90A-NEXT:    ;;#ASMSTART
8676 ; GFX90A-NEXT:    ; def s[4:6]
8677 ; GFX90A-NEXT:    ;;#ASMEND
8678 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8679 ; GFX90A-NEXT:    s_mov_b32 s9, s10
8680 ; GFX90A-NEXT:    s_mov_b32 s10, s4
8681 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8682 ; GFX90A-NEXT:    ;;#ASMSTART
8683 ; GFX90A-NEXT:    ; use s[8:11]
8684 ; GFX90A-NEXT:    ;;#ASMEND
8685 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8687 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_0_0:
8688 ; GFX940:       ; %bb.0:
8689 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8690 ; GFX940-NEXT:    ;;#ASMSTART
8691 ; GFX940-NEXT:    ; def s[0:2]
8692 ; GFX940-NEXT:    ;;#ASMEND
8693 ; GFX940-NEXT:    ;;#ASMSTART
8694 ; GFX940-NEXT:    ; def s[4:6]
8695 ; GFX940-NEXT:    ;;#ASMEND
8696 ; GFX940-NEXT:    s_mov_b32 s8, s6
8697 ; GFX940-NEXT:    s_mov_b32 s9, s6
8698 ; GFX940-NEXT:    s_mov_b32 s10, s0
8699 ; GFX940-NEXT:    s_mov_b32 s11, s0
8700 ; GFX940-NEXT:    ;;#ASMSTART
8701 ; GFX940-NEXT:    ; use s[8:11]
8702 ; GFX940-NEXT:    ;;#ASMEND
8703 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8704   %vec0 = call <3 x float> asm "; def $0", "=s"()
8705   %vec1 = call <3 x float> asm "; def $0", "=s"()
8706   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 0>
8707   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8708   ret void
8711 define void @s_shuffle_v4f32_v3f32__5_5_u_0() {
8712 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_u_0:
8713 ; GFX900:       ; %bb.0:
8714 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8715 ; GFX900-NEXT:    ;;#ASMSTART
8716 ; GFX900-NEXT:    ; def s[8:10]
8717 ; GFX900-NEXT:    ;;#ASMEND
8718 ; GFX900-NEXT:    ;;#ASMSTART
8719 ; GFX900-NEXT:    ; def s[4:6]
8720 ; GFX900-NEXT:    ;;#ASMEND
8721 ; GFX900-NEXT:    s_mov_b32 s8, s10
8722 ; GFX900-NEXT:    s_mov_b32 s9, s10
8723 ; GFX900-NEXT:    s_mov_b32 s11, s4
8724 ; GFX900-NEXT:    ;;#ASMSTART
8725 ; GFX900-NEXT:    ; use s[8:11]
8726 ; GFX900-NEXT:    ;;#ASMEND
8727 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8729 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_u_0:
8730 ; GFX90A:       ; %bb.0:
8731 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8732 ; GFX90A-NEXT:    ;;#ASMSTART
8733 ; GFX90A-NEXT:    ; def s[8:10]
8734 ; GFX90A-NEXT:    ;;#ASMEND
8735 ; GFX90A-NEXT:    ;;#ASMSTART
8736 ; GFX90A-NEXT:    ; def s[4:6]
8737 ; GFX90A-NEXT:    ;;#ASMEND
8738 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8739 ; GFX90A-NEXT:    s_mov_b32 s9, s10
8740 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8741 ; GFX90A-NEXT:    ;;#ASMSTART
8742 ; GFX90A-NEXT:    ; use s[8:11]
8743 ; GFX90A-NEXT:    ;;#ASMEND
8744 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8746 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_u_0:
8747 ; GFX940:       ; %bb.0:
8748 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8749 ; GFX940-NEXT:    ;;#ASMSTART
8750 ; GFX940-NEXT:    ; def s[0:2]
8751 ; GFX940-NEXT:    ;;#ASMEND
8752 ; GFX940-NEXT:    ;;#ASMSTART
8753 ; GFX940-NEXT:    ; def s[4:6]
8754 ; GFX940-NEXT:    ;;#ASMEND
8755 ; GFX940-NEXT:    s_mov_b32 s8, s6
8756 ; GFX940-NEXT:    s_mov_b32 s9, s6
8757 ; GFX940-NEXT:    s_mov_b32 s11, s0
8758 ; GFX940-NEXT:    ;;#ASMSTART
8759 ; GFX940-NEXT:    ; use s[8:11]
8760 ; GFX940-NEXT:    ;;#ASMEND
8761 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8762   %vec0 = call <3 x float> asm "; def $0", "=s"()
8763   %vec1 = call <3 x float> asm "; def $0", "=s"()
8764   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>
8765   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8766   ret void
8769 define void @s_shuffle_v4f32_v3f32__5_5_1_0() {
8770 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_1_0:
8771 ; GFX900:       ; %bb.0:
8772 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8773 ; GFX900-NEXT:    ;;#ASMSTART
8774 ; GFX900-NEXT:    ; def s[8:10]
8775 ; GFX900-NEXT:    ;;#ASMEND
8776 ; GFX900-NEXT:    ;;#ASMSTART
8777 ; GFX900-NEXT:    ; def s[4:6]
8778 ; GFX900-NEXT:    ;;#ASMEND
8779 ; GFX900-NEXT:    s_mov_b32 s8, s10
8780 ; GFX900-NEXT:    s_mov_b32 s9, s10
8781 ; GFX900-NEXT:    s_mov_b32 s10, s5
8782 ; GFX900-NEXT:    s_mov_b32 s11, s4
8783 ; GFX900-NEXT:    ;;#ASMSTART
8784 ; GFX900-NEXT:    ; use s[8:11]
8785 ; GFX900-NEXT:    ;;#ASMEND
8786 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8788 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_1_0:
8789 ; GFX90A:       ; %bb.0:
8790 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8791 ; GFX90A-NEXT:    ;;#ASMSTART
8792 ; GFX90A-NEXT:    ; def s[8:10]
8793 ; GFX90A-NEXT:    ;;#ASMEND
8794 ; GFX90A-NEXT:    ;;#ASMSTART
8795 ; GFX90A-NEXT:    ; def s[4:6]
8796 ; GFX90A-NEXT:    ;;#ASMEND
8797 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8798 ; GFX90A-NEXT:    s_mov_b32 s9, s10
8799 ; GFX90A-NEXT:    s_mov_b32 s10, s5
8800 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8801 ; GFX90A-NEXT:    ;;#ASMSTART
8802 ; GFX90A-NEXT:    ; use s[8:11]
8803 ; GFX90A-NEXT:    ;;#ASMEND
8804 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8806 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_1_0:
8807 ; GFX940:       ; %bb.0:
8808 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8809 ; GFX940-NEXT:    ;;#ASMSTART
8810 ; GFX940-NEXT:    ; def s[0:2]
8811 ; GFX940-NEXT:    ;;#ASMEND
8812 ; GFX940-NEXT:    ;;#ASMSTART
8813 ; GFX940-NEXT:    ; def s[4:6]
8814 ; GFX940-NEXT:    ;;#ASMEND
8815 ; GFX940-NEXT:    s_mov_b32 s8, s6
8816 ; GFX940-NEXT:    s_mov_b32 s9, s6
8817 ; GFX940-NEXT:    s_mov_b32 s10, s1
8818 ; GFX940-NEXT:    s_mov_b32 s11, s0
8819 ; GFX940-NEXT:    ;;#ASMSTART
8820 ; GFX940-NEXT:    ; use s[8:11]
8821 ; GFX940-NEXT:    ;;#ASMEND
8822 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8823   %vec0 = call <3 x float> asm "; def $0", "=s"()
8824   %vec1 = call <3 x float> asm "; def $0", "=s"()
8825   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 0>
8826   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8827   ret void
8830 define void @s_shuffle_v4f32_v3f32__5_5_2_0() {
8831 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_2_0:
8832 ; GFX900:       ; %bb.0:
8833 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8834 ; GFX900-NEXT:    ;;#ASMSTART
8835 ; GFX900-NEXT:    ; def s[8:10]
8836 ; GFX900-NEXT:    ;;#ASMEND
8837 ; GFX900-NEXT:    ;;#ASMSTART
8838 ; GFX900-NEXT:    ; def s[4:6]
8839 ; GFX900-NEXT:    ;;#ASMEND
8840 ; GFX900-NEXT:    s_mov_b32 s8, s10
8841 ; GFX900-NEXT:    s_mov_b32 s9, s10
8842 ; GFX900-NEXT:    s_mov_b32 s10, s6
8843 ; GFX900-NEXT:    s_mov_b32 s11, s4
8844 ; GFX900-NEXT:    ;;#ASMSTART
8845 ; GFX900-NEXT:    ; use s[8:11]
8846 ; GFX900-NEXT:    ;;#ASMEND
8847 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8849 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_2_0:
8850 ; GFX90A:       ; %bb.0:
8851 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8852 ; GFX90A-NEXT:    ;;#ASMSTART
8853 ; GFX90A-NEXT:    ; def s[8:10]
8854 ; GFX90A-NEXT:    ;;#ASMEND
8855 ; GFX90A-NEXT:    ;;#ASMSTART
8856 ; GFX90A-NEXT:    ; def s[4:6]
8857 ; GFX90A-NEXT:    ;;#ASMEND
8858 ; GFX90A-NEXT:    s_mov_b32 s8, s10
8859 ; GFX90A-NEXT:    s_mov_b32 s9, s10
8860 ; GFX90A-NEXT:    s_mov_b32 s10, s6
8861 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8862 ; GFX90A-NEXT:    ;;#ASMSTART
8863 ; GFX90A-NEXT:    ; use s[8:11]
8864 ; GFX90A-NEXT:    ;;#ASMEND
8865 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8867 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_2_0:
8868 ; GFX940:       ; %bb.0:
8869 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8870 ; GFX940-NEXT:    ;;#ASMSTART
8871 ; GFX940-NEXT:    ; def s[0:2]
8872 ; GFX940-NEXT:    ;;#ASMEND
8873 ; GFX940-NEXT:    ;;#ASMSTART
8874 ; GFX940-NEXT:    ; def s[4:6]
8875 ; GFX940-NEXT:    ;;#ASMEND
8876 ; GFX940-NEXT:    s_mov_b32 s8, s6
8877 ; GFX940-NEXT:    s_mov_b32 s9, s6
8878 ; GFX940-NEXT:    s_mov_b32 s10, s2
8879 ; GFX940-NEXT:    s_mov_b32 s11, s0
8880 ; GFX940-NEXT:    ;;#ASMSTART
8881 ; GFX940-NEXT:    ; use s[8:11]
8882 ; GFX940-NEXT:    ;;#ASMEND
8883 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8884   %vec0 = call <3 x float> asm "; def $0", "=s"()
8885   %vec1 = call <3 x float> asm "; def $0", "=s"()
8886   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 0>
8887   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8888   ret void
8891 define void @s_shuffle_v4f32_v3f32__5_5_3_0() {
8892 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_3_0:
8893 ; GFX900:       ; %bb.0:
8894 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8895 ; GFX900-NEXT:    ;;#ASMSTART
8896 ; GFX900-NEXT:    ; def s[4:6]
8897 ; GFX900-NEXT:    ;;#ASMEND
8898 ; GFX900-NEXT:    ;;#ASMSTART
8899 ; GFX900-NEXT:    ; def s[12:14]
8900 ; GFX900-NEXT:    ;;#ASMEND
8901 ; GFX900-NEXT:    s_mov_b32 s8, s14
8902 ; GFX900-NEXT:    s_mov_b32 s9, s14
8903 ; GFX900-NEXT:    s_mov_b32 s10, s12
8904 ; GFX900-NEXT:    s_mov_b32 s11, s4
8905 ; GFX900-NEXT:    ;;#ASMSTART
8906 ; GFX900-NEXT:    ; use s[8:11]
8907 ; GFX900-NEXT:    ;;#ASMEND
8908 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8910 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_3_0:
8911 ; GFX90A:       ; %bb.0:
8912 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8913 ; GFX90A-NEXT:    ;;#ASMSTART
8914 ; GFX90A-NEXT:    ; def s[4:6]
8915 ; GFX90A-NEXT:    ;;#ASMEND
8916 ; GFX90A-NEXT:    ;;#ASMSTART
8917 ; GFX90A-NEXT:    ; def s[12:14]
8918 ; GFX90A-NEXT:    ;;#ASMEND
8919 ; GFX90A-NEXT:    s_mov_b32 s8, s14
8920 ; GFX90A-NEXT:    s_mov_b32 s9, s14
8921 ; GFX90A-NEXT:    s_mov_b32 s10, s12
8922 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8923 ; GFX90A-NEXT:    ;;#ASMSTART
8924 ; GFX90A-NEXT:    ; use s[8:11]
8925 ; GFX90A-NEXT:    ;;#ASMEND
8926 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8928 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_3_0:
8929 ; GFX940:       ; %bb.0:
8930 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8931 ; GFX940-NEXT:    ;;#ASMSTART
8932 ; GFX940-NEXT:    ; def s[0:2]
8933 ; GFX940-NEXT:    ;;#ASMEND
8934 ; GFX940-NEXT:    ;;#ASMSTART
8935 ; GFX940-NEXT:    ; def s[4:6]
8936 ; GFX940-NEXT:    ;;#ASMEND
8937 ; GFX940-NEXT:    s_mov_b32 s8, s6
8938 ; GFX940-NEXT:    s_mov_b32 s9, s6
8939 ; GFX940-NEXT:    s_mov_b32 s10, s4
8940 ; GFX940-NEXT:    s_mov_b32 s11, s0
8941 ; GFX940-NEXT:    ;;#ASMSTART
8942 ; GFX940-NEXT:    ; use s[8:11]
8943 ; GFX940-NEXT:    ;;#ASMEND
8944 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
8945   %vec0 = call <3 x float> asm "; def $0", "=s"()
8946   %vec1 = call <3 x float> asm "; def $0", "=s"()
8947   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 0>
8948   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
8949   ret void
8952 define void @s_shuffle_v4f32_v3f32__5_5_4_0() {
8953 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_4_0:
8954 ; GFX900:       ; %bb.0:
8955 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8956 ; GFX900-NEXT:    ;;#ASMSTART
8957 ; GFX900-NEXT:    ; def s[4:6]
8958 ; GFX900-NEXT:    ;;#ASMEND
8959 ; GFX900-NEXT:    ;;#ASMSTART
8960 ; GFX900-NEXT:    ; def s[12:14]
8961 ; GFX900-NEXT:    ;;#ASMEND
8962 ; GFX900-NEXT:    s_mov_b32 s8, s14
8963 ; GFX900-NEXT:    s_mov_b32 s9, s14
8964 ; GFX900-NEXT:    s_mov_b32 s10, s13
8965 ; GFX900-NEXT:    s_mov_b32 s11, s4
8966 ; GFX900-NEXT:    ;;#ASMSTART
8967 ; GFX900-NEXT:    ; use s[8:11]
8968 ; GFX900-NEXT:    ;;#ASMEND
8969 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
8971 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_4_0:
8972 ; GFX90A:       ; %bb.0:
8973 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8974 ; GFX90A-NEXT:    ;;#ASMSTART
8975 ; GFX90A-NEXT:    ; def s[4:6]
8976 ; GFX90A-NEXT:    ;;#ASMEND
8977 ; GFX90A-NEXT:    ;;#ASMSTART
8978 ; GFX90A-NEXT:    ; def s[12:14]
8979 ; GFX90A-NEXT:    ;;#ASMEND
8980 ; GFX90A-NEXT:    s_mov_b32 s8, s14
8981 ; GFX90A-NEXT:    s_mov_b32 s9, s14
8982 ; GFX90A-NEXT:    s_mov_b32 s10, s13
8983 ; GFX90A-NEXT:    s_mov_b32 s11, s4
8984 ; GFX90A-NEXT:    ;;#ASMSTART
8985 ; GFX90A-NEXT:    ; use s[8:11]
8986 ; GFX90A-NEXT:    ;;#ASMEND
8987 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8989 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_4_0:
8990 ; GFX940:       ; %bb.0:
8991 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8992 ; GFX940-NEXT:    ;;#ASMSTART
8993 ; GFX940-NEXT:    ; def s[0:2]
8994 ; GFX940-NEXT:    ;;#ASMEND
8995 ; GFX940-NEXT:    ;;#ASMSTART
8996 ; GFX940-NEXT:    ; def s[4:6]
8997 ; GFX940-NEXT:    ;;#ASMEND
8998 ; GFX940-NEXT:    s_mov_b32 s8, s6
8999 ; GFX940-NEXT:    s_mov_b32 s9, s6
9000 ; GFX940-NEXT:    s_mov_b32 s10, s5
9001 ; GFX940-NEXT:    s_mov_b32 s11, s0
9002 ; GFX940-NEXT:    ;;#ASMSTART
9003 ; GFX940-NEXT:    ; use s[8:11]
9004 ; GFX940-NEXT:    ;;#ASMEND
9005 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9006   %vec0 = call <3 x float> asm "; def $0", "=s"()
9007   %vec1 = call <3 x float> asm "; def $0", "=s"()
9008   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 0>
9009   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9010   ret void
9013 define void @s_shuffle_v4f32_v3f32__u_1_1_1() {
9014 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__u_1_1_1:
9015 ; GFX9:       ; %bb.0:
9016 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9017 ; GFX9-NEXT:    ;;#ASMSTART
9018 ; GFX9-NEXT:    ; def s[8:10]
9019 ; GFX9-NEXT:    ;;#ASMEND
9020 ; GFX9-NEXT:    s_mov_b32 s10, s9
9021 ; GFX9-NEXT:    s_mov_b32 s11, s9
9022 ; GFX9-NEXT:    ;;#ASMSTART
9023 ; GFX9-NEXT:    ; use s[8:11]
9024 ; GFX9-NEXT:    ;;#ASMEND
9025 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9026   %vec0 = call <3 x float> asm "; def $0", "=s"()
9027   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>
9028   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9029   ret void
9032 define void @s_shuffle_v4f32_v3f32__0_1_1_1() {
9033 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__0_1_1_1:
9034 ; GFX9:       ; %bb.0:
9035 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9036 ; GFX9-NEXT:    ;;#ASMSTART
9037 ; GFX9-NEXT:    ; def s[8:10]
9038 ; GFX9-NEXT:    ;;#ASMEND
9039 ; GFX9-NEXT:    s_mov_b32 s10, s9
9040 ; GFX9-NEXT:    s_mov_b32 s11, s9
9041 ; GFX9-NEXT:    ;;#ASMSTART
9042 ; GFX9-NEXT:    ; use s[8:11]
9043 ; GFX9-NEXT:    ;;#ASMEND
9044 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9045   %vec0 = call <3 x float> asm "; def $0", "=s"()
9046   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
9047   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9048   ret void
9051 define void @s_shuffle_v4f32_v3f32__1_1_1_1() {
9052 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__1_1_1_1:
9053 ; GFX9:       ; %bb.0:
9054 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9055 ; GFX9-NEXT:    ;;#ASMSTART
9056 ; GFX9-NEXT:    ; def s[8:10]
9057 ; GFX9-NEXT:    ;;#ASMEND
9058 ; GFX9-NEXT:    s_mov_b32 s8, s9
9059 ; GFX9-NEXT:    s_mov_b32 s10, s9
9060 ; GFX9-NEXT:    s_mov_b32 s11, s9
9061 ; GFX9-NEXT:    ;;#ASMSTART
9062 ; GFX9-NEXT:    ; use s[8:11]
9063 ; GFX9-NEXT:    ;;#ASMEND
9064 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9065   %vec0 = call <3 x float> asm "; def $0", "=s"()
9066   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
9067   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9068   ret void
9071 define void @s_shuffle_v4f32_v3f32__2_1_1_1() {
9072 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__2_1_1_1:
9073 ; GFX9:       ; %bb.0:
9074 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9075 ; GFX9-NEXT:    ;;#ASMSTART
9076 ; GFX9-NEXT:    ; def s[8:10]
9077 ; GFX9-NEXT:    ;;#ASMEND
9078 ; GFX9-NEXT:    s_mov_b32 s8, s10
9079 ; GFX9-NEXT:    s_mov_b32 s10, s9
9080 ; GFX9-NEXT:    s_mov_b32 s11, s9
9081 ; GFX9-NEXT:    ;;#ASMSTART
9082 ; GFX9-NEXT:    ; use s[8:11]
9083 ; GFX9-NEXT:    ;;#ASMEND
9084 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9085   %vec0 = call <3 x float> asm "; def $0", "=s"()
9086   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>
9087   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9088   ret void
9091 define void @s_shuffle_v4f32_v3f32__3_1_1_1() {
9092 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__3_1_1_1:
9093 ; GFX9:       ; %bb.0:
9094 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9095 ; GFX9-NEXT:    ;;#ASMSTART
9096 ; GFX9-NEXT:    ; def s[8:10]
9097 ; GFX9-NEXT:    ;;#ASMEND
9098 ; GFX9-NEXT:    s_mov_b32 s10, s9
9099 ; GFX9-NEXT:    s_mov_b32 s11, s9
9100 ; GFX9-NEXT:    ;;#ASMSTART
9101 ; GFX9-NEXT:    ; use s[8:11]
9102 ; GFX9-NEXT:    ;;#ASMEND
9103 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9104   %vec0 = call <3 x float> asm "; def $0", "=s"()
9105   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>
9106   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9107   ret void
9110 define void @s_shuffle_v4f32_v3f32__4_1_1_1() {
9111 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__4_1_1_1:
9112 ; GFX900:       ; %bb.0:
9113 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9114 ; GFX900-NEXT:    ;;#ASMSTART
9115 ; GFX900-NEXT:    ; def s[8:10]
9116 ; GFX900-NEXT:    ;;#ASMEND
9117 ; GFX900-NEXT:    ;;#ASMSTART
9118 ; GFX900-NEXT:    ; def s[4:6]
9119 ; GFX900-NEXT:    ;;#ASMEND
9120 ; GFX900-NEXT:    s_mov_b32 s8, s5
9121 ; GFX900-NEXT:    s_mov_b32 s10, s9
9122 ; GFX900-NEXT:    s_mov_b32 s11, s9
9123 ; GFX900-NEXT:    ;;#ASMSTART
9124 ; GFX900-NEXT:    ; use s[8:11]
9125 ; GFX900-NEXT:    ;;#ASMEND
9126 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9128 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__4_1_1_1:
9129 ; GFX90A:       ; %bb.0:
9130 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9131 ; GFX90A-NEXT:    ;;#ASMSTART
9132 ; GFX90A-NEXT:    ; def s[8:10]
9133 ; GFX90A-NEXT:    ;;#ASMEND
9134 ; GFX90A-NEXT:    ;;#ASMSTART
9135 ; GFX90A-NEXT:    ; def s[4:6]
9136 ; GFX90A-NEXT:    ;;#ASMEND
9137 ; GFX90A-NEXT:    s_mov_b32 s8, s5
9138 ; GFX90A-NEXT:    s_mov_b32 s10, s9
9139 ; GFX90A-NEXT:    s_mov_b32 s11, s9
9140 ; GFX90A-NEXT:    ;;#ASMSTART
9141 ; GFX90A-NEXT:    ; use s[8:11]
9142 ; GFX90A-NEXT:    ;;#ASMEND
9143 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9145 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__4_1_1_1:
9146 ; GFX940:       ; %bb.0:
9147 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9148 ; GFX940-NEXT:    ;;#ASMSTART
9149 ; GFX940-NEXT:    ; def s[8:10]
9150 ; GFX940-NEXT:    ;;#ASMEND
9151 ; GFX940-NEXT:    ;;#ASMSTART
9152 ; GFX940-NEXT:    ; def s[0:2]
9153 ; GFX940-NEXT:    ;;#ASMEND
9154 ; GFX940-NEXT:    s_mov_b32 s8, s1
9155 ; GFX940-NEXT:    s_mov_b32 s10, s9
9156 ; GFX940-NEXT:    s_mov_b32 s11, s9
9157 ; GFX940-NEXT:    ;;#ASMSTART
9158 ; GFX940-NEXT:    ; use s[8:11]
9159 ; GFX940-NEXT:    ;;#ASMEND
9160 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9161   %vec0 = call <3 x float> asm "; def $0", "=s"()
9162   %vec1 = call <3 x float> asm "; def $0", "=s"()
9163   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 1, i32 1, i32 1>
9164   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9165   ret void
9168 define void @s_shuffle_v4f32_v3f32__5_1_1_1() {
9169 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_1_1_1:
9170 ; GFX900:       ; %bb.0:
9171 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9172 ; GFX900-NEXT:    ;;#ASMSTART
9173 ; GFX900-NEXT:    ; def s[8:10]
9174 ; GFX900-NEXT:    ;;#ASMEND
9175 ; GFX900-NEXT:    ;;#ASMSTART
9176 ; GFX900-NEXT:    ; def s[4:6]
9177 ; GFX900-NEXT:    ;;#ASMEND
9178 ; GFX900-NEXT:    s_mov_b32 s8, s6
9179 ; GFX900-NEXT:    s_mov_b32 s10, s9
9180 ; GFX900-NEXT:    s_mov_b32 s11, s9
9181 ; GFX900-NEXT:    ;;#ASMSTART
9182 ; GFX900-NEXT:    ; use s[8:11]
9183 ; GFX900-NEXT:    ;;#ASMEND
9184 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9186 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_1_1_1:
9187 ; GFX90A:       ; %bb.0:
9188 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9189 ; GFX90A-NEXT:    ;;#ASMSTART
9190 ; GFX90A-NEXT:    ; def s[8:10]
9191 ; GFX90A-NEXT:    ;;#ASMEND
9192 ; GFX90A-NEXT:    ;;#ASMSTART
9193 ; GFX90A-NEXT:    ; def s[4:6]
9194 ; GFX90A-NEXT:    ;;#ASMEND
9195 ; GFX90A-NEXT:    s_mov_b32 s8, s6
9196 ; GFX90A-NEXT:    s_mov_b32 s10, s9
9197 ; GFX90A-NEXT:    s_mov_b32 s11, s9
9198 ; GFX90A-NEXT:    ;;#ASMSTART
9199 ; GFX90A-NEXT:    ; use s[8:11]
9200 ; GFX90A-NEXT:    ;;#ASMEND
9201 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9203 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_1_1_1:
9204 ; GFX940:       ; %bb.0:
9205 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9206 ; GFX940-NEXT:    ;;#ASMSTART
9207 ; GFX940-NEXT:    ; def s[8:10]
9208 ; GFX940-NEXT:    ;;#ASMEND
9209 ; GFX940-NEXT:    ;;#ASMSTART
9210 ; GFX940-NEXT:    ; def s[0:2]
9211 ; GFX940-NEXT:    ;;#ASMEND
9212 ; GFX940-NEXT:    s_mov_b32 s8, s2
9213 ; GFX940-NEXT:    s_mov_b32 s10, s9
9214 ; GFX940-NEXT:    s_mov_b32 s11, s9
9215 ; GFX940-NEXT:    ;;#ASMSTART
9216 ; GFX940-NEXT:    ; use s[8:11]
9217 ; GFX940-NEXT:    ;;#ASMEND
9218 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9219   %vec0 = call <3 x float> asm "; def $0", "=s"()
9220   %vec1 = call <3 x float> asm "; def $0", "=s"()
9221   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>
9222   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9223   ret void
9226 define void @s_shuffle_v4f32_v3f32__5_u_1_1() {
9227 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_u_1_1:
9228 ; GFX900:       ; %bb.0:
9229 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9230 ; GFX900-NEXT:    ;;#ASMSTART
9231 ; GFX900-NEXT:    ; def s[8:10]
9232 ; GFX900-NEXT:    ;;#ASMEND
9233 ; GFX900-NEXT:    ;;#ASMSTART
9234 ; GFX900-NEXT:    ; def s[4:6]
9235 ; GFX900-NEXT:    ;;#ASMEND
9236 ; GFX900-NEXT:    s_mov_b32 s8, s10
9237 ; GFX900-NEXT:    s_mov_b32 s10, s5
9238 ; GFX900-NEXT:    s_mov_b32 s11, s5
9239 ; GFX900-NEXT:    ;;#ASMSTART
9240 ; GFX900-NEXT:    ; use s[8:11]
9241 ; GFX900-NEXT:    ;;#ASMEND
9242 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9244 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_u_1_1:
9245 ; GFX90A:       ; %bb.0:
9246 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9247 ; GFX90A-NEXT:    ;;#ASMSTART
9248 ; GFX90A-NEXT:    ; def s[8:10]
9249 ; GFX90A-NEXT:    ;;#ASMEND
9250 ; GFX90A-NEXT:    ;;#ASMSTART
9251 ; GFX90A-NEXT:    ; def s[4:6]
9252 ; GFX90A-NEXT:    ;;#ASMEND
9253 ; GFX90A-NEXT:    s_mov_b32 s8, s10
9254 ; GFX90A-NEXT:    s_mov_b32 s10, s5
9255 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9256 ; GFX90A-NEXT:    ;;#ASMSTART
9257 ; GFX90A-NEXT:    ; use s[8:11]
9258 ; GFX90A-NEXT:    ;;#ASMEND
9259 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9261 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_u_1_1:
9262 ; GFX940:       ; %bb.0:
9263 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9264 ; GFX940-NEXT:    ;;#ASMSTART
9265 ; GFX940-NEXT:    ; def s[0:2]
9266 ; GFX940-NEXT:    ;;#ASMEND
9267 ; GFX940-NEXT:    ;;#ASMSTART
9268 ; GFX940-NEXT:    ; def s[4:6]
9269 ; GFX940-NEXT:    ;;#ASMEND
9270 ; GFX940-NEXT:    s_mov_b32 s8, s6
9271 ; GFX940-NEXT:    s_mov_b32 s10, s1
9272 ; GFX940-NEXT:    s_mov_b32 s11, s1
9273 ; GFX940-NEXT:    ;;#ASMSTART
9274 ; GFX940-NEXT:    ; use s[8:11]
9275 ; GFX940-NEXT:    ;;#ASMEND
9276 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9277   %vec0 = call <3 x float> asm "; def $0", "=s"()
9278   %vec1 = call <3 x float> asm "; def $0", "=s"()
9279   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>
9280   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9281   ret void
9284 define void @s_shuffle_v4f32_v3f32__5_0_1_1() {
9285 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_0_1_1:
9286 ; GFX900:       ; %bb.0:
9287 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9288 ; GFX900-NEXT:    ;;#ASMSTART
9289 ; GFX900-NEXT:    ; def s[8:10]
9290 ; GFX900-NEXT:    ;;#ASMEND
9291 ; GFX900-NEXT:    ;;#ASMSTART
9292 ; GFX900-NEXT:    ; def s[4:6]
9293 ; GFX900-NEXT:    ;;#ASMEND
9294 ; GFX900-NEXT:    s_mov_b32 s8, s10
9295 ; GFX900-NEXT:    s_mov_b32 s9, s4
9296 ; GFX900-NEXT:    s_mov_b32 s10, s5
9297 ; GFX900-NEXT:    s_mov_b32 s11, s5
9298 ; GFX900-NEXT:    ;;#ASMSTART
9299 ; GFX900-NEXT:    ; use s[8:11]
9300 ; GFX900-NEXT:    ;;#ASMEND
9301 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9303 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_0_1_1:
9304 ; GFX90A:       ; %bb.0:
9305 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9306 ; GFX90A-NEXT:    ;;#ASMSTART
9307 ; GFX90A-NEXT:    ; def s[8:10]
9308 ; GFX90A-NEXT:    ;;#ASMEND
9309 ; GFX90A-NEXT:    ;;#ASMSTART
9310 ; GFX90A-NEXT:    ; def s[4:6]
9311 ; GFX90A-NEXT:    ;;#ASMEND
9312 ; GFX90A-NEXT:    s_mov_b32 s8, s10
9313 ; GFX90A-NEXT:    s_mov_b32 s9, s4
9314 ; GFX90A-NEXT:    s_mov_b32 s10, s5
9315 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9316 ; GFX90A-NEXT:    ;;#ASMSTART
9317 ; GFX90A-NEXT:    ; use s[8:11]
9318 ; GFX90A-NEXT:    ;;#ASMEND
9319 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9321 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_0_1_1:
9322 ; GFX940:       ; %bb.0:
9323 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9324 ; GFX940-NEXT:    ;;#ASMSTART
9325 ; GFX940-NEXT:    ; def s[0:2]
9326 ; GFX940-NEXT:    ;;#ASMEND
9327 ; GFX940-NEXT:    ;;#ASMSTART
9328 ; GFX940-NEXT:    ; def s[4:6]
9329 ; GFX940-NEXT:    ;;#ASMEND
9330 ; GFX940-NEXT:    s_mov_b32 s8, s6
9331 ; GFX940-NEXT:    s_mov_b32 s9, s0
9332 ; GFX940-NEXT:    s_mov_b32 s10, s1
9333 ; GFX940-NEXT:    s_mov_b32 s11, s1
9334 ; GFX940-NEXT:    ;;#ASMSTART
9335 ; GFX940-NEXT:    ; use s[8:11]
9336 ; GFX940-NEXT:    ;;#ASMEND
9337 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9338   %vec0 = call <3 x float> asm "; def $0", "=s"()
9339   %vec1 = call <3 x float> asm "; def $0", "=s"()
9340   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 1, i32 1>
9341   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9342   ret void
9345 define void @s_shuffle_v4f32_v3f32__5_2_1_1() {
9346 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_2_1_1:
9347 ; GFX900:       ; %bb.0:
9348 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9349 ; GFX900-NEXT:    ;;#ASMSTART
9350 ; GFX900-NEXT:    ; def s[8:10]
9351 ; GFX900-NEXT:    ;;#ASMEND
9352 ; GFX900-NEXT:    ;;#ASMSTART
9353 ; GFX900-NEXT:    ; def s[4:6]
9354 ; GFX900-NEXT:    ;;#ASMEND
9355 ; GFX900-NEXT:    s_mov_b32 s8, s10
9356 ; GFX900-NEXT:    s_mov_b32 s9, s6
9357 ; GFX900-NEXT:    s_mov_b32 s10, s5
9358 ; GFX900-NEXT:    s_mov_b32 s11, s5
9359 ; GFX900-NEXT:    ;;#ASMSTART
9360 ; GFX900-NEXT:    ; use s[8:11]
9361 ; GFX900-NEXT:    ;;#ASMEND
9362 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9364 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_2_1_1:
9365 ; GFX90A:       ; %bb.0:
9366 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9367 ; GFX90A-NEXT:    ;;#ASMSTART
9368 ; GFX90A-NEXT:    ; def s[8:10]
9369 ; GFX90A-NEXT:    ;;#ASMEND
9370 ; GFX90A-NEXT:    ;;#ASMSTART
9371 ; GFX90A-NEXT:    ; def s[4:6]
9372 ; GFX90A-NEXT:    ;;#ASMEND
9373 ; GFX90A-NEXT:    s_mov_b32 s8, s10
9374 ; GFX90A-NEXT:    s_mov_b32 s9, s6
9375 ; GFX90A-NEXT:    s_mov_b32 s10, s5
9376 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9377 ; GFX90A-NEXT:    ;;#ASMSTART
9378 ; GFX90A-NEXT:    ; use s[8:11]
9379 ; GFX90A-NEXT:    ;;#ASMEND
9380 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9382 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_2_1_1:
9383 ; GFX940:       ; %bb.0:
9384 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9385 ; GFX940-NEXT:    ;;#ASMSTART
9386 ; GFX940-NEXT:    ; def s[0:2]
9387 ; GFX940-NEXT:    ;;#ASMEND
9388 ; GFX940-NEXT:    ;;#ASMSTART
9389 ; GFX940-NEXT:    ; def s[4:6]
9390 ; GFX940-NEXT:    ;;#ASMEND
9391 ; GFX940-NEXT:    s_mov_b32 s8, s6
9392 ; GFX940-NEXT:    s_mov_b32 s9, s2
9393 ; GFX940-NEXT:    s_mov_b32 s10, s1
9394 ; GFX940-NEXT:    s_mov_b32 s11, s1
9395 ; GFX940-NEXT:    ;;#ASMSTART
9396 ; GFX940-NEXT:    ; use s[8:11]
9397 ; GFX940-NEXT:    ;;#ASMEND
9398 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9399   %vec0 = call <3 x float> asm "; def $0", "=s"()
9400   %vec1 = call <3 x float> asm "; def $0", "=s"()
9401   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 1, i32 1>
9402   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9403   ret void
9406 define void @s_shuffle_v4f32_v3f32__5_3_1_1() {
9407 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_3_1_1:
9408 ; GFX900:       ; %bb.0:
9409 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9410 ; GFX900-NEXT:    ;;#ASMSTART
9411 ; GFX900-NEXT:    ; def s[4:6]
9412 ; GFX900-NEXT:    ;;#ASMEND
9413 ; GFX900-NEXT:    ;;#ASMSTART
9414 ; GFX900-NEXT:    ; def s[12:14]
9415 ; GFX900-NEXT:    ;;#ASMEND
9416 ; GFX900-NEXT:    s_mov_b32 s8, s14
9417 ; GFX900-NEXT:    s_mov_b32 s9, s12
9418 ; GFX900-NEXT:    s_mov_b32 s10, s5
9419 ; GFX900-NEXT:    s_mov_b32 s11, s5
9420 ; GFX900-NEXT:    ;;#ASMSTART
9421 ; GFX900-NEXT:    ; use s[8:11]
9422 ; GFX900-NEXT:    ;;#ASMEND
9423 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9425 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_3_1_1:
9426 ; GFX90A:       ; %bb.0:
9427 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9428 ; GFX90A-NEXT:    ;;#ASMSTART
9429 ; GFX90A-NEXT:    ; def s[4:6]
9430 ; GFX90A-NEXT:    ;;#ASMEND
9431 ; GFX90A-NEXT:    ;;#ASMSTART
9432 ; GFX90A-NEXT:    ; def s[12:14]
9433 ; GFX90A-NEXT:    ;;#ASMEND
9434 ; GFX90A-NEXT:    s_mov_b32 s8, s14
9435 ; GFX90A-NEXT:    s_mov_b32 s9, s12
9436 ; GFX90A-NEXT:    s_mov_b32 s10, s5
9437 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9438 ; GFX90A-NEXT:    ;;#ASMSTART
9439 ; GFX90A-NEXT:    ; use s[8:11]
9440 ; GFX90A-NEXT:    ;;#ASMEND
9441 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9443 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_3_1_1:
9444 ; GFX940:       ; %bb.0:
9445 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9446 ; GFX940-NEXT:    ;;#ASMSTART
9447 ; GFX940-NEXT:    ; def s[0:2]
9448 ; GFX940-NEXT:    ;;#ASMEND
9449 ; GFX940-NEXT:    ;;#ASMSTART
9450 ; GFX940-NEXT:    ; def s[4:6]
9451 ; GFX940-NEXT:    ;;#ASMEND
9452 ; GFX940-NEXT:    s_mov_b32 s8, s6
9453 ; GFX940-NEXT:    s_mov_b32 s9, s4
9454 ; GFX940-NEXT:    s_mov_b32 s10, s1
9455 ; GFX940-NEXT:    s_mov_b32 s11, s1
9456 ; GFX940-NEXT:    ;;#ASMSTART
9457 ; GFX940-NEXT:    ; use s[8:11]
9458 ; GFX940-NEXT:    ;;#ASMEND
9459 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9460   %vec0 = call <3 x float> asm "; def $0", "=s"()
9461   %vec1 = call <3 x float> asm "; def $0", "=s"()
9462   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 1, i32 1>
9463   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9464   ret void
9467 define void @s_shuffle_v4f32_v3f32__5_4_1_1() {
9468 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_4_1_1:
9469 ; GFX900:       ; %bb.0:
9470 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9471 ; GFX900-NEXT:    ;;#ASMSTART
9472 ; GFX900-NEXT:    ; def s[8:10]
9473 ; GFX900-NEXT:    ;;#ASMEND
9474 ; GFX900-NEXT:    ;;#ASMSTART
9475 ; GFX900-NEXT:    ; def s[4:6]
9476 ; GFX900-NEXT:    ;;#ASMEND
9477 ; GFX900-NEXT:    s_mov_b32 s8, s10
9478 ; GFX900-NEXT:    s_mov_b32 s10, s5
9479 ; GFX900-NEXT:    s_mov_b32 s11, s5
9480 ; GFX900-NEXT:    ;;#ASMSTART
9481 ; GFX900-NEXT:    ; use s[8:11]
9482 ; GFX900-NEXT:    ;;#ASMEND
9483 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9485 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_4_1_1:
9486 ; GFX90A:       ; %bb.0:
9487 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9488 ; GFX90A-NEXT:    ;;#ASMSTART
9489 ; GFX90A-NEXT:    ; def s[8:10]
9490 ; GFX90A-NEXT:    ;;#ASMEND
9491 ; GFX90A-NEXT:    ;;#ASMSTART
9492 ; GFX90A-NEXT:    ; def s[4:6]
9493 ; GFX90A-NEXT:    ;;#ASMEND
9494 ; GFX90A-NEXT:    s_mov_b32 s8, s10
9495 ; GFX90A-NEXT:    s_mov_b32 s10, s5
9496 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9497 ; GFX90A-NEXT:    ;;#ASMSTART
9498 ; GFX90A-NEXT:    ; use s[8:11]
9499 ; GFX90A-NEXT:    ;;#ASMEND
9500 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9502 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_4_1_1:
9503 ; GFX940:       ; %bb.0:
9504 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9505 ; GFX940-NEXT:    ;;#ASMSTART
9506 ; GFX940-NEXT:    ; def s[8:10]
9507 ; GFX940-NEXT:    ;;#ASMEND
9508 ; GFX940-NEXT:    ;;#ASMSTART
9509 ; GFX940-NEXT:    ; def s[0:2]
9510 ; GFX940-NEXT:    ;;#ASMEND
9511 ; GFX940-NEXT:    s_mov_b32 s8, s10
9512 ; GFX940-NEXT:    s_mov_b32 s10, s1
9513 ; GFX940-NEXT:    s_mov_b32 s11, s1
9514 ; GFX940-NEXT:    ;;#ASMSTART
9515 ; GFX940-NEXT:    ; use s[8:11]
9516 ; GFX940-NEXT:    ;;#ASMEND
9517 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9518   %vec0 = call <3 x float> asm "; def $0", "=s"()
9519   %vec1 = call <3 x float> asm "; def $0", "=s"()
9520   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 1, i32 1>
9521   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9522   ret void
9525 define void @s_shuffle_v4f32_v3f32__5_5_1_1() {
9526 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_1_1:
9527 ; GFX900:       ; %bb.0:
9528 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9529 ; GFX900-NEXT:    ;;#ASMSTART
9530 ; GFX900-NEXT:    ; def s[8:10]
9531 ; GFX900-NEXT:    ;;#ASMEND
9532 ; GFX900-NEXT:    ;;#ASMSTART
9533 ; GFX900-NEXT:    ; def s[4:6]
9534 ; GFX900-NEXT:    ;;#ASMEND
9535 ; GFX900-NEXT:    s_mov_b32 s8, s10
9536 ; GFX900-NEXT:    s_mov_b32 s9, s10
9537 ; GFX900-NEXT:    s_mov_b32 s10, s5
9538 ; GFX900-NEXT:    s_mov_b32 s11, s5
9539 ; GFX900-NEXT:    ;;#ASMSTART
9540 ; GFX900-NEXT:    ; use s[8:11]
9541 ; GFX900-NEXT:    ;;#ASMEND
9542 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9544 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_1_1:
9545 ; GFX90A:       ; %bb.0:
9546 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9547 ; GFX90A-NEXT:    ;;#ASMSTART
9548 ; GFX90A-NEXT:    ; def s[8:10]
9549 ; GFX90A-NEXT:    ;;#ASMEND
9550 ; GFX90A-NEXT:    ;;#ASMSTART
9551 ; GFX90A-NEXT:    ; def s[4:6]
9552 ; GFX90A-NEXT:    ;;#ASMEND
9553 ; GFX90A-NEXT:    s_mov_b32 s8, s10
9554 ; GFX90A-NEXT:    s_mov_b32 s9, s10
9555 ; GFX90A-NEXT:    s_mov_b32 s10, s5
9556 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9557 ; GFX90A-NEXT:    ;;#ASMSTART
9558 ; GFX90A-NEXT:    ; use s[8:11]
9559 ; GFX90A-NEXT:    ;;#ASMEND
9560 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9562 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_1_1:
9563 ; GFX940:       ; %bb.0:
9564 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9565 ; GFX940-NEXT:    ;;#ASMSTART
9566 ; GFX940-NEXT:    ; def s[0:2]
9567 ; GFX940-NEXT:    ;;#ASMEND
9568 ; GFX940-NEXT:    ;;#ASMSTART
9569 ; GFX940-NEXT:    ; def s[4:6]
9570 ; GFX940-NEXT:    ;;#ASMEND
9571 ; GFX940-NEXT:    s_mov_b32 s8, s6
9572 ; GFX940-NEXT:    s_mov_b32 s9, s6
9573 ; GFX940-NEXT:    s_mov_b32 s10, s1
9574 ; GFX940-NEXT:    s_mov_b32 s11, s1
9575 ; GFX940-NEXT:    ;;#ASMSTART
9576 ; GFX940-NEXT:    ; use s[8:11]
9577 ; GFX940-NEXT:    ;;#ASMEND
9578 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9579   %vec0 = call <3 x float> asm "; def $0", "=s"()
9580   %vec1 = call <3 x float> asm "; def $0", "=s"()
9581   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 1>
9582   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9583   ret void
9586 define void @s_shuffle_v4f32_v3f32__5_5_u_1() {
9587 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_u_1:
9588 ; GFX900:       ; %bb.0:
9589 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9590 ; GFX900-NEXT:    ;;#ASMSTART
9591 ; GFX900-NEXT:    ; def s[8:10]
9592 ; GFX900-NEXT:    ;;#ASMEND
9593 ; GFX900-NEXT:    ;;#ASMSTART
9594 ; GFX900-NEXT:    ; def s[4:6]
9595 ; GFX900-NEXT:    ;;#ASMEND
9596 ; GFX900-NEXT:    s_mov_b32 s8, s10
9597 ; GFX900-NEXT:    s_mov_b32 s9, s10
9598 ; GFX900-NEXT:    s_mov_b32 s11, s5
9599 ; GFX900-NEXT:    ;;#ASMSTART
9600 ; GFX900-NEXT:    ; use s[8:11]
9601 ; GFX900-NEXT:    ;;#ASMEND
9602 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9604 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_u_1:
9605 ; GFX90A:       ; %bb.0:
9606 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9607 ; GFX90A-NEXT:    ;;#ASMSTART
9608 ; GFX90A-NEXT:    ; def s[8:10]
9609 ; GFX90A-NEXT:    ;;#ASMEND
9610 ; GFX90A-NEXT:    ;;#ASMSTART
9611 ; GFX90A-NEXT:    ; def s[4:6]
9612 ; GFX90A-NEXT:    ;;#ASMEND
9613 ; GFX90A-NEXT:    s_mov_b32 s8, s10
9614 ; GFX90A-NEXT:    s_mov_b32 s9, s10
9615 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9616 ; GFX90A-NEXT:    ;;#ASMSTART
9617 ; GFX90A-NEXT:    ; use s[8:11]
9618 ; GFX90A-NEXT:    ;;#ASMEND
9619 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9621 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_u_1:
9622 ; GFX940:       ; %bb.0:
9623 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9624 ; GFX940-NEXT:    ;;#ASMSTART
9625 ; GFX940-NEXT:    ; def s[0:2]
9626 ; GFX940-NEXT:    ;;#ASMEND
9627 ; GFX940-NEXT:    ;;#ASMSTART
9628 ; GFX940-NEXT:    ; def s[4:6]
9629 ; GFX940-NEXT:    ;;#ASMEND
9630 ; GFX940-NEXT:    s_mov_b32 s8, s6
9631 ; GFX940-NEXT:    s_mov_b32 s9, s6
9632 ; GFX940-NEXT:    s_mov_b32 s11, s1
9633 ; GFX940-NEXT:    ;;#ASMSTART
9634 ; GFX940-NEXT:    ; use s[8:11]
9635 ; GFX940-NEXT:    ;;#ASMEND
9636 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9637   %vec0 = call <3 x float> asm "; def $0", "=s"()
9638   %vec1 = call <3 x float> asm "; def $0", "=s"()
9639   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>
9640   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9641   ret void
9644 define void @s_shuffle_v4f32_v3f32__5_5_0_1() {
9645 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_0_1:
9646 ; GFX900:       ; %bb.0:
9647 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9648 ; GFX900-NEXT:    ;;#ASMSTART
9649 ; GFX900-NEXT:    ; def s[8:10]
9650 ; GFX900-NEXT:    ;;#ASMEND
9651 ; GFX900-NEXT:    ;;#ASMSTART
9652 ; GFX900-NEXT:    ; def s[4:6]
9653 ; GFX900-NEXT:    ;;#ASMEND
9654 ; GFX900-NEXT:    s_mov_b32 s8, s10
9655 ; GFX900-NEXT:    s_mov_b32 s9, s10
9656 ; GFX900-NEXT:    s_mov_b32 s10, s4
9657 ; GFX900-NEXT:    s_mov_b32 s11, s5
9658 ; GFX900-NEXT:    ;;#ASMSTART
9659 ; GFX900-NEXT:    ; use s[8:11]
9660 ; GFX900-NEXT:    ;;#ASMEND
9661 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9663 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_0_1:
9664 ; GFX90A:       ; %bb.0:
9665 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9666 ; GFX90A-NEXT:    ;;#ASMSTART
9667 ; GFX90A-NEXT:    ; def s[8:10]
9668 ; GFX90A-NEXT:    ;;#ASMEND
9669 ; GFX90A-NEXT:    ;;#ASMSTART
9670 ; GFX90A-NEXT:    ; def s[4:6]
9671 ; GFX90A-NEXT:    ;;#ASMEND
9672 ; GFX90A-NEXT:    s_mov_b32 s8, s10
9673 ; GFX90A-NEXT:    s_mov_b32 s9, s10
9674 ; GFX90A-NEXT:    s_mov_b32 s10, s4
9675 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9676 ; GFX90A-NEXT:    ;;#ASMSTART
9677 ; GFX90A-NEXT:    ; use s[8:11]
9678 ; GFX90A-NEXT:    ;;#ASMEND
9679 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9681 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_0_1:
9682 ; GFX940:       ; %bb.0:
9683 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9684 ; GFX940-NEXT:    ;;#ASMSTART
9685 ; GFX940-NEXT:    ; def s[0:2]
9686 ; GFX940-NEXT:    ;;#ASMEND
9687 ; GFX940-NEXT:    ;;#ASMSTART
9688 ; GFX940-NEXT:    ; def s[4:6]
9689 ; GFX940-NEXT:    ;;#ASMEND
9690 ; GFX940-NEXT:    s_mov_b32 s8, s6
9691 ; GFX940-NEXT:    s_mov_b32 s9, s6
9692 ; GFX940-NEXT:    s_mov_b32 s10, s0
9693 ; GFX940-NEXT:    s_mov_b32 s11, s1
9694 ; GFX940-NEXT:    ;;#ASMSTART
9695 ; GFX940-NEXT:    ; use s[8:11]
9696 ; GFX940-NEXT:    ;;#ASMEND
9697 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9698   %vec0 = call <3 x float> asm "; def $0", "=s"()
9699   %vec1 = call <3 x float> asm "; def $0", "=s"()
9700   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 1>
9701   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9702   ret void
9705 define void @s_shuffle_v4f32_v3f32__5_5_2_1() {
9706 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_2_1:
9707 ; GFX900:       ; %bb.0:
9708 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9709 ; GFX900-NEXT:    ;;#ASMSTART
9710 ; GFX900-NEXT:    ; def s[8:10]
9711 ; GFX900-NEXT:    ;;#ASMEND
9712 ; GFX900-NEXT:    ;;#ASMSTART
9713 ; GFX900-NEXT:    ; def s[4:6]
9714 ; GFX900-NEXT:    ;;#ASMEND
9715 ; GFX900-NEXT:    s_mov_b32 s8, s10
9716 ; GFX900-NEXT:    s_mov_b32 s9, s10
9717 ; GFX900-NEXT:    s_mov_b32 s10, s6
9718 ; GFX900-NEXT:    s_mov_b32 s11, s5
9719 ; GFX900-NEXT:    ;;#ASMSTART
9720 ; GFX900-NEXT:    ; use s[8:11]
9721 ; GFX900-NEXT:    ;;#ASMEND
9722 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9724 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_2_1:
9725 ; GFX90A:       ; %bb.0:
9726 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9727 ; GFX90A-NEXT:    ;;#ASMSTART
9728 ; GFX90A-NEXT:    ; def s[8:10]
9729 ; GFX90A-NEXT:    ;;#ASMEND
9730 ; GFX90A-NEXT:    ;;#ASMSTART
9731 ; GFX90A-NEXT:    ; def s[4:6]
9732 ; GFX90A-NEXT:    ;;#ASMEND
9733 ; GFX90A-NEXT:    s_mov_b32 s8, s10
9734 ; GFX90A-NEXT:    s_mov_b32 s9, s10
9735 ; GFX90A-NEXT:    s_mov_b32 s10, s6
9736 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9737 ; GFX90A-NEXT:    ;;#ASMSTART
9738 ; GFX90A-NEXT:    ; use s[8:11]
9739 ; GFX90A-NEXT:    ;;#ASMEND
9740 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9742 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_2_1:
9743 ; GFX940:       ; %bb.0:
9744 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9745 ; GFX940-NEXT:    ;;#ASMSTART
9746 ; GFX940-NEXT:    ; def s[0:2]
9747 ; GFX940-NEXT:    ;;#ASMEND
9748 ; GFX940-NEXT:    ;;#ASMSTART
9749 ; GFX940-NEXT:    ; def s[4:6]
9750 ; GFX940-NEXT:    ;;#ASMEND
9751 ; GFX940-NEXT:    s_mov_b32 s8, s6
9752 ; GFX940-NEXT:    s_mov_b32 s9, s6
9753 ; GFX940-NEXT:    s_mov_b32 s10, s2
9754 ; GFX940-NEXT:    s_mov_b32 s11, s1
9755 ; GFX940-NEXT:    ;;#ASMSTART
9756 ; GFX940-NEXT:    ; use s[8:11]
9757 ; GFX940-NEXT:    ;;#ASMEND
9758 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9759   %vec0 = call <3 x float> asm "; def $0", "=s"()
9760   %vec1 = call <3 x float> asm "; def $0", "=s"()
9761   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 1>
9762   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9763   ret void
9766 define void @s_shuffle_v4f32_v3f32__5_5_3_1() {
9767 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_3_1:
9768 ; GFX900:       ; %bb.0:
9769 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9770 ; GFX900-NEXT:    ;;#ASMSTART
9771 ; GFX900-NEXT:    ; def s[4:6]
9772 ; GFX900-NEXT:    ;;#ASMEND
9773 ; GFX900-NEXT:    ;;#ASMSTART
9774 ; GFX900-NEXT:    ; def s[12:14]
9775 ; GFX900-NEXT:    ;;#ASMEND
9776 ; GFX900-NEXT:    s_mov_b32 s8, s14
9777 ; GFX900-NEXT:    s_mov_b32 s9, s14
9778 ; GFX900-NEXT:    s_mov_b32 s10, s12
9779 ; GFX900-NEXT:    s_mov_b32 s11, s5
9780 ; GFX900-NEXT:    ;;#ASMSTART
9781 ; GFX900-NEXT:    ; use s[8:11]
9782 ; GFX900-NEXT:    ;;#ASMEND
9783 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9785 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_3_1:
9786 ; GFX90A:       ; %bb.0:
9787 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9788 ; GFX90A-NEXT:    ;;#ASMSTART
9789 ; GFX90A-NEXT:    ; def s[4:6]
9790 ; GFX90A-NEXT:    ;;#ASMEND
9791 ; GFX90A-NEXT:    ;;#ASMSTART
9792 ; GFX90A-NEXT:    ; def s[12:14]
9793 ; GFX90A-NEXT:    ;;#ASMEND
9794 ; GFX90A-NEXT:    s_mov_b32 s8, s14
9795 ; GFX90A-NEXT:    s_mov_b32 s9, s14
9796 ; GFX90A-NEXT:    s_mov_b32 s10, s12
9797 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9798 ; GFX90A-NEXT:    ;;#ASMSTART
9799 ; GFX90A-NEXT:    ; use s[8:11]
9800 ; GFX90A-NEXT:    ;;#ASMEND
9801 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9803 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_3_1:
9804 ; GFX940:       ; %bb.0:
9805 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9806 ; GFX940-NEXT:    ;;#ASMSTART
9807 ; GFX940-NEXT:    ; def s[0:2]
9808 ; GFX940-NEXT:    ;;#ASMEND
9809 ; GFX940-NEXT:    ;;#ASMSTART
9810 ; GFX940-NEXT:    ; def s[4:6]
9811 ; GFX940-NEXT:    ;;#ASMEND
9812 ; GFX940-NEXT:    s_mov_b32 s8, s6
9813 ; GFX940-NEXT:    s_mov_b32 s9, s6
9814 ; GFX940-NEXT:    s_mov_b32 s10, s4
9815 ; GFX940-NEXT:    s_mov_b32 s11, s1
9816 ; GFX940-NEXT:    ;;#ASMSTART
9817 ; GFX940-NEXT:    ; use s[8:11]
9818 ; GFX940-NEXT:    ;;#ASMEND
9819 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9820   %vec0 = call <3 x float> asm "; def $0", "=s"()
9821   %vec1 = call <3 x float> asm "; def $0", "=s"()
9822   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 1>
9823   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9824   ret void
9827 define void @s_shuffle_v4f32_v3f32__5_5_4_1() {
9828 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_4_1:
9829 ; GFX900:       ; %bb.0:
9830 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9831 ; GFX900-NEXT:    ;;#ASMSTART
9832 ; GFX900-NEXT:    ; def s[4:6]
9833 ; GFX900-NEXT:    ;;#ASMEND
9834 ; GFX900-NEXT:    ;;#ASMSTART
9835 ; GFX900-NEXT:    ; def s[12:14]
9836 ; GFX900-NEXT:    ;;#ASMEND
9837 ; GFX900-NEXT:    s_mov_b32 s8, s14
9838 ; GFX900-NEXT:    s_mov_b32 s9, s14
9839 ; GFX900-NEXT:    s_mov_b32 s10, s13
9840 ; GFX900-NEXT:    s_mov_b32 s11, s5
9841 ; GFX900-NEXT:    ;;#ASMSTART
9842 ; GFX900-NEXT:    ; use s[8:11]
9843 ; GFX900-NEXT:    ;;#ASMEND
9844 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
9846 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_4_1:
9847 ; GFX90A:       ; %bb.0:
9848 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9849 ; GFX90A-NEXT:    ;;#ASMSTART
9850 ; GFX90A-NEXT:    ; def s[4:6]
9851 ; GFX90A-NEXT:    ;;#ASMEND
9852 ; GFX90A-NEXT:    ;;#ASMSTART
9853 ; GFX90A-NEXT:    ; def s[12:14]
9854 ; GFX90A-NEXT:    ;;#ASMEND
9855 ; GFX90A-NEXT:    s_mov_b32 s8, s14
9856 ; GFX90A-NEXT:    s_mov_b32 s9, s14
9857 ; GFX90A-NEXT:    s_mov_b32 s10, s13
9858 ; GFX90A-NEXT:    s_mov_b32 s11, s5
9859 ; GFX90A-NEXT:    ;;#ASMSTART
9860 ; GFX90A-NEXT:    ; use s[8:11]
9861 ; GFX90A-NEXT:    ;;#ASMEND
9862 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9864 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_4_1:
9865 ; GFX940:       ; %bb.0:
9866 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9867 ; GFX940-NEXT:    ;;#ASMSTART
9868 ; GFX940-NEXT:    ; def s[0:2]
9869 ; GFX940-NEXT:    ;;#ASMEND
9870 ; GFX940-NEXT:    ;;#ASMSTART
9871 ; GFX940-NEXT:    ; def s[4:6]
9872 ; GFX940-NEXT:    ;;#ASMEND
9873 ; GFX940-NEXT:    s_mov_b32 s8, s6
9874 ; GFX940-NEXT:    s_mov_b32 s9, s6
9875 ; GFX940-NEXT:    s_mov_b32 s10, s5
9876 ; GFX940-NEXT:    s_mov_b32 s11, s1
9877 ; GFX940-NEXT:    ;;#ASMSTART
9878 ; GFX940-NEXT:    ; use s[8:11]
9879 ; GFX940-NEXT:    ;;#ASMEND
9880 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
9881   %vec0 = call <3 x float> asm "; def $0", "=s"()
9882   %vec1 = call <3 x float> asm "; def $0", "=s"()
9883   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 1>
9884   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9885   ret void
9888 define void @s_shuffle_v4f32_v3f32__u_2_2_2() {
9889 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__u_2_2_2:
9890 ; GFX9:       ; %bb.0:
9891 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9892 ; GFX9-NEXT:    ;;#ASMSTART
9893 ; GFX9-NEXT:    ; def s[8:10]
9894 ; GFX9-NEXT:    ;;#ASMEND
9895 ; GFX9-NEXT:    s_mov_b32 s9, s10
9896 ; GFX9-NEXT:    s_mov_b32 s11, s10
9897 ; GFX9-NEXT:    ;;#ASMSTART
9898 ; GFX9-NEXT:    ; use s[8:11]
9899 ; GFX9-NEXT:    ;;#ASMEND
9900 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9901   %vec0 = call <3 x float> asm "; def $0", "=s"()
9902   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>
9903   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9904   ret void
9907 define void @s_shuffle_v4f32_v3f32__0_2_2_2() {
9908 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__0_2_2_2:
9909 ; GFX9:       ; %bb.0:
9910 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9911 ; GFX9-NEXT:    ;;#ASMSTART
9912 ; GFX9-NEXT:    ; def s[8:10]
9913 ; GFX9-NEXT:    ;;#ASMEND
9914 ; GFX9-NEXT:    s_mov_b32 s9, s10
9915 ; GFX9-NEXT:    s_mov_b32 s11, s10
9916 ; GFX9-NEXT:    ;;#ASMSTART
9917 ; GFX9-NEXT:    ; use s[8:11]
9918 ; GFX9-NEXT:    ;;#ASMEND
9919 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9920   %vec0 = call <3 x float> asm "; def $0", "=s"()
9921   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>
9922   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9923   ret void
9926 define void @s_shuffle_v4f32_v3f32__1_2_2_2() {
9927 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__1_2_2_2:
9928 ; GFX9:       ; %bb.0:
9929 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9930 ; GFX9-NEXT:    ;;#ASMSTART
9931 ; GFX9-NEXT:    ; def s[8:10]
9932 ; GFX9-NEXT:    ;;#ASMEND
9933 ; GFX9-NEXT:    s_mov_b32 s8, s9
9934 ; GFX9-NEXT:    s_mov_b32 s9, s10
9935 ; GFX9-NEXT:    s_mov_b32 s11, s10
9936 ; GFX9-NEXT:    ;;#ASMSTART
9937 ; GFX9-NEXT:    ; use s[8:11]
9938 ; GFX9-NEXT:    ;;#ASMEND
9939 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9940   %vec0 = call <3 x float> asm "; def $0", "=s"()
9941   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>
9942   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9943   ret void
9946 define void @s_shuffle_v4f32_v3f32__2_2_2_2() {
9947 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__2_2_2_2:
9948 ; GFX9:       ; %bb.0:
9949 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9950 ; GFX9-NEXT:    ;;#ASMSTART
9951 ; GFX9-NEXT:    ; def s[8:10]
9952 ; GFX9-NEXT:    ;;#ASMEND
9953 ; GFX9-NEXT:    s_mov_b32 s8, s10
9954 ; GFX9-NEXT:    s_mov_b32 s9, s10
9955 ; GFX9-NEXT:    s_mov_b32 s11, s10
9956 ; GFX9-NEXT:    ;;#ASMSTART
9957 ; GFX9-NEXT:    ; use s[8:11]
9958 ; GFX9-NEXT:    ;;#ASMEND
9959 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9960   %vec0 = call <3 x float> asm "; def $0", "=s"()
9961   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>
9962   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9963   ret void
9966 define void @s_shuffle_v4f32_v3f32__3_2_2_2() {
9967 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__3_2_2_2:
9968 ; GFX9:       ; %bb.0:
9969 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9970 ; GFX9-NEXT:    ;;#ASMSTART
9971 ; GFX9-NEXT:    ; def s[8:10]
9972 ; GFX9-NEXT:    ;;#ASMEND
9973 ; GFX9-NEXT:    s_mov_b32 s9, s10
9974 ; GFX9-NEXT:    s_mov_b32 s11, s10
9975 ; GFX9-NEXT:    ;;#ASMSTART
9976 ; GFX9-NEXT:    ; use s[8:11]
9977 ; GFX9-NEXT:    ;;#ASMEND
9978 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
9979   %vec0 = call <3 x float> asm "; def $0", "=s"()
9980   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>
9981   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
9982   ret void
9985 define void @s_shuffle_v4f32_v3f32__4_2_2_2() {
9986 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__4_2_2_2:
9987 ; GFX900:       ; %bb.0:
9988 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9989 ; GFX900-NEXT:    ;;#ASMSTART
9990 ; GFX900-NEXT:    ; def s[8:10]
9991 ; GFX900-NEXT:    ;;#ASMEND
9992 ; GFX900-NEXT:    ;;#ASMSTART
9993 ; GFX900-NEXT:    ; def s[4:6]
9994 ; GFX900-NEXT:    ;;#ASMEND
9995 ; GFX900-NEXT:    s_mov_b32 s8, s5
9996 ; GFX900-NEXT:    s_mov_b32 s9, s10
9997 ; GFX900-NEXT:    s_mov_b32 s11, s10
9998 ; GFX900-NEXT:    ;;#ASMSTART
9999 ; GFX900-NEXT:    ; use s[8:11]
10000 ; GFX900-NEXT:    ;;#ASMEND
10001 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10003 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__4_2_2_2:
10004 ; GFX90A:       ; %bb.0:
10005 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10006 ; GFX90A-NEXT:    ;;#ASMSTART
10007 ; GFX90A-NEXT:    ; def s[8:10]
10008 ; GFX90A-NEXT:    ;;#ASMEND
10009 ; GFX90A-NEXT:    ;;#ASMSTART
10010 ; GFX90A-NEXT:    ; def s[4:6]
10011 ; GFX90A-NEXT:    ;;#ASMEND
10012 ; GFX90A-NEXT:    s_mov_b32 s8, s5
10013 ; GFX90A-NEXT:    s_mov_b32 s9, s10
10014 ; GFX90A-NEXT:    s_mov_b32 s11, s10
10015 ; GFX90A-NEXT:    ;;#ASMSTART
10016 ; GFX90A-NEXT:    ; use s[8:11]
10017 ; GFX90A-NEXT:    ;;#ASMEND
10018 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10020 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__4_2_2_2:
10021 ; GFX940:       ; %bb.0:
10022 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10023 ; GFX940-NEXT:    ;;#ASMSTART
10024 ; GFX940-NEXT:    ; def s[8:10]
10025 ; GFX940-NEXT:    ;;#ASMEND
10026 ; GFX940-NEXT:    ;;#ASMSTART
10027 ; GFX940-NEXT:    ; def s[0:2]
10028 ; GFX940-NEXT:    ;;#ASMEND
10029 ; GFX940-NEXT:    s_mov_b32 s8, s1
10030 ; GFX940-NEXT:    s_mov_b32 s9, s10
10031 ; GFX940-NEXT:    s_mov_b32 s11, s10
10032 ; GFX940-NEXT:    ;;#ASMSTART
10033 ; GFX940-NEXT:    ; use s[8:11]
10034 ; GFX940-NEXT:    ;;#ASMEND
10035 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10036   %vec0 = call <3 x float> asm "; def $0", "=s"()
10037   %vec1 = call <3 x float> asm "; def $0", "=s"()
10038   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 2, i32 2, i32 2>
10039   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10040   ret void
10043 define void @s_shuffle_v4f32_v3f32__5_2_2_2() {
10044 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_2_2_2:
10045 ; GFX900:       ; %bb.0:
10046 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10047 ; GFX900-NEXT:    ;;#ASMSTART
10048 ; GFX900-NEXT:    ; def s[8:10]
10049 ; GFX900-NEXT:    ;;#ASMEND
10050 ; GFX900-NEXT:    ;;#ASMSTART
10051 ; GFX900-NEXT:    ; def s[4:6]
10052 ; GFX900-NEXT:    ;;#ASMEND
10053 ; GFX900-NEXT:    s_mov_b32 s8, s6
10054 ; GFX900-NEXT:    s_mov_b32 s9, s10
10055 ; GFX900-NEXT:    s_mov_b32 s11, s10
10056 ; GFX900-NEXT:    ;;#ASMSTART
10057 ; GFX900-NEXT:    ; use s[8:11]
10058 ; GFX900-NEXT:    ;;#ASMEND
10059 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10061 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_2_2_2:
10062 ; GFX90A:       ; %bb.0:
10063 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10064 ; GFX90A-NEXT:    ;;#ASMSTART
10065 ; GFX90A-NEXT:    ; def s[8:10]
10066 ; GFX90A-NEXT:    ;;#ASMEND
10067 ; GFX90A-NEXT:    ;;#ASMSTART
10068 ; GFX90A-NEXT:    ; def s[4:6]
10069 ; GFX90A-NEXT:    ;;#ASMEND
10070 ; GFX90A-NEXT:    s_mov_b32 s8, s6
10071 ; GFX90A-NEXT:    s_mov_b32 s9, s10
10072 ; GFX90A-NEXT:    s_mov_b32 s11, s10
10073 ; GFX90A-NEXT:    ;;#ASMSTART
10074 ; GFX90A-NEXT:    ; use s[8:11]
10075 ; GFX90A-NEXT:    ;;#ASMEND
10076 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10078 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_2_2_2:
10079 ; GFX940:       ; %bb.0:
10080 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10081 ; GFX940-NEXT:    ;;#ASMSTART
10082 ; GFX940-NEXT:    ; def s[8:10]
10083 ; GFX940-NEXT:    ;;#ASMEND
10084 ; GFX940-NEXT:    ;;#ASMSTART
10085 ; GFX940-NEXT:    ; def s[0:2]
10086 ; GFX940-NEXT:    ;;#ASMEND
10087 ; GFX940-NEXT:    s_mov_b32 s8, s2
10088 ; GFX940-NEXT:    s_mov_b32 s9, s10
10089 ; GFX940-NEXT:    s_mov_b32 s11, s10
10090 ; GFX940-NEXT:    ;;#ASMSTART
10091 ; GFX940-NEXT:    ; use s[8:11]
10092 ; GFX940-NEXT:    ;;#ASMEND
10093 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10094   %vec0 = call <3 x float> asm "; def $0", "=s"()
10095   %vec1 = call <3 x float> asm "; def $0", "=s"()
10096   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>
10097   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10098   ret void
10101 define void @s_shuffle_v4f32_v3f32__5_u_2_2() {
10102 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_u_2_2:
10103 ; GFX900:       ; %bb.0:
10104 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10105 ; GFX900-NEXT:    ;;#ASMSTART
10106 ; GFX900-NEXT:    ; def s[8:10]
10107 ; GFX900-NEXT:    ;;#ASMEND
10108 ; GFX900-NEXT:    ;;#ASMSTART
10109 ; GFX900-NEXT:    ; def s[4:6]
10110 ; GFX900-NEXT:    ;;#ASMEND
10111 ; GFX900-NEXT:    s_mov_b32 s8, s6
10112 ; GFX900-NEXT:    s_mov_b32 s11, s10
10113 ; GFX900-NEXT:    ;;#ASMSTART
10114 ; GFX900-NEXT:    ; use s[8:11]
10115 ; GFX900-NEXT:    ;;#ASMEND
10116 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10118 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_u_2_2:
10119 ; GFX90A:       ; %bb.0:
10120 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10121 ; GFX90A-NEXT:    ;;#ASMSTART
10122 ; GFX90A-NEXT:    ; def s[8:10]
10123 ; GFX90A-NEXT:    ;;#ASMEND
10124 ; GFX90A-NEXT:    ;;#ASMSTART
10125 ; GFX90A-NEXT:    ; def s[4:6]
10126 ; GFX90A-NEXT:    ;;#ASMEND
10127 ; GFX90A-NEXT:    s_mov_b32 s8, s6
10128 ; GFX90A-NEXT:    s_mov_b32 s11, s10
10129 ; GFX90A-NEXT:    ;;#ASMSTART
10130 ; GFX90A-NEXT:    ; use s[8:11]
10131 ; GFX90A-NEXT:    ;;#ASMEND
10132 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10134 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_u_2_2:
10135 ; GFX940:       ; %bb.0:
10136 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10137 ; GFX940-NEXT:    ;;#ASMSTART
10138 ; GFX940-NEXT:    ; def s[8:10]
10139 ; GFX940-NEXT:    ;;#ASMEND
10140 ; GFX940-NEXT:    ;;#ASMSTART
10141 ; GFX940-NEXT:    ; def s[0:2]
10142 ; GFX940-NEXT:    ;;#ASMEND
10143 ; GFX940-NEXT:    s_mov_b32 s8, s2
10144 ; GFX940-NEXT:    s_mov_b32 s11, s10
10145 ; GFX940-NEXT:    ;;#ASMSTART
10146 ; GFX940-NEXT:    ; use s[8:11]
10147 ; GFX940-NEXT:    ;;#ASMEND
10148 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10149   %vec0 = call <3 x float> asm "; def $0", "=s"()
10150   %vec1 = call <3 x float> asm "; def $0", "=s"()
10151   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>
10152   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10153   ret void
10156 define void @s_shuffle_v4f32_v3f32__5_0_2_2() {
10157 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_0_2_2:
10158 ; GFX900:       ; %bb.0:
10159 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10160 ; GFX900-NEXT:    ;;#ASMSTART
10161 ; GFX900-NEXT:    ; def s[8:10]
10162 ; GFX900-NEXT:    ;;#ASMEND
10163 ; GFX900-NEXT:    ;;#ASMSTART
10164 ; GFX900-NEXT:    ; def s[4:6]
10165 ; GFX900-NEXT:    ;;#ASMEND
10166 ; GFX900-NEXT:    s_mov_b32 s8, s10
10167 ; GFX900-NEXT:    s_mov_b32 s9, s4
10168 ; GFX900-NEXT:    s_mov_b32 s10, s6
10169 ; GFX900-NEXT:    s_mov_b32 s11, s6
10170 ; GFX900-NEXT:    ;;#ASMSTART
10171 ; GFX900-NEXT:    ; use s[8:11]
10172 ; GFX900-NEXT:    ;;#ASMEND
10173 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10175 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_0_2_2:
10176 ; GFX90A:       ; %bb.0:
10177 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10178 ; GFX90A-NEXT:    ;;#ASMSTART
10179 ; GFX90A-NEXT:    ; def s[8:10]
10180 ; GFX90A-NEXT:    ;;#ASMEND
10181 ; GFX90A-NEXT:    ;;#ASMSTART
10182 ; GFX90A-NEXT:    ; def s[4:6]
10183 ; GFX90A-NEXT:    ;;#ASMEND
10184 ; GFX90A-NEXT:    s_mov_b32 s8, s10
10185 ; GFX90A-NEXT:    s_mov_b32 s9, s4
10186 ; GFX90A-NEXT:    s_mov_b32 s10, s6
10187 ; GFX90A-NEXT:    s_mov_b32 s11, s6
10188 ; GFX90A-NEXT:    ;;#ASMSTART
10189 ; GFX90A-NEXT:    ; use s[8:11]
10190 ; GFX90A-NEXT:    ;;#ASMEND
10191 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10193 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_0_2_2:
10194 ; GFX940:       ; %bb.0:
10195 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10196 ; GFX940-NEXT:    ;;#ASMSTART
10197 ; GFX940-NEXT:    ; def s[0:2]
10198 ; GFX940-NEXT:    ;;#ASMEND
10199 ; GFX940-NEXT:    ;;#ASMSTART
10200 ; GFX940-NEXT:    ; def s[4:6]
10201 ; GFX940-NEXT:    ;;#ASMEND
10202 ; GFX940-NEXT:    s_mov_b32 s8, s6
10203 ; GFX940-NEXT:    s_mov_b32 s9, s0
10204 ; GFX940-NEXT:    s_mov_b32 s10, s2
10205 ; GFX940-NEXT:    s_mov_b32 s11, s2
10206 ; GFX940-NEXT:    ;;#ASMSTART
10207 ; GFX940-NEXT:    ; use s[8:11]
10208 ; GFX940-NEXT:    ;;#ASMEND
10209 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10210   %vec0 = call <3 x float> asm "; def $0", "=s"()
10211   %vec1 = call <3 x float> asm "; def $0", "=s"()
10212   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 2, i32 2>
10213   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10214   ret void
10217 define void @s_shuffle_v4f32_v3f32__5_1_2_2() {
10218 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_1_2_2:
10219 ; GFX900:       ; %bb.0:
10220 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10221 ; GFX900-NEXT:    ;;#ASMSTART
10222 ; GFX900-NEXT:    ; def s[8:10]
10223 ; GFX900-NEXT:    ;;#ASMEND
10224 ; GFX900-NEXT:    ;;#ASMSTART
10225 ; GFX900-NEXT:    ; def s[4:6]
10226 ; GFX900-NEXT:    ;;#ASMEND
10227 ; GFX900-NEXT:    s_mov_b32 s8, s6
10228 ; GFX900-NEXT:    s_mov_b32 s11, s10
10229 ; GFX900-NEXT:    ;;#ASMSTART
10230 ; GFX900-NEXT:    ; use s[8:11]
10231 ; GFX900-NEXT:    ;;#ASMEND
10232 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10234 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_1_2_2:
10235 ; GFX90A:       ; %bb.0:
10236 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10237 ; GFX90A-NEXT:    ;;#ASMSTART
10238 ; GFX90A-NEXT:    ; def s[8:10]
10239 ; GFX90A-NEXT:    ;;#ASMEND
10240 ; GFX90A-NEXT:    ;;#ASMSTART
10241 ; GFX90A-NEXT:    ; def s[4:6]
10242 ; GFX90A-NEXT:    ;;#ASMEND
10243 ; GFX90A-NEXT:    s_mov_b32 s8, s6
10244 ; GFX90A-NEXT:    s_mov_b32 s11, s10
10245 ; GFX90A-NEXT:    ;;#ASMSTART
10246 ; GFX90A-NEXT:    ; use s[8:11]
10247 ; GFX90A-NEXT:    ;;#ASMEND
10248 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10250 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_1_2_2:
10251 ; GFX940:       ; %bb.0:
10252 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10253 ; GFX940-NEXT:    ;;#ASMSTART
10254 ; GFX940-NEXT:    ; def s[8:10]
10255 ; GFX940-NEXT:    ;;#ASMEND
10256 ; GFX940-NEXT:    ;;#ASMSTART
10257 ; GFX940-NEXT:    ; def s[0:2]
10258 ; GFX940-NEXT:    ;;#ASMEND
10259 ; GFX940-NEXT:    s_mov_b32 s8, s2
10260 ; GFX940-NEXT:    s_mov_b32 s11, s10
10261 ; GFX940-NEXT:    ;;#ASMSTART
10262 ; GFX940-NEXT:    ; use s[8:11]
10263 ; GFX940-NEXT:    ;;#ASMEND
10264 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10265   %vec0 = call <3 x float> asm "; def $0", "=s"()
10266   %vec1 = call <3 x float> asm "; def $0", "=s"()
10267   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 2, i32 2>
10268   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10269   ret void
10272 define void @s_shuffle_v4f32_v3f32__5_3_2_2() {
10273 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_3_2_2:
10274 ; GFX900:       ; %bb.0:
10275 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10276 ; GFX900-NEXT:    ;;#ASMSTART
10277 ; GFX900-NEXT:    ; def s[8:10]
10278 ; GFX900-NEXT:    ;;#ASMEND
10279 ; GFX900-NEXT:    ;;#ASMSTART
10280 ; GFX900-NEXT:    ; def s[4:6]
10281 ; GFX900-NEXT:    ;;#ASMEND
10282 ; GFX900-NEXT:    s_mov_b32 s8, s6
10283 ; GFX900-NEXT:    s_mov_b32 s9, s4
10284 ; GFX900-NEXT:    s_mov_b32 s11, s10
10285 ; GFX900-NEXT:    ;;#ASMSTART
10286 ; GFX900-NEXT:    ; use s[8:11]
10287 ; GFX900-NEXT:    ;;#ASMEND
10288 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10290 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_3_2_2:
10291 ; GFX90A:       ; %bb.0:
10292 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10293 ; GFX90A-NEXT:    ;;#ASMSTART
10294 ; GFX90A-NEXT:    ; def s[8:10]
10295 ; GFX90A-NEXT:    ;;#ASMEND
10296 ; GFX90A-NEXT:    ;;#ASMSTART
10297 ; GFX90A-NEXT:    ; def s[4:6]
10298 ; GFX90A-NEXT:    ;;#ASMEND
10299 ; GFX90A-NEXT:    s_mov_b32 s8, s6
10300 ; GFX90A-NEXT:    s_mov_b32 s9, s4
10301 ; GFX90A-NEXT:    s_mov_b32 s11, s10
10302 ; GFX90A-NEXT:    ;;#ASMSTART
10303 ; GFX90A-NEXT:    ; use s[8:11]
10304 ; GFX90A-NEXT:    ;;#ASMEND
10305 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10307 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_3_2_2:
10308 ; GFX940:       ; %bb.0:
10309 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10310 ; GFX940-NEXT:    ;;#ASMSTART
10311 ; GFX940-NEXT:    ; def s[8:10]
10312 ; GFX940-NEXT:    ;;#ASMEND
10313 ; GFX940-NEXT:    ;;#ASMSTART
10314 ; GFX940-NEXT:    ; def s[0:2]
10315 ; GFX940-NEXT:    ;;#ASMEND
10316 ; GFX940-NEXT:    s_mov_b32 s8, s2
10317 ; GFX940-NEXT:    s_mov_b32 s9, s0
10318 ; GFX940-NEXT:    s_mov_b32 s11, s10
10319 ; GFX940-NEXT:    ;;#ASMSTART
10320 ; GFX940-NEXT:    ; use s[8:11]
10321 ; GFX940-NEXT:    ;;#ASMEND
10322 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10323   %vec0 = call <3 x float> asm "; def $0", "=s"()
10324   %vec1 = call <3 x float> asm "; def $0", "=s"()
10325   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 2, i32 2>
10326   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10327   ret void
10330 define void @s_shuffle_v4f32_v3f32__5_4_2_2() {
10331 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_4_2_2:
10332 ; GFX900:       ; %bb.0:
10333 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10334 ; GFX900-NEXT:    ;;#ASMSTART
10335 ; GFX900-NEXT:    ; def s[8:10]
10336 ; GFX900-NEXT:    ;;#ASMEND
10337 ; GFX900-NEXT:    ;;#ASMSTART
10338 ; GFX900-NEXT:    ; def s[4:6]
10339 ; GFX900-NEXT:    ;;#ASMEND
10340 ; GFX900-NEXT:    s_mov_b32 s8, s10
10341 ; GFX900-NEXT:    s_mov_b32 s10, s6
10342 ; GFX900-NEXT:    s_mov_b32 s11, s6
10343 ; GFX900-NEXT:    ;;#ASMSTART
10344 ; GFX900-NEXT:    ; use s[8:11]
10345 ; GFX900-NEXT:    ;;#ASMEND
10346 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10348 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_4_2_2:
10349 ; GFX90A:       ; %bb.0:
10350 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10351 ; GFX90A-NEXT:    ;;#ASMSTART
10352 ; GFX90A-NEXT:    ; def s[8:10]
10353 ; GFX90A-NEXT:    ;;#ASMEND
10354 ; GFX90A-NEXT:    ;;#ASMSTART
10355 ; GFX90A-NEXT:    ; def s[4:6]
10356 ; GFX90A-NEXT:    ;;#ASMEND
10357 ; GFX90A-NEXT:    s_mov_b32 s8, s10
10358 ; GFX90A-NEXT:    s_mov_b32 s10, s6
10359 ; GFX90A-NEXT:    s_mov_b32 s11, s6
10360 ; GFX90A-NEXT:    ;;#ASMSTART
10361 ; GFX90A-NEXT:    ; use s[8:11]
10362 ; GFX90A-NEXT:    ;;#ASMEND
10363 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10365 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_4_2_2:
10366 ; GFX940:       ; %bb.0:
10367 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10368 ; GFX940-NEXT:    ;;#ASMSTART
10369 ; GFX940-NEXT:    ; def s[8:10]
10370 ; GFX940-NEXT:    ;;#ASMEND
10371 ; GFX940-NEXT:    ;;#ASMSTART
10372 ; GFX940-NEXT:    ; def s[0:2]
10373 ; GFX940-NEXT:    ;;#ASMEND
10374 ; GFX940-NEXT:    s_mov_b32 s8, s10
10375 ; GFX940-NEXT:    s_mov_b32 s10, s2
10376 ; GFX940-NEXT:    s_mov_b32 s11, s2
10377 ; GFX940-NEXT:    ;;#ASMSTART
10378 ; GFX940-NEXT:    ; use s[8:11]
10379 ; GFX940-NEXT:    ;;#ASMEND
10380 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10381   %vec0 = call <3 x float> asm "; def $0", "=s"()
10382   %vec1 = call <3 x float> asm "; def $0", "=s"()
10383   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 2, i32 2>
10384   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10385   ret void
10388 define void @s_shuffle_v4f32_v3f32__5_5_2_2() {
10389 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_2_2:
10390 ; GFX900:       ; %bb.0:
10391 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10392 ; GFX900-NEXT:    ;;#ASMSTART
10393 ; GFX900-NEXT:    ; def s[8:10]
10394 ; GFX900-NEXT:    ;;#ASMEND
10395 ; GFX900-NEXT:    ;;#ASMSTART
10396 ; GFX900-NEXT:    ; def s[4:6]
10397 ; GFX900-NEXT:    ;;#ASMEND
10398 ; GFX900-NEXT:    s_mov_b32 s8, s6
10399 ; GFX900-NEXT:    s_mov_b32 s9, s6
10400 ; GFX900-NEXT:    s_mov_b32 s11, s10
10401 ; GFX900-NEXT:    ;;#ASMSTART
10402 ; GFX900-NEXT:    ; use s[8:11]
10403 ; GFX900-NEXT:    ;;#ASMEND
10404 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10406 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_2_2:
10407 ; GFX90A:       ; %bb.0:
10408 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10409 ; GFX90A-NEXT:    ;;#ASMSTART
10410 ; GFX90A-NEXT:    ; def s[8:10]
10411 ; GFX90A-NEXT:    ;;#ASMEND
10412 ; GFX90A-NEXT:    ;;#ASMSTART
10413 ; GFX90A-NEXT:    ; def s[4:6]
10414 ; GFX90A-NEXT:    ;;#ASMEND
10415 ; GFX90A-NEXT:    s_mov_b32 s8, s6
10416 ; GFX90A-NEXT:    s_mov_b32 s9, s6
10417 ; GFX90A-NEXT:    s_mov_b32 s11, s10
10418 ; GFX90A-NEXT:    ;;#ASMSTART
10419 ; GFX90A-NEXT:    ; use s[8:11]
10420 ; GFX90A-NEXT:    ;;#ASMEND
10421 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10423 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_2_2:
10424 ; GFX940:       ; %bb.0:
10425 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10426 ; GFX940-NEXT:    ;;#ASMSTART
10427 ; GFX940-NEXT:    ; def s[8:10]
10428 ; GFX940-NEXT:    ;;#ASMEND
10429 ; GFX940-NEXT:    ;;#ASMSTART
10430 ; GFX940-NEXT:    ; def s[0:2]
10431 ; GFX940-NEXT:    ;;#ASMEND
10432 ; GFX940-NEXT:    s_mov_b32 s8, s2
10433 ; GFX940-NEXT:    s_mov_b32 s9, s2
10434 ; GFX940-NEXT:    s_mov_b32 s11, s10
10435 ; GFX940-NEXT:    ;;#ASMSTART
10436 ; GFX940-NEXT:    ; use s[8:11]
10437 ; GFX940-NEXT:    ;;#ASMEND
10438 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10439   %vec0 = call <3 x float> asm "; def $0", "=s"()
10440   %vec1 = call <3 x float> asm "; def $0", "=s"()
10441   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 2>
10442   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10443   ret void
10446 define void @s_shuffle_v4f32_v3f32__5_5_u_2() {
10447 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_u_2:
10448 ; GFX900:       ; %bb.0:
10449 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10450 ; GFX900-NEXT:    ;;#ASMSTART
10451 ; GFX900-NEXT:    ; def s[8:10]
10452 ; GFX900-NEXT:    ;;#ASMEND
10453 ; GFX900-NEXT:    ;;#ASMSTART
10454 ; GFX900-NEXT:    ; def s[4:6]
10455 ; GFX900-NEXT:    ;;#ASMEND
10456 ; GFX900-NEXT:    s_mov_b32 s8, s10
10457 ; GFX900-NEXT:    s_mov_b32 s9, s10
10458 ; GFX900-NEXT:    s_mov_b32 s11, s6
10459 ; GFX900-NEXT:    ;;#ASMSTART
10460 ; GFX900-NEXT:    ; use s[8:11]
10461 ; GFX900-NEXT:    ;;#ASMEND
10462 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10464 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_u_2:
10465 ; GFX90A:       ; %bb.0:
10466 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10467 ; GFX90A-NEXT:    ;;#ASMSTART
10468 ; GFX90A-NEXT:    ; def s[8:10]
10469 ; GFX90A-NEXT:    ;;#ASMEND
10470 ; GFX90A-NEXT:    ;;#ASMSTART
10471 ; GFX90A-NEXT:    ; def s[4:6]
10472 ; GFX90A-NEXT:    ;;#ASMEND
10473 ; GFX90A-NEXT:    s_mov_b32 s8, s10
10474 ; GFX90A-NEXT:    s_mov_b32 s9, s10
10475 ; GFX90A-NEXT:    s_mov_b32 s11, s6
10476 ; GFX90A-NEXT:    ;;#ASMSTART
10477 ; GFX90A-NEXT:    ; use s[8:11]
10478 ; GFX90A-NEXT:    ;;#ASMEND
10479 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10481 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_u_2:
10482 ; GFX940:       ; %bb.0:
10483 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10484 ; GFX940-NEXT:    ;;#ASMSTART
10485 ; GFX940-NEXT:    ; def s[0:2]
10486 ; GFX940-NEXT:    ;;#ASMEND
10487 ; GFX940-NEXT:    ;;#ASMSTART
10488 ; GFX940-NEXT:    ; def s[4:6]
10489 ; GFX940-NEXT:    ;;#ASMEND
10490 ; GFX940-NEXT:    s_mov_b32 s8, s6
10491 ; GFX940-NEXT:    s_mov_b32 s9, s6
10492 ; GFX940-NEXT:    s_mov_b32 s11, s2
10493 ; GFX940-NEXT:    ;;#ASMSTART
10494 ; GFX940-NEXT:    ; use s[8:11]
10495 ; GFX940-NEXT:    ;;#ASMEND
10496 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10497   %vec0 = call <3 x float> asm "; def $0", "=s"()
10498   %vec1 = call <3 x float> asm "; def $0", "=s"()
10499   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>
10500   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10501   ret void
10504 define void @s_shuffle_v4f32_v3f32__5_5_0_2() {
10505 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_0_2:
10506 ; GFX900:       ; %bb.0:
10507 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10508 ; GFX900-NEXT:    ;;#ASMSTART
10509 ; GFX900-NEXT:    ; def s[8:10]
10510 ; GFX900-NEXT:    ;;#ASMEND
10511 ; GFX900-NEXT:    ;;#ASMSTART
10512 ; GFX900-NEXT:    ; def s[4:6]
10513 ; GFX900-NEXT:    ;;#ASMEND
10514 ; GFX900-NEXT:    s_mov_b32 s8, s10
10515 ; GFX900-NEXT:    s_mov_b32 s9, s10
10516 ; GFX900-NEXT:    s_mov_b32 s10, s4
10517 ; GFX900-NEXT:    s_mov_b32 s11, s6
10518 ; GFX900-NEXT:    ;;#ASMSTART
10519 ; GFX900-NEXT:    ; use s[8:11]
10520 ; GFX900-NEXT:    ;;#ASMEND
10521 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10523 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_0_2:
10524 ; GFX90A:       ; %bb.0:
10525 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10526 ; GFX90A-NEXT:    ;;#ASMSTART
10527 ; GFX90A-NEXT:    ; def s[8:10]
10528 ; GFX90A-NEXT:    ;;#ASMEND
10529 ; GFX90A-NEXT:    ;;#ASMSTART
10530 ; GFX90A-NEXT:    ; def s[4:6]
10531 ; GFX90A-NEXT:    ;;#ASMEND
10532 ; GFX90A-NEXT:    s_mov_b32 s8, s10
10533 ; GFX90A-NEXT:    s_mov_b32 s9, s10
10534 ; GFX90A-NEXT:    s_mov_b32 s10, s4
10535 ; GFX90A-NEXT:    s_mov_b32 s11, s6
10536 ; GFX90A-NEXT:    ;;#ASMSTART
10537 ; GFX90A-NEXT:    ; use s[8:11]
10538 ; GFX90A-NEXT:    ;;#ASMEND
10539 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10541 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_0_2:
10542 ; GFX940:       ; %bb.0:
10543 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10544 ; GFX940-NEXT:    ;;#ASMSTART
10545 ; GFX940-NEXT:    ; def s[0:2]
10546 ; GFX940-NEXT:    ;;#ASMEND
10547 ; GFX940-NEXT:    ;;#ASMSTART
10548 ; GFX940-NEXT:    ; def s[4:6]
10549 ; GFX940-NEXT:    ;;#ASMEND
10550 ; GFX940-NEXT:    s_mov_b32 s8, s6
10551 ; GFX940-NEXT:    s_mov_b32 s9, s6
10552 ; GFX940-NEXT:    s_mov_b32 s10, s0
10553 ; GFX940-NEXT:    s_mov_b32 s11, s2
10554 ; GFX940-NEXT:    ;;#ASMSTART
10555 ; GFX940-NEXT:    ; use s[8:11]
10556 ; GFX940-NEXT:    ;;#ASMEND
10557 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10558   %vec0 = call <3 x float> asm "; def $0", "=s"()
10559   %vec1 = call <3 x float> asm "; def $0", "=s"()
10560   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 2>
10561   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10562   ret void
10565 define void @s_shuffle_v4f32_v3f32__5_5_1_2() {
10566 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_1_2:
10567 ; GFX900:       ; %bb.0:
10568 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10569 ; GFX900-NEXT:    ;;#ASMSTART
10570 ; GFX900-NEXT:    ; def s[8:10]
10571 ; GFX900-NEXT:    ;;#ASMEND
10572 ; GFX900-NEXT:    ;;#ASMSTART
10573 ; GFX900-NEXT:    ; def s[4:6]
10574 ; GFX900-NEXT:    ;;#ASMEND
10575 ; GFX900-NEXT:    s_mov_b32 s8, s10
10576 ; GFX900-NEXT:    s_mov_b32 s9, s10
10577 ; GFX900-NEXT:    s_mov_b32 s10, s5
10578 ; GFX900-NEXT:    s_mov_b32 s11, s6
10579 ; GFX900-NEXT:    ;;#ASMSTART
10580 ; GFX900-NEXT:    ; use s[8:11]
10581 ; GFX900-NEXT:    ;;#ASMEND
10582 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10584 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_1_2:
10585 ; GFX90A:       ; %bb.0:
10586 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10587 ; GFX90A-NEXT:    ;;#ASMSTART
10588 ; GFX90A-NEXT:    ; def s[8:10]
10589 ; GFX90A-NEXT:    ;;#ASMEND
10590 ; GFX90A-NEXT:    ;;#ASMSTART
10591 ; GFX90A-NEXT:    ; def s[4:6]
10592 ; GFX90A-NEXT:    ;;#ASMEND
10593 ; GFX90A-NEXT:    s_mov_b32 s8, s10
10594 ; GFX90A-NEXT:    s_mov_b32 s9, s10
10595 ; GFX90A-NEXT:    s_mov_b32 s10, s5
10596 ; GFX90A-NEXT:    s_mov_b32 s11, s6
10597 ; GFX90A-NEXT:    ;;#ASMSTART
10598 ; GFX90A-NEXT:    ; use s[8:11]
10599 ; GFX90A-NEXT:    ;;#ASMEND
10600 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10602 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_1_2:
10603 ; GFX940:       ; %bb.0:
10604 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10605 ; GFX940-NEXT:    ;;#ASMSTART
10606 ; GFX940-NEXT:    ; def s[0:2]
10607 ; GFX940-NEXT:    ;;#ASMEND
10608 ; GFX940-NEXT:    ;;#ASMSTART
10609 ; GFX940-NEXT:    ; def s[4:6]
10610 ; GFX940-NEXT:    ;;#ASMEND
10611 ; GFX940-NEXT:    s_mov_b32 s8, s6
10612 ; GFX940-NEXT:    s_mov_b32 s9, s6
10613 ; GFX940-NEXT:    s_mov_b32 s10, s1
10614 ; GFX940-NEXT:    s_mov_b32 s11, s2
10615 ; GFX940-NEXT:    ;;#ASMSTART
10616 ; GFX940-NEXT:    ; use s[8:11]
10617 ; GFX940-NEXT:    ;;#ASMEND
10618 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10619   %vec0 = call <3 x float> asm "; def $0", "=s"()
10620   %vec1 = call <3 x float> asm "; def $0", "=s"()
10621   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 2>
10622   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10623   ret void
10626 define void @s_shuffle_v4f32_v3f32__5_5_3_2() {
10627 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_3_2:
10628 ; GFX900:       ; %bb.0:
10629 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10630 ; GFX900-NEXT:    ;;#ASMSTART
10631 ; GFX900-NEXT:    ; def s[4:6]
10632 ; GFX900-NEXT:    ;;#ASMEND
10633 ; GFX900-NEXT:    ;;#ASMSTART
10634 ; GFX900-NEXT:    ; def s[12:14]
10635 ; GFX900-NEXT:    ;;#ASMEND
10636 ; GFX900-NEXT:    s_mov_b32 s8, s14
10637 ; GFX900-NEXT:    s_mov_b32 s9, s14
10638 ; GFX900-NEXT:    s_mov_b32 s10, s12
10639 ; GFX900-NEXT:    s_mov_b32 s11, s6
10640 ; GFX900-NEXT:    ;;#ASMSTART
10641 ; GFX900-NEXT:    ; use s[8:11]
10642 ; GFX900-NEXT:    ;;#ASMEND
10643 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10645 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_3_2:
10646 ; GFX90A:       ; %bb.0:
10647 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10648 ; GFX90A-NEXT:    ;;#ASMSTART
10649 ; GFX90A-NEXT:    ; def s[4:6]
10650 ; GFX90A-NEXT:    ;;#ASMEND
10651 ; GFX90A-NEXT:    ;;#ASMSTART
10652 ; GFX90A-NEXT:    ; def s[12:14]
10653 ; GFX90A-NEXT:    ;;#ASMEND
10654 ; GFX90A-NEXT:    s_mov_b32 s8, s14
10655 ; GFX90A-NEXT:    s_mov_b32 s9, s14
10656 ; GFX90A-NEXT:    s_mov_b32 s10, s12
10657 ; GFX90A-NEXT:    s_mov_b32 s11, s6
10658 ; GFX90A-NEXT:    ;;#ASMSTART
10659 ; GFX90A-NEXT:    ; use s[8:11]
10660 ; GFX90A-NEXT:    ;;#ASMEND
10661 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10663 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_3_2:
10664 ; GFX940:       ; %bb.0:
10665 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10666 ; GFX940-NEXT:    ;;#ASMSTART
10667 ; GFX940-NEXT:    ; def s[0:2]
10668 ; GFX940-NEXT:    ;;#ASMEND
10669 ; GFX940-NEXT:    ;;#ASMSTART
10670 ; GFX940-NEXT:    ; def s[4:6]
10671 ; GFX940-NEXT:    ;;#ASMEND
10672 ; GFX940-NEXT:    s_mov_b32 s8, s6
10673 ; GFX940-NEXT:    s_mov_b32 s9, s6
10674 ; GFX940-NEXT:    s_mov_b32 s10, s4
10675 ; GFX940-NEXT:    s_mov_b32 s11, s2
10676 ; GFX940-NEXT:    ;;#ASMSTART
10677 ; GFX940-NEXT:    ; use s[8:11]
10678 ; GFX940-NEXT:    ;;#ASMEND
10679 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10680   %vec0 = call <3 x float> asm "; def $0", "=s"()
10681   %vec1 = call <3 x float> asm "; def $0", "=s"()
10682   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 2>
10683   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10684   ret void
10687 define void @s_shuffle_v4f32_v3f32__5_5_4_2() {
10688 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_4_2:
10689 ; GFX900:       ; %bb.0:
10690 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10691 ; GFX900-NEXT:    ;;#ASMSTART
10692 ; GFX900-NEXT:    ; def s[4:6]
10693 ; GFX900-NEXT:    ;;#ASMEND
10694 ; GFX900-NEXT:    ;;#ASMSTART
10695 ; GFX900-NEXT:    ; def s[12:14]
10696 ; GFX900-NEXT:    ;;#ASMEND
10697 ; GFX900-NEXT:    s_mov_b32 s8, s14
10698 ; GFX900-NEXT:    s_mov_b32 s9, s14
10699 ; GFX900-NEXT:    s_mov_b32 s10, s13
10700 ; GFX900-NEXT:    s_mov_b32 s11, s6
10701 ; GFX900-NEXT:    ;;#ASMSTART
10702 ; GFX900-NEXT:    ; use s[8:11]
10703 ; GFX900-NEXT:    ;;#ASMEND
10704 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10706 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_4_2:
10707 ; GFX90A:       ; %bb.0:
10708 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10709 ; GFX90A-NEXT:    ;;#ASMSTART
10710 ; GFX90A-NEXT:    ; def s[4:6]
10711 ; GFX90A-NEXT:    ;;#ASMEND
10712 ; GFX90A-NEXT:    ;;#ASMSTART
10713 ; GFX90A-NEXT:    ; def s[12:14]
10714 ; GFX90A-NEXT:    ;;#ASMEND
10715 ; GFX90A-NEXT:    s_mov_b32 s8, s14
10716 ; GFX90A-NEXT:    s_mov_b32 s9, s14
10717 ; GFX90A-NEXT:    s_mov_b32 s10, s13
10718 ; GFX90A-NEXT:    s_mov_b32 s11, s6
10719 ; GFX90A-NEXT:    ;;#ASMSTART
10720 ; GFX90A-NEXT:    ; use s[8:11]
10721 ; GFX90A-NEXT:    ;;#ASMEND
10722 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10724 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_4_2:
10725 ; GFX940:       ; %bb.0:
10726 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10727 ; GFX940-NEXT:    ;;#ASMSTART
10728 ; GFX940-NEXT:    ; def s[0:2]
10729 ; GFX940-NEXT:    ;;#ASMEND
10730 ; GFX940-NEXT:    ;;#ASMSTART
10731 ; GFX940-NEXT:    ; def s[4:6]
10732 ; GFX940-NEXT:    ;;#ASMEND
10733 ; GFX940-NEXT:    s_mov_b32 s8, s6
10734 ; GFX940-NEXT:    s_mov_b32 s9, s6
10735 ; GFX940-NEXT:    s_mov_b32 s10, s5
10736 ; GFX940-NEXT:    s_mov_b32 s11, s2
10737 ; GFX940-NEXT:    ;;#ASMSTART
10738 ; GFX940-NEXT:    ; use s[8:11]
10739 ; GFX940-NEXT:    ;;#ASMEND
10740 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10741   %vec0 = call <3 x float> asm "; def $0", "=s"()
10742   %vec1 = call <3 x float> asm "; def $0", "=s"()
10743   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 2>
10744   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10745   ret void
10748 define void @s_shuffle_v4f32_v3f32__u_3_3_3() {
10749 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__u_3_3_3:
10750 ; GFX9:       ; %bb.0:
10751 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10752 ; GFX9-NEXT:    ;;#ASMSTART
10753 ; GFX9-NEXT:    ; use s[8:11]
10754 ; GFX9-NEXT:    ;;#ASMEND
10755 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
10756   %vec0 = call <3 x float> asm "; def $0", "=s"()
10757   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>
10758   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10759   ret void
10762 define void @s_shuffle_v4f32_v3f32__0_3_3_3() {
10763 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__0_3_3_3:
10764 ; GFX900:       ; %bb.0:
10765 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10766 ; GFX900-NEXT:    ;;#ASMSTART
10767 ; GFX900-NEXT:    ; def s[8:10]
10768 ; GFX900-NEXT:    ;;#ASMEND
10769 ; GFX900-NEXT:    ;;#ASMSTART
10770 ; GFX900-NEXT:    ; use s[8:11]
10771 ; GFX900-NEXT:    ;;#ASMEND
10772 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10774 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__0_3_3_3:
10775 ; GFX90A:       ; %bb.0:
10776 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10777 ; GFX90A-NEXT:    ;;#ASMSTART
10778 ; GFX90A-NEXT:    ; def s[8:10]
10779 ; GFX90A-NEXT:    ;;#ASMEND
10780 ; GFX90A-NEXT:    ;;#ASMSTART
10781 ; GFX90A-NEXT:    ; use s[8:11]
10782 ; GFX90A-NEXT:    ;;#ASMEND
10783 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10785 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__0_3_3_3:
10786 ; GFX940:       ; %bb.0:
10787 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10788 ; GFX940-NEXT:    ;;#ASMSTART
10789 ; GFX940-NEXT:    ; def s[8:10]
10790 ; GFX940-NEXT:    ;;#ASMEND
10791 ; GFX940-NEXT:    s_nop 0
10792 ; GFX940-NEXT:    ;;#ASMSTART
10793 ; GFX940-NEXT:    ; use s[8:11]
10794 ; GFX940-NEXT:    ;;#ASMEND
10795 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10796   %vec0 = call <3 x float> asm "; def $0", "=s"()
10797   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>
10798   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10799   ret void
10802 define void @s_shuffle_v4f32_v3f32__1_3_3_3() {
10803 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__1_3_3_3:
10804 ; GFX900:       ; %bb.0:
10805 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10806 ; GFX900-NEXT:    ;;#ASMSTART
10807 ; GFX900-NEXT:    ; def s[4:6]
10808 ; GFX900-NEXT:    ;;#ASMEND
10809 ; GFX900-NEXT:    s_mov_b32 s8, s5
10810 ; GFX900-NEXT:    ;;#ASMSTART
10811 ; GFX900-NEXT:    ; use s[8:11]
10812 ; GFX900-NEXT:    ;;#ASMEND
10813 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10815 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__1_3_3_3:
10816 ; GFX90A:       ; %bb.0:
10817 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10818 ; GFX90A-NEXT:    ;;#ASMSTART
10819 ; GFX90A-NEXT:    ; def s[4:6]
10820 ; GFX90A-NEXT:    ;;#ASMEND
10821 ; GFX90A-NEXT:    s_mov_b32 s8, s5
10822 ; GFX90A-NEXT:    ;;#ASMSTART
10823 ; GFX90A-NEXT:    ; use s[8:11]
10824 ; GFX90A-NEXT:    ;;#ASMEND
10825 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10827 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__1_3_3_3:
10828 ; GFX940:       ; %bb.0:
10829 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10830 ; GFX940-NEXT:    ;;#ASMSTART
10831 ; GFX940-NEXT:    ; def s[0:2]
10832 ; GFX940-NEXT:    ;;#ASMEND
10833 ; GFX940-NEXT:    s_mov_b32 s8, s1
10834 ; GFX940-NEXT:    ;;#ASMSTART
10835 ; GFX940-NEXT:    ; use s[8:11]
10836 ; GFX940-NEXT:    ;;#ASMEND
10837 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10838   %vec0 = call <3 x float> asm "; def $0", "=s"()
10839   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>
10840   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10841   ret void
10844 define void @s_shuffle_v4f32_v3f32__2_3_3_3() {
10845 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__2_3_3_3:
10846 ; GFX900:       ; %bb.0:
10847 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10848 ; GFX900-NEXT:    ;;#ASMSTART
10849 ; GFX900-NEXT:    ; def s[4:6]
10850 ; GFX900-NEXT:    ;;#ASMEND
10851 ; GFX900-NEXT:    s_mov_b32 s8, s6
10852 ; GFX900-NEXT:    ;;#ASMSTART
10853 ; GFX900-NEXT:    ; use s[8:11]
10854 ; GFX900-NEXT:    ;;#ASMEND
10855 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10857 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__2_3_3_3:
10858 ; GFX90A:       ; %bb.0:
10859 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10860 ; GFX90A-NEXT:    ;;#ASMSTART
10861 ; GFX90A-NEXT:    ; def s[4:6]
10862 ; GFX90A-NEXT:    ;;#ASMEND
10863 ; GFX90A-NEXT:    s_mov_b32 s8, s6
10864 ; GFX90A-NEXT:    ;;#ASMSTART
10865 ; GFX90A-NEXT:    ; use s[8:11]
10866 ; GFX90A-NEXT:    ;;#ASMEND
10867 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10869 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__2_3_3_3:
10870 ; GFX940:       ; %bb.0:
10871 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10872 ; GFX940-NEXT:    ;;#ASMSTART
10873 ; GFX940-NEXT:    ; def s[0:2]
10874 ; GFX940-NEXT:    ;;#ASMEND
10875 ; GFX940-NEXT:    s_mov_b32 s8, s2
10876 ; GFX940-NEXT:    ;;#ASMSTART
10877 ; GFX940-NEXT:    ; use s[8:11]
10878 ; GFX940-NEXT:    ;;#ASMEND
10879 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10880   %vec0 = call <3 x float> asm "; def $0", "=s"()
10881   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>
10882   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10883   ret void
10886 define void @s_shuffle_v4f32_v3f32__3_3_3_3() {
10887 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__3_3_3_3:
10888 ; GFX9:       ; %bb.0:
10889 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10890 ; GFX9-NEXT:    ;;#ASMSTART
10891 ; GFX9-NEXT:    ; use s[8:11]
10892 ; GFX9-NEXT:    ;;#ASMEND
10893 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
10894   %vec0 = call <3 x float> asm "; def $0", "=s"()
10895   %shuf = shufflevector <3 x float> %vec0, <3 x float> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
10896   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10897   ret void
10900 define void @s_shuffle_v4f32_v3f32__4_3_3_3() {
10901 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__4_3_3_3:
10902 ; GFX900:       ; %bb.0:
10903 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10904 ; GFX900-NEXT:    ;;#ASMSTART
10905 ; GFX900-NEXT:    ; def s[4:6]
10906 ; GFX900-NEXT:    ;;#ASMEND
10907 ; GFX900-NEXT:    s_mov_b32 s8, s5
10908 ; GFX900-NEXT:    s_mov_b32 s9, s4
10909 ; GFX900-NEXT:    s_mov_b32 s10, s4
10910 ; GFX900-NEXT:    s_mov_b32 s11, s4
10911 ; GFX900-NEXT:    ;;#ASMSTART
10912 ; GFX900-NEXT:    ; use s[8:11]
10913 ; GFX900-NEXT:    ;;#ASMEND
10914 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10916 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__4_3_3_3:
10917 ; GFX90A:       ; %bb.0:
10918 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10919 ; GFX90A-NEXT:    ;;#ASMSTART
10920 ; GFX90A-NEXT:    ; def s[4:6]
10921 ; GFX90A-NEXT:    ;;#ASMEND
10922 ; GFX90A-NEXT:    s_mov_b32 s8, s5
10923 ; GFX90A-NEXT:    s_mov_b32 s9, s4
10924 ; GFX90A-NEXT:    s_mov_b32 s10, s4
10925 ; GFX90A-NEXT:    s_mov_b32 s11, s4
10926 ; GFX90A-NEXT:    ;;#ASMSTART
10927 ; GFX90A-NEXT:    ; use s[8:11]
10928 ; GFX90A-NEXT:    ;;#ASMEND
10929 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10931 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__4_3_3_3:
10932 ; GFX940:       ; %bb.0:
10933 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10934 ; GFX940-NEXT:    ;;#ASMSTART
10935 ; GFX940-NEXT:    ; def s[0:2]
10936 ; GFX940-NEXT:    ;;#ASMEND
10937 ; GFX940-NEXT:    s_mov_b32 s8, s1
10938 ; GFX940-NEXT:    s_mov_b32 s9, s0
10939 ; GFX940-NEXT:    s_mov_b32 s10, s0
10940 ; GFX940-NEXT:    s_mov_b32 s11, s0
10941 ; GFX940-NEXT:    ;;#ASMSTART
10942 ; GFX940-NEXT:    ; use s[8:11]
10943 ; GFX940-NEXT:    ;;#ASMEND
10944 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10945   %vec0 = call <3 x float> asm "; def $0", "=s"()
10946   %vec1 = call <3 x float> asm "; def $0", "=s"()
10947   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 3, i32 3, i32 3>
10948   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
10949   ret void
10952 define void @s_shuffle_v4f32_v3f32__5_3_3_3() {
10953 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_3_3_3:
10954 ; GFX900:       ; %bb.0:
10955 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10956 ; GFX900-NEXT:    ;;#ASMSTART
10957 ; GFX900-NEXT:    ; def s[4:6]
10958 ; GFX900-NEXT:    ;;#ASMEND
10959 ; GFX900-NEXT:    s_mov_b32 s8, s6
10960 ; GFX900-NEXT:    s_mov_b32 s9, s4
10961 ; GFX900-NEXT:    s_mov_b32 s10, s4
10962 ; GFX900-NEXT:    s_mov_b32 s11, s4
10963 ; GFX900-NEXT:    ;;#ASMSTART
10964 ; GFX900-NEXT:    ; use s[8:11]
10965 ; GFX900-NEXT:    ;;#ASMEND
10966 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
10968 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_3_3_3:
10969 ; GFX90A:       ; %bb.0:
10970 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10971 ; GFX90A-NEXT:    ;;#ASMSTART
10972 ; GFX90A-NEXT:    ; def s[4:6]
10973 ; GFX90A-NEXT:    ;;#ASMEND
10974 ; GFX90A-NEXT:    s_mov_b32 s8, s6
10975 ; GFX90A-NEXT:    s_mov_b32 s9, s4
10976 ; GFX90A-NEXT:    s_mov_b32 s10, s4
10977 ; GFX90A-NEXT:    s_mov_b32 s11, s4
10978 ; GFX90A-NEXT:    ;;#ASMSTART
10979 ; GFX90A-NEXT:    ; use s[8:11]
10980 ; GFX90A-NEXT:    ;;#ASMEND
10981 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10983 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_3_3_3:
10984 ; GFX940:       ; %bb.0:
10985 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10986 ; GFX940-NEXT:    ;;#ASMSTART
10987 ; GFX940-NEXT:    ; def s[0:2]
10988 ; GFX940-NEXT:    ;;#ASMEND
10989 ; GFX940-NEXT:    s_mov_b32 s8, s2
10990 ; GFX940-NEXT:    s_mov_b32 s9, s0
10991 ; GFX940-NEXT:    s_mov_b32 s10, s0
10992 ; GFX940-NEXT:    s_mov_b32 s11, s0
10993 ; GFX940-NEXT:    ;;#ASMSTART
10994 ; GFX940-NEXT:    ; use s[8:11]
10995 ; GFX940-NEXT:    ;;#ASMEND
10996 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
10997   %vec0 = call <3 x float> asm "; def $0", "=s"()
10998   %vec1 = call <3 x float> asm "; def $0", "=s"()
10999   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>
11000   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11001   ret void
11004 define void @s_shuffle_v4f32_v3f32__5_u_3_3() {
11005 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_u_3_3:
11006 ; GFX900:       ; %bb.0:
11007 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11008 ; GFX900-NEXT:    ;;#ASMSTART
11009 ; GFX900-NEXT:    ; def s[4:6]
11010 ; GFX900-NEXT:    ;;#ASMEND
11011 ; GFX900-NEXT:    s_mov_b32 s8, s6
11012 ; GFX900-NEXT:    s_mov_b32 s10, s4
11013 ; GFX900-NEXT:    s_mov_b32 s11, s4
11014 ; GFX900-NEXT:    ;;#ASMSTART
11015 ; GFX900-NEXT:    ; use s[8:11]
11016 ; GFX900-NEXT:    ;;#ASMEND
11017 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11019 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_u_3_3:
11020 ; GFX90A:       ; %bb.0:
11021 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11022 ; GFX90A-NEXT:    ;;#ASMSTART
11023 ; GFX90A-NEXT:    ; def s[4:6]
11024 ; GFX90A-NEXT:    ;;#ASMEND
11025 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11026 ; GFX90A-NEXT:    s_mov_b32 s10, s4
11027 ; GFX90A-NEXT:    s_mov_b32 s11, s4
11028 ; GFX90A-NEXT:    ;;#ASMSTART
11029 ; GFX90A-NEXT:    ; use s[8:11]
11030 ; GFX90A-NEXT:    ;;#ASMEND
11031 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11033 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_u_3_3:
11034 ; GFX940:       ; %bb.0:
11035 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11036 ; GFX940-NEXT:    ;;#ASMSTART
11037 ; GFX940-NEXT:    ; def s[0:2]
11038 ; GFX940-NEXT:    ;;#ASMEND
11039 ; GFX940-NEXT:    s_mov_b32 s8, s2
11040 ; GFX940-NEXT:    s_mov_b32 s10, s0
11041 ; GFX940-NEXT:    s_mov_b32 s11, s0
11042 ; GFX940-NEXT:    ;;#ASMSTART
11043 ; GFX940-NEXT:    ; use s[8:11]
11044 ; GFX940-NEXT:    ;;#ASMEND
11045 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11046   %vec0 = call <3 x float> asm "; def $0", "=s"()
11047   %vec1 = call <3 x float> asm "; def $0", "=s"()
11048   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>
11049   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11050   ret void
11053 define void @s_shuffle_v4f32_v3f32__5_0_3_3() {
11054 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_0_3_3:
11055 ; GFX900:       ; %bb.0:
11056 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11057 ; GFX900-NEXT:    ;;#ASMSTART
11058 ; GFX900-NEXT:    ; def s[4:6]
11059 ; GFX900-NEXT:    ;;#ASMEND
11060 ; GFX900-NEXT:    ;;#ASMSTART
11061 ; GFX900-NEXT:    ; def s[12:14]
11062 ; GFX900-NEXT:    ;;#ASMEND
11063 ; GFX900-NEXT:    s_mov_b32 s8, s14
11064 ; GFX900-NEXT:    s_mov_b32 s9, s4
11065 ; GFX900-NEXT:    s_mov_b32 s10, s12
11066 ; GFX900-NEXT:    s_mov_b32 s11, s12
11067 ; GFX900-NEXT:    ;;#ASMSTART
11068 ; GFX900-NEXT:    ; use s[8:11]
11069 ; GFX900-NEXT:    ;;#ASMEND
11070 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11072 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_0_3_3:
11073 ; GFX90A:       ; %bb.0:
11074 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11075 ; GFX90A-NEXT:    ;;#ASMSTART
11076 ; GFX90A-NEXT:    ; def s[4:6]
11077 ; GFX90A-NEXT:    ;;#ASMEND
11078 ; GFX90A-NEXT:    ;;#ASMSTART
11079 ; GFX90A-NEXT:    ; def s[12:14]
11080 ; GFX90A-NEXT:    ;;#ASMEND
11081 ; GFX90A-NEXT:    s_mov_b32 s8, s14
11082 ; GFX90A-NEXT:    s_mov_b32 s9, s4
11083 ; GFX90A-NEXT:    s_mov_b32 s10, s12
11084 ; GFX90A-NEXT:    s_mov_b32 s11, s12
11085 ; GFX90A-NEXT:    ;;#ASMSTART
11086 ; GFX90A-NEXT:    ; use s[8:11]
11087 ; GFX90A-NEXT:    ;;#ASMEND
11088 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11090 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_0_3_3:
11091 ; GFX940:       ; %bb.0:
11092 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11093 ; GFX940-NEXT:    ;;#ASMSTART
11094 ; GFX940-NEXT:    ; def s[0:2]
11095 ; GFX940-NEXT:    ;;#ASMEND
11096 ; GFX940-NEXT:    ;;#ASMSTART
11097 ; GFX940-NEXT:    ; def s[4:6]
11098 ; GFX940-NEXT:    ;;#ASMEND
11099 ; GFX940-NEXT:    s_mov_b32 s8, s6
11100 ; GFX940-NEXT:    s_mov_b32 s9, s0
11101 ; GFX940-NEXT:    s_mov_b32 s10, s4
11102 ; GFX940-NEXT:    s_mov_b32 s11, s4
11103 ; GFX940-NEXT:    ;;#ASMSTART
11104 ; GFX940-NEXT:    ; use s[8:11]
11105 ; GFX940-NEXT:    ;;#ASMEND
11106 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11107   %vec0 = call <3 x float> asm "; def $0", "=s"()
11108   %vec1 = call <3 x float> asm "; def $0", "=s"()
11109   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 3, i32 3>
11110   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11111   ret void
11114 define void @s_shuffle_v4f32_v3f32__5_1_3_3() {
11115 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_1_3_3:
11116 ; GFX900:       ; %bb.0:
11117 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11118 ; GFX900-NEXT:    ;;#ASMSTART
11119 ; GFX900-NEXT:    ; def s[8:10]
11120 ; GFX900-NEXT:    ;;#ASMEND
11121 ; GFX900-NEXT:    ;;#ASMSTART
11122 ; GFX900-NEXT:    ; def s[4:6]
11123 ; GFX900-NEXT:    ;;#ASMEND
11124 ; GFX900-NEXT:    s_mov_b32 s8, s6
11125 ; GFX900-NEXT:    s_mov_b32 s10, s4
11126 ; GFX900-NEXT:    s_mov_b32 s11, s4
11127 ; GFX900-NEXT:    ;;#ASMSTART
11128 ; GFX900-NEXT:    ; use s[8:11]
11129 ; GFX900-NEXT:    ;;#ASMEND
11130 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11132 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_1_3_3:
11133 ; GFX90A:       ; %bb.0:
11134 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11135 ; GFX90A-NEXT:    ;;#ASMSTART
11136 ; GFX90A-NEXT:    ; def s[8:10]
11137 ; GFX90A-NEXT:    ;;#ASMEND
11138 ; GFX90A-NEXT:    ;;#ASMSTART
11139 ; GFX90A-NEXT:    ; def s[4:6]
11140 ; GFX90A-NEXT:    ;;#ASMEND
11141 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11142 ; GFX90A-NEXT:    s_mov_b32 s10, s4
11143 ; GFX90A-NEXT:    s_mov_b32 s11, s4
11144 ; GFX90A-NEXT:    ;;#ASMSTART
11145 ; GFX90A-NEXT:    ; use s[8:11]
11146 ; GFX90A-NEXT:    ;;#ASMEND
11147 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11149 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_1_3_3:
11150 ; GFX940:       ; %bb.0:
11151 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11152 ; GFX940-NEXT:    ;;#ASMSTART
11153 ; GFX940-NEXT:    ; def s[8:10]
11154 ; GFX940-NEXT:    ;;#ASMEND
11155 ; GFX940-NEXT:    ;;#ASMSTART
11156 ; GFX940-NEXT:    ; def s[0:2]
11157 ; GFX940-NEXT:    ;;#ASMEND
11158 ; GFX940-NEXT:    s_mov_b32 s8, s2
11159 ; GFX940-NEXT:    s_mov_b32 s10, s0
11160 ; GFX940-NEXT:    s_mov_b32 s11, s0
11161 ; GFX940-NEXT:    ;;#ASMSTART
11162 ; GFX940-NEXT:    ; use s[8:11]
11163 ; GFX940-NEXT:    ;;#ASMEND
11164 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11165   %vec0 = call <3 x float> asm "; def $0", "=s"()
11166   %vec1 = call <3 x float> asm "; def $0", "=s"()
11167   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 3, i32 3>
11168   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11169   ret void
11172 define void @s_shuffle_v4f32_v3f32__5_2_3_3() {
11173 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_2_3_3:
11174 ; GFX900:       ; %bb.0:
11175 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11176 ; GFX900-NEXT:    ;;#ASMSTART
11177 ; GFX900-NEXT:    ; def s[4:6]
11178 ; GFX900-NEXT:    ;;#ASMEND
11179 ; GFX900-NEXT:    ;;#ASMSTART
11180 ; GFX900-NEXT:    ; def s[12:14]
11181 ; GFX900-NEXT:    ;;#ASMEND
11182 ; GFX900-NEXT:    s_mov_b32 s8, s14
11183 ; GFX900-NEXT:    s_mov_b32 s9, s6
11184 ; GFX900-NEXT:    s_mov_b32 s10, s12
11185 ; GFX900-NEXT:    s_mov_b32 s11, s12
11186 ; GFX900-NEXT:    ;;#ASMSTART
11187 ; GFX900-NEXT:    ; use s[8:11]
11188 ; GFX900-NEXT:    ;;#ASMEND
11189 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11191 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_2_3_3:
11192 ; GFX90A:       ; %bb.0:
11193 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11194 ; GFX90A-NEXT:    ;;#ASMSTART
11195 ; GFX90A-NEXT:    ; def s[4:6]
11196 ; GFX90A-NEXT:    ;;#ASMEND
11197 ; GFX90A-NEXT:    ;;#ASMSTART
11198 ; GFX90A-NEXT:    ; def s[12:14]
11199 ; GFX90A-NEXT:    ;;#ASMEND
11200 ; GFX90A-NEXT:    s_mov_b32 s8, s14
11201 ; GFX90A-NEXT:    s_mov_b32 s9, s6
11202 ; GFX90A-NEXT:    s_mov_b32 s10, s12
11203 ; GFX90A-NEXT:    s_mov_b32 s11, s12
11204 ; GFX90A-NEXT:    ;;#ASMSTART
11205 ; GFX90A-NEXT:    ; use s[8:11]
11206 ; GFX90A-NEXT:    ;;#ASMEND
11207 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11209 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_2_3_3:
11210 ; GFX940:       ; %bb.0:
11211 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11212 ; GFX940-NEXT:    ;;#ASMSTART
11213 ; GFX940-NEXT:    ; def s[0:2]
11214 ; GFX940-NEXT:    ;;#ASMEND
11215 ; GFX940-NEXT:    ;;#ASMSTART
11216 ; GFX940-NEXT:    ; def s[4:6]
11217 ; GFX940-NEXT:    ;;#ASMEND
11218 ; GFX940-NEXT:    s_mov_b32 s8, s6
11219 ; GFX940-NEXT:    s_mov_b32 s9, s2
11220 ; GFX940-NEXT:    s_mov_b32 s10, s4
11221 ; GFX940-NEXT:    s_mov_b32 s11, s4
11222 ; GFX940-NEXT:    ;;#ASMSTART
11223 ; GFX940-NEXT:    ; use s[8:11]
11224 ; GFX940-NEXT:    ;;#ASMEND
11225 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11226   %vec0 = call <3 x float> asm "; def $0", "=s"()
11227   %vec1 = call <3 x float> asm "; def $0", "=s"()
11228   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 3, i32 3>
11229   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11230   ret void
11233 define void @s_shuffle_v4f32_v3f32__5_4_3_3() {
11234 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_4_3_3:
11235 ; GFX900:       ; %bb.0:
11236 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11237 ; GFX900-NEXT:    ;;#ASMSTART
11238 ; GFX900-NEXT:    ; def s[4:6]
11239 ; GFX900-NEXT:    ;;#ASMEND
11240 ; GFX900-NEXT:    s_mov_b32 s8, s6
11241 ; GFX900-NEXT:    s_mov_b32 s9, s5
11242 ; GFX900-NEXT:    s_mov_b32 s10, s4
11243 ; GFX900-NEXT:    s_mov_b32 s11, s4
11244 ; GFX900-NEXT:    ;;#ASMSTART
11245 ; GFX900-NEXT:    ; use s[8:11]
11246 ; GFX900-NEXT:    ;;#ASMEND
11247 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11249 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_4_3_3:
11250 ; GFX90A:       ; %bb.0:
11251 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11252 ; GFX90A-NEXT:    ;;#ASMSTART
11253 ; GFX90A-NEXT:    ; def s[4:6]
11254 ; GFX90A-NEXT:    ;;#ASMEND
11255 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11256 ; GFX90A-NEXT:    s_mov_b32 s9, s5
11257 ; GFX90A-NEXT:    s_mov_b32 s10, s4
11258 ; GFX90A-NEXT:    s_mov_b32 s11, s4
11259 ; GFX90A-NEXT:    ;;#ASMSTART
11260 ; GFX90A-NEXT:    ; use s[8:11]
11261 ; GFX90A-NEXT:    ;;#ASMEND
11262 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11264 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_4_3_3:
11265 ; GFX940:       ; %bb.0:
11266 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11267 ; GFX940-NEXT:    ;;#ASMSTART
11268 ; GFX940-NEXT:    ; def s[0:2]
11269 ; GFX940-NEXT:    ;;#ASMEND
11270 ; GFX940-NEXT:    s_mov_b32 s8, s2
11271 ; GFX940-NEXT:    s_mov_b32 s9, s1
11272 ; GFX940-NEXT:    s_mov_b32 s10, s0
11273 ; GFX940-NEXT:    s_mov_b32 s11, s0
11274 ; GFX940-NEXT:    ;;#ASMSTART
11275 ; GFX940-NEXT:    ; use s[8:11]
11276 ; GFX940-NEXT:    ;;#ASMEND
11277 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11278   %vec0 = call <3 x float> asm "; def $0", "=s"()
11279   %vec1 = call <3 x float> asm "; def $0", "=s"()
11280   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 3, i32 3>
11281   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11282   ret void
11285 define void @s_shuffle_v4f32_v3f32__5_5_3_3() {
11286 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_3_3:
11287 ; GFX900:       ; %bb.0:
11288 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11289 ; GFX900-NEXT:    ;;#ASMSTART
11290 ; GFX900-NEXT:    ; def s[4:6]
11291 ; GFX900-NEXT:    ;;#ASMEND
11292 ; GFX900-NEXT:    s_mov_b32 s8, s6
11293 ; GFX900-NEXT:    s_mov_b32 s9, s6
11294 ; GFX900-NEXT:    s_mov_b32 s10, s4
11295 ; GFX900-NEXT:    s_mov_b32 s11, s4
11296 ; GFX900-NEXT:    ;;#ASMSTART
11297 ; GFX900-NEXT:    ; use s[8:11]
11298 ; GFX900-NEXT:    ;;#ASMEND
11299 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11301 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_3_3:
11302 ; GFX90A:       ; %bb.0:
11303 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11304 ; GFX90A-NEXT:    ;;#ASMSTART
11305 ; GFX90A-NEXT:    ; def s[4:6]
11306 ; GFX90A-NEXT:    ;;#ASMEND
11307 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11308 ; GFX90A-NEXT:    s_mov_b32 s9, s6
11309 ; GFX90A-NEXT:    s_mov_b32 s10, s4
11310 ; GFX90A-NEXT:    s_mov_b32 s11, s4
11311 ; GFX90A-NEXT:    ;;#ASMSTART
11312 ; GFX90A-NEXT:    ; use s[8:11]
11313 ; GFX90A-NEXT:    ;;#ASMEND
11314 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11316 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_3_3:
11317 ; GFX940:       ; %bb.0:
11318 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11319 ; GFX940-NEXT:    ;;#ASMSTART
11320 ; GFX940-NEXT:    ; def s[0:2]
11321 ; GFX940-NEXT:    ;;#ASMEND
11322 ; GFX940-NEXT:    s_mov_b32 s8, s2
11323 ; GFX940-NEXT:    s_mov_b32 s9, s2
11324 ; GFX940-NEXT:    s_mov_b32 s10, s0
11325 ; GFX940-NEXT:    s_mov_b32 s11, s0
11326 ; GFX940-NEXT:    ;;#ASMSTART
11327 ; GFX940-NEXT:    ; use s[8:11]
11328 ; GFX940-NEXT:    ;;#ASMEND
11329 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11330   %vec0 = call <3 x float> asm "; def $0", "=s"()
11331   %vec1 = call <3 x float> asm "; def $0", "=s"()
11332   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 3>
11333   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11334   ret void
11337 define void @s_shuffle_v4f32_v3f32__5_5_u_3() {
11338 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_u_3:
11339 ; GFX900:       ; %bb.0:
11340 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11341 ; GFX900-NEXT:    ;;#ASMSTART
11342 ; GFX900-NEXT:    ; def s[4:6]
11343 ; GFX900-NEXT:    ;;#ASMEND
11344 ; GFX900-NEXT:    s_mov_b32 s8, s6
11345 ; GFX900-NEXT:    s_mov_b32 s9, s6
11346 ; GFX900-NEXT:    s_mov_b32 s11, s4
11347 ; GFX900-NEXT:    ;;#ASMSTART
11348 ; GFX900-NEXT:    ; use s[8:11]
11349 ; GFX900-NEXT:    ;;#ASMEND
11350 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11352 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_u_3:
11353 ; GFX90A:       ; %bb.0:
11354 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11355 ; GFX90A-NEXT:    ;;#ASMSTART
11356 ; GFX90A-NEXT:    ; def s[4:6]
11357 ; GFX90A-NEXT:    ;;#ASMEND
11358 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11359 ; GFX90A-NEXT:    s_mov_b32 s9, s6
11360 ; GFX90A-NEXT:    s_mov_b32 s11, s4
11361 ; GFX90A-NEXT:    ;;#ASMSTART
11362 ; GFX90A-NEXT:    ; use s[8:11]
11363 ; GFX90A-NEXT:    ;;#ASMEND
11364 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11366 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_u_3:
11367 ; GFX940:       ; %bb.0:
11368 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11369 ; GFX940-NEXT:    ;;#ASMSTART
11370 ; GFX940-NEXT:    ; def s[0:2]
11371 ; GFX940-NEXT:    ;;#ASMEND
11372 ; GFX940-NEXT:    s_mov_b32 s8, s2
11373 ; GFX940-NEXT:    s_mov_b32 s9, s2
11374 ; GFX940-NEXT:    s_mov_b32 s11, s0
11375 ; GFX940-NEXT:    ;;#ASMSTART
11376 ; GFX940-NEXT:    ; use s[8:11]
11377 ; GFX940-NEXT:    ;;#ASMEND
11378 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11379   %vec0 = call <3 x float> asm "; def $0", "=s"()
11380   %vec1 = call <3 x float> asm "; def $0", "=s"()
11381   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>
11382   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11383   ret void
11386 define void @s_shuffle_v4f32_v3f32__5_5_0_3() {
11387 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_0_3:
11388 ; GFX900:       ; %bb.0:
11389 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11390 ; GFX900-NEXT:    ;;#ASMSTART
11391 ; GFX900-NEXT:    ; def s[4:6]
11392 ; GFX900-NEXT:    ;;#ASMEND
11393 ; GFX900-NEXT:    ;;#ASMSTART
11394 ; GFX900-NEXT:    ; def s[12:14]
11395 ; GFX900-NEXT:    ;;#ASMEND
11396 ; GFX900-NEXT:    s_mov_b32 s8, s14
11397 ; GFX900-NEXT:    s_mov_b32 s9, s14
11398 ; GFX900-NEXT:    s_mov_b32 s10, s4
11399 ; GFX900-NEXT:    s_mov_b32 s11, s12
11400 ; GFX900-NEXT:    ;;#ASMSTART
11401 ; GFX900-NEXT:    ; use s[8:11]
11402 ; GFX900-NEXT:    ;;#ASMEND
11403 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11405 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_0_3:
11406 ; GFX90A:       ; %bb.0:
11407 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11408 ; GFX90A-NEXT:    ;;#ASMSTART
11409 ; GFX90A-NEXT:    ; def s[4:6]
11410 ; GFX90A-NEXT:    ;;#ASMEND
11411 ; GFX90A-NEXT:    ;;#ASMSTART
11412 ; GFX90A-NEXT:    ; def s[12:14]
11413 ; GFX90A-NEXT:    ;;#ASMEND
11414 ; GFX90A-NEXT:    s_mov_b32 s8, s14
11415 ; GFX90A-NEXT:    s_mov_b32 s9, s14
11416 ; GFX90A-NEXT:    s_mov_b32 s10, s4
11417 ; GFX90A-NEXT:    s_mov_b32 s11, s12
11418 ; GFX90A-NEXT:    ;;#ASMSTART
11419 ; GFX90A-NEXT:    ; use s[8:11]
11420 ; GFX90A-NEXT:    ;;#ASMEND
11421 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11423 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_0_3:
11424 ; GFX940:       ; %bb.0:
11425 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11426 ; GFX940-NEXT:    ;;#ASMSTART
11427 ; GFX940-NEXT:    ; def s[0:2]
11428 ; GFX940-NEXT:    ;;#ASMEND
11429 ; GFX940-NEXT:    ;;#ASMSTART
11430 ; GFX940-NEXT:    ; def s[4:6]
11431 ; GFX940-NEXT:    ;;#ASMEND
11432 ; GFX940-NEXT:    s_mov_b32 s8, s6
11433 ; GFX940-NEXT:    s_mov_b32 s9, s6
11434 ; GFX940-NEXT:    s_mov_b32 s10, s0
11435 ; GFX940-NEXT:    s_mov_b32 s11, s4
11436 ; GFX940-NEXT:    ;;#ASMSTART
11437 ; GFX940-NEXT:    ; use s[8:11]
11438 ; GFX940-NEXT:    ;;#ASMEND
11439 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11440   %vec0 = call <3 x float> asm "; def $0", "=s"()
11441   %vec1 = call <3 x float> asm "; def $0", "=s"()
11442   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 3>
11443   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11444   ret void
11447 define void @s_shuffle_v4f32_v3f32__5_5_1_3() {
11448 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_1_3:
11449 ; GFX900:       ; %bb.0:
11450 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11451 ; GFX900-NEXT:    ;;#ASMSTART
11452 ; GFX900-NEXT:    ; def s[4:6]
11453 ; GFX900-NEXT:    ;;#ASMEND
11454 ; GFX900-NEXT:    ;;#ASMSTART
11455 ; GFX900-NEXT:    ; def s[12:14]
11456 ; GFX900-NEXT:    ;;#ASMEND
11457 ; GFX900-NEXT:    s_mov_b32 s8, s14
11458 ; GFX900-NEXT:    s_mov_b32 s9, s14
11459 ; GFX900-NEXT:    s_mov_b32 s10, s5
11460 ; GFX900-NEXT:    s_mov_b32 s11, s12
11461 ; GFX900-NEXT:    ;;#ASMSTART
11462 ; GFX900-NEXT:    ; use s[8:11]
11463 ; GFX900-NEXT:    ;;#ASMEND
11464 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11466 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_1_3:
11467 ; GFX90A:       ; %bb.0:
11468 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11469 ; GFX90A-NEXT:    ;;#ASMSTART
11470 ; GFX90A-NEXT:    ; def s[4:6]
11471 ; GFX90A-NEXT:    ;;#ASMEND
11472 ; GFX90A-NEXT:    ;;#ASMSTART
11473 ; GFX90A-NEXT:    ; def s[12:14]
11474 ; GFX90A-NEXT:    ;;#ASMEND
11475 ; GFX90A-NEXT:    s_mov_b32 s8, s14
11476 ; GFX90A-NEXT:    s_mov_b32 s9, s14
11477 ; GFX90A-NEXT:    s_mov_b32 s10, s5
11478 ; GFX90A-NEXT:    s_mov_b32 s11, s12
11479 ; GFX90A-NEXT:    ;;#ASMSTART
11480 ; GFX90A-NEXT:    ; use s[8:11]
11481 ; GFX90A-NEXT:    ;;#ASMEND
11482 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11484 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_1_3:
11485 ; GFX940:       ; %bb.0:
11486 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11487 ; GFX940-NEXT:    ;;#ASMSTART
11488 ; GFX940-NEXT:    ; def s[0:2]
11489 ; GFX940-NEXT:    ;;#ASMEND
11490 ; GFX940-NEXT:    ;;#ASMSTART
11491 ; GFX940-NEXT:    ; def s[4:6]
11492 ; GFX940-NEXT:    ;;#ASMEND
11493 ; GFX940-NEXT:    s_mov_b32 s8, s6
11494 ; GFX940-NEXT:    s_mov_b32 s9, s6
11495 ; GFX940-NEXT:    s_mov_b32 s10, s1
11496 ; GFX940-NEXT:    s_mov_b32 s11, s4
11497 ; GFX940-NEXT:    ;;#ASMSTART
11498 ; GFX940-NEXT:    ; use s[8:11]
11499 ; GFX940-NEXT:    ;;#ASMEND
11500 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11501   %vec0 = call <3 x float> asm "; def $0", "=s"()
11502   %vec1 = call <3 x float> asm "; def $0", "=s"()
11503   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 3>
11504   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11505   ret void
11508 define void @s_shuffle_v4f32_v3f32__5_5_2_3() {
11509 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_2_3:
11510 ; GFX900:       ; %bb.0:
11511 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11512 ; GFX900-NEXT:    ;;#ASMSTART
11513 ; GFX900-NEXT:    ; def s[8:10]
11514 ; GFX900-NEXT:    ;;#ASMEND
11515 ; GFX900-NEXT:    ;;#ASMSTART
11516 ; GFX900-NEXT:    ; def s[4:6]
11517 ; GFX900-NEXT:    ;;#ASMEND
11518 ; GFX900-NEXT:    s_mov_b32 s8, s6
11519 ; GFX900-NEXT:    s_mov_b32 s9, s6
11520 ; GFX900-NEXT:    s_mov_b32 s11, s4
11521 ; GFX900-NEXT:    ;;#ASMSTART
11522 ; GFX900-NEXT:    ; use s[8:11]
11523 ; GFX900-NEXT:    ;;#ASMEND
11524 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11526 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_2_3:
11527 ; GFX90A:       ; %bb.0:
11528 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11529 ; GFX90A-NEXT:    ;;#ASMSTART
11530 ; GFX90A-NEXT:    ; def s[8:10]
11531 ; GFX90A-NEXT:    ;;#ASMEND
11532 ; GFX90A-NEXT:    ;;#ASMSTART
11533 ; GFX90A-NEXT:    ; def s[4:6]
11534 ; GFX90A-NEXT:    ;;#ASMEND
11535 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11536 ; GFX90A-NEXT:    s_mov_b32 s9, s6
11537 ; GFX90A-NEXT:    s_mov_b32 s11, s4
11538 ; GFX90A-NEXT:    ;;#ASMSTART
11539 ; GFX90A-NEXT:    ; use s[8:11]
11540 ; GFX90A-NEXT:    ;;#ASMEND
11541 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11543 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_2_3:
11544 ; GFX940:       ; %bb.0:
11545 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11546 ; GFX940-NEXT:    ;;#ASMSTART
11547 ; GFX940-NEXT:    ; def s[8:10]
11548 ; GFX940-NEXT:    ;;#ASMEND
11549 ; GFX940-NEXT:    ;;#ASMSTART
11550 ; GFX940-NEXT:    ; def s[0:2]
11551 ; GFX940-NEXT:    ;;#ASMEND
11552 ; GFX940-NEXT:    s_mov_b32 s8, s2
11553 ; GFX940-NEXT:    s_mov_b32 s9, s2
11554 ; GFX940-NEXT:    s_mov_b32 s11, s0
11555 ; GFX940-NEXT:    ;;#ASMSTART
11556 ; GFX940-NEXT:    ; use s[8:11]
11557 ; GFX940-NEXT:    ;;#ASMEND
11558 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11559   %vec0 = call <3 x float> asm "; def $0", "=s"()
11560   %vec1 = call <3 x float> asm "; def $0", "=s"()
11561   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 3>
11562   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11563   ret void
11566 define void @s_shuffle_v4f32_v3f32__5_5_4_3() {
11567 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_4_3:
11568 ; GFX900:       ; %bb.0:
11569 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11570 ; GFX900-NEXT:    ;;#ASMSTART
11571 ; GFX900-NEXT:    ; def s[4:6]
11572 ; GFX900-NEXT:    ;;#ASMEND
11573 ; GFX900-NEXT:    s_mov_b32 s8, s6
11574 ; GFX900-NEXT:    s_mov_b32 s9, s6
11575 ; GFX900-NEXT:    s_mov_b32 s10, s5
11576 ; GFX900-NEXT:    s_mov_b32 s11, s4
11577 ; GFX900-NEXT:    ;;#ASMSTART
11578 ; GFX900-NEXT:    ; use s[8:11]
11579 ; GFX900-NEXT:    ;;#ASMEND
11580 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11582 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_4_3:
11583 ; GFX90A:       ; %bb.0:
11584 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11585 ; GFX90A-NEXT:    ;;#ASMSTART
11586 ; GFX90A-NEXT:    ; def s[4:6]
11587 ; GFX90A-NEXT:    ;;#ASMEND
11588 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11589 ; GFX90A-NEXT:    s_mov_b32 s9, s6
11590 ; GFX90A-NEXT:    s_mov_b32 s10, s5
11591 ; GFX90A-NEXT:    s_mov_b32 s11, s4
11592 ; GFX90A-NEXT:    ;;#ASMSTART
11593 ; GFX90A-NEXT:    ; use s[8:11]
11594 ; GFX90A-NEXT:    ;;#ASMEND
11595 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11597 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_4_3:
11598 ; GFX940:       ; %bb.0:
11599 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11600 ; GFX940-NEXT:    ;;#ASMSTART
11601 ; GFX940-NEXT:    ; def s[0:2]
11602 ; GFX940-NEXT:    ;;#ASMEND
11603 ; GFX940-NEXT:    s_mov_b32 s8, s2
11604 ; GFX940-NEXT:    s_mov_b32 s9, s2
11605 ; GFX940-NEXT:    s_mov_b32 s10, s1
11606 ; GFX940-NEXT:    s_mov_b32 s11, s0
11607 ; GFX940-NEXT:    ;;#ASMSTART
11608 ; GFX940-NEXT:    ; use s[8:11]
11609 ; GFX940-NEXT:    ;;#ASMEND
11610 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11611   %vec0 = call <3 x float> asm "; def $0", "=s"()
11612   %vec1 = call <3 x float> asm "; def $0", "=s"()
11613   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 3>
11614   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11615   ret void
11618 define void @s_shuffle_v4f32_v3f32__u_4_4_4() {
11619 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__u_4_4_4:
11620 ; GFX9:       ; %bb.0:
11621 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11622 ; GFX9-NEXT:    ;;#ASMSTART
11623 ; GFX9-NEXT:    ; def s[8:10]
11624 ; GFX9-NEXT:    ;;#ASMEND
11625 ; GFX9-NEXT:    s_mov_b32 s10, s9
11626 ; GFX9-NEXT:    s_mov_b32 s11, s9
11627 ; GFX9-NEXT:    ;;#ASMSTART
11628 ; GFX9-NEXT:    ; use s[8:11]
11629 ; GFX9-NEXT:    ;;#ASMEND
11630 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
11631   %vec0 = call <3 x float> asm "; def $0", "=s"()
11632   %vec1 = call <3 x float> asm "; def $0", "=s"()
11633   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>
11634   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11635   ret void
11638 define void @s_shuffle_v4f32_v3f32__0_4_4_4() {
11639 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__0_4_4_4:
11640 ; GFX900:       ; %bb.0:
11641 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11642 ; GFX900-NEXT:    ;;#ASMSTART
11643 ; GFX900-NEXT:    ; def s[8:10]
11644 ; GFX900-NEXT:    ;;#ASMEND
11645 ; GFX900-NEXT:    ;;#ASMSTART
11646 ; GFX900-NEXT:    ; def s[4:6]
11647 ; GFX900-NEXT:    ;;#ASMEND
11648 ; GFX900-NEXT:    s_mov_b32 s9, s5
11649 ; GFX900-NEXT:    s_mov_b32 s10, s5
11650 ; GFX900-NEXT:    s_mov_b32 s11, s5
11651 ; GFX900-NEXT:    ;;#ASMSTART
11652 ; GFX900-NEXT:    ; use s[8:11]
11653 ; GFX900-NEXT:    ;;#ASMEND
11654 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11656 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__0_4_4_4:
11657 ; GFX90A:       ; %bb.0:
11658 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11659 ; GFX90A-NEXT:    ;;#ASMSTART
11660 ; GFX90A-NEXT:    ; def s[8:10]
11661 ; GFX90A-NEXT:    ;;#ASMEND
11662 ; GFX90A-NEXT:    ;;#ASMSTART
11663 ; GFX90A-NEXT:    ; def s[4:6]
11664 ; GFX90A-NEXT:    ;;#ASMEND
11665 ; GFX90A-NEXT:    s_mov_b32 s9, s5
11666 ; GFX90A-NEXT:    s_mov_b32 s10, s5
11667 ; GFX90A-NEXT:    s_mov_b32 s11, s5
11668 ; GFX90A-NEXT:    ;;#ASMSTART
11669 ; GFX90A-NEXT:    ; use s[8:11]
11670 ; GFX90A-NEXT:    ;;#ASMEND
11671 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11673 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__0_4_4_4:
11674 ; GFX940:       ; %bb.0:
11675 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11676 ; GFX940-NEXT:    ;;#ASMSTART
11677 ; GFX940-NEXT:    ; def s[8:10]
11678 ; GFX940-NEXT:    ;;#ASMEND
11679 ; GFX940-NEXT:    ;;#ASMSTART
11680 ; GFX940-NEXT:    ; def s[0:2]
11681 ; GFX940-NEXT:    ;;#ASMEND
11682 ; GFX940-NEXT:    s_mov_b32 s9, s1
11683 ; GFX940-NEXT:    s_mov_b32 s10, s1
11684 ; GFX940-NEXT:    s_mov_b32 s11, s1
11685 ; GFX940-NEXT:    ;;#ASMSTART
11686 ; GFX940-NEXT:    ; use s[8:11]
11687 ; GFX940-NEXT:    ;;#ASMEND
11688 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11689   %vec0 = call <3 x float> asm "; def $0", "=s"()
11690   %vec1 = call <3 x float> asm "; def $0", "=s"()
11691   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 0, i32 4, i32 4, i32 4>
11692   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11693   ret void
11696 define void @s_shuffle_v4f32_v3f32__1_4_4_4() {
11697 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__1_4_4_4:
11698 ; GFX900:       ; %bb.0:
11699 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11700 ; GFX900-NEXT:    ;;#ASMSTART
11701 ; GFX900-NEXT:    ; def s[8:10]
11702 ; GFX900-NEXT:    ;;#ASMEND
11703 ; GFX900-NEXT:    ;;#ASMSTART
11704 ; GFX900-NEXT:    ; def s[4:6]
11705 ; GFX900-NEXT:    ;;#ASMEND
11706 ; GFX900-NEXT:    s_mov_b32 s8, s5
11707 ; GFX900-NEXT:    s_mov_b32 s10, s9
11708 ; GFX900-NEXT:    s_mov_b32 s11, s9
11709 ; GFX900-NEXT:    ;;#ASMSTART
11710 ; GFX900-NEXT:    ; use s[8:11]
11711 ; GFX900-NEXT:    ;;#ASMEND
11712 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11714 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__1_4_4_4:
11715 ; GFX90A:       ; %bb.0:
11716 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11717 ; GFX90A-NEXT:    ;;#ASMSTART
11718 ; GFX90A-NEXT:    ; def s[8:10]
11719 ; GFX90A-NEXT:    ;;#ASMEND
11720 ; GFX90A-NEXT:    ;;#ASMSTART
11721 ; GFX90A-NEXT:    ; def s[4:6]
11722 ; GFX90A-NEXT:    ;;#ASMEND
11723 ; GFX90A-NEXT:    s_mov_b32 s8, s5
11724 ; GFX90A-NEXT:    s_mov_b32 s10, s9
11725 ; GFX90A-NEXT:    s_mov_b32 s11, s9
11726 ; GFX90A-NEXT:    ;;#ASMSTART
11727 ; GFX90A-NEXT:    ; use s[8:11]
11728 ; GFX90A-NEXT:    ;;#ASMEND
11729 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11731 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__1_4_4_4:
11732 ; GFX940:       ; %bb.0:
11733 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11734 ; GFX940-NEXT:    ;;#ASMSTART
11735 ; GFX940-NEXT:    ; def s[8:10]
11736 ; GFX940-NEXT:    ;;#ASMEND
11737 ; GFX940-NEXT:    ;;#ASMSTART
11738 ; GFX940-NEXT:    ; def s[0:2]
11739 ; GFX940-NEXT:    ;;#ASMEND
11740 ; GFX940-NEXT:    s_mov_b32 s8, s1
11741 ; GFX940-NEXT:    s_mov_b32 s10, s9
11742 ; GFX940-NEXT:    s_mov_b32 s11, s9
11743 ; GFX940-NEXT:    ;;#ASMSTART
11744 ; GFX940-NEXT:    ; use s[8:11]
11745 ; GFX940-NEXT:    ;;#ASMEND
11746 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11747   %vec0 = call <3 x float> asm "; def $0", "=s"()
11748   %vec1 = call <3 x float> asm "; def $0", "=s"()
11749   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 1, i32 4, i32 4, i32 4>
11750   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11751   ret void
11754 define void @s_shuffle_v4f32_v3f32__2_4_4_4() {
11755 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__2_4_4_4:
11756 ; GFX900:       ; %bb.0:
11757 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11758 ; GFX900-NEXT:    ;;#ASMSTART
11759 ; GFX900-NEXT:    ; def s[8:10]
11760 ; GFX900-NEXT:    ;;#ASMEND
11761 ; GFX900-NEXT:    ;;#ASMSTART
11762 ; GFX900-NEXT:    ; def s[4:6]
11763 ; GFX900-NEXT:    ;;#ASMEND
11764 ; GFX900-NEXT:    s_mov_b32 s8, s6
11765 ; GFX900-NEXT:    s_mov_b32 s10, s9
11766 ; GFX900-NEXT:    s_mov_b32 s11, s9
11767 ; GFX900-NEXT:    ;;#ASMSTART
11768 ; GFX900-NEXT:    ; use s[8:11]
11769 ; GFX900-NEXT:    ;;#ASMEND
11770 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11772 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__2_4_4_4:
11773 ; GFX90A:       ; %bb.0:
11774 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11775 ; GFX90A-NEXT:    ;;#ASMSTART
11776 ; GFX90A-NEXT:    ; def s[8:10]
11777 ; GFX90A-NEXT:    ;;#ASMEND
11778 ; GFX90A-NEXT:    ;;#ASMSTART
11779 ; GFX90A-NEXT:    ; def s[4:6]
11780 ; GFX90A-NEXT:    ;;#ASMEND
11781 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11782 ; GFX90A-NEXT:    s_mov_b32 s10, s9
11783 ; GFX90A-NEXT:    s_mov_b32 s11, s9
11784 ; GFX90A-NEXT:    ;;#ASMSTART
11785 ; GFX90A-NEXT:    ; use s[8:11]
11786 ; GFX90A-NEXT:    ;;#ASMEND
11787 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11789 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__2_4_4_4:
11790 ; GFX940:       ; %bb.0:
11791 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11792 ; GFX940-NEXT:    ;;#ASMSTART
11793 ; GFX940-NEXT:    ; def s[8:10]
11794 ; GFX940-NEXT:    ;;#ASMEND
11795 ; GFX940-NEXT:    ;;#ASMSTART
11796 ; GFX940-NEXT:    ; def s[0:2]
11797 ; GFX940-NEXT:    ;;#ASMEND
11798 ; GFX940-NEXT:    s_mov_b32 s8, s2
11799 ; GFX940-NEXT:    s_mov_b32 s10, s9
11800 ; GFX940-NEXT:    s_mov_b32 s11, s9
11801 ; GFX940-NEXT:    ;;#ASMSTART
11802 ; GFX940-NEXT:    ; use s[8:11]
11803 ; GFX940-NEXT:    ;;#ASMEND
11804 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11805   %vec0 = call <3 x float> asm "; def $0", "=s"()
11806   %vec1 = call <3 x float> asm "; def $0", "=s"()
11807   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 2, i32 4, i32 4, i32 4>
11808   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11809   ret void
11812 define void @s_shuffle_v4f32_v3f32__3_4_4_4() {
11813 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__3_4_4_4:
11814 ; GFX9:       ; %bb.0:
11815 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11816 ; GFX9-NEXT:    ;;#ASMSTART
11817 ; GFX9-NEXT:    ; def s[8:10]
11818 ; GFX9-NEXT:    ;;#ASMEND
11819 ; GFX9-NEXT:    s_mov_b32 s10, s9
11820 ; GFX9-NEXT:    s_mov_b32 s11, s9
11821 ; GFX9-NEXT:    ;;#ASMSTART
11822 ; GFX9-NEXT:    ; use s[8:11]
11823 ; GFX9-NEXT:    ;;#ASMEND
11824 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
11825   %vec0 = call <3 x float> asm "; def $0", "=s"()
11826   %vec1 = call <3 x float> asm "; def $0", "=s"()
11827   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 3, i32 4, i32 4, i32 4>
11828   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11829   ret void
11832 define void @s_shuffle_v4f32_v3f32__4_4_4_4() {
11833 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__4_4_4_4:
11834 ; GFX9:       ; %bb.0:
11835 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11836 ; GFX9-NEXT:    ;;#ASMSTART
11837 ; GFX9-NEXT:    ; def s[8:10]
11838 ; GFX9-NEXT:    ;;#ASMEND
11839 ; GFX9-NEXT:    s_mov_b32 s8, s9
11840 ; GFX9-NEXT:    s_mov_b32 s10, s9
11841 ; GFX9-NEXT:    s_mov_b32 s11, s9
11842 ; GFX9-NEXT:    ;;#ASMSTART
11843 ; GFX9-NEXT:    ; use s[8:11]
11844 ; GFX9-NEXT:    ;;#ASMEND
11845 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
11846   %vec0 = call <3 x float> asm "; def $0", "=s"()
11847   %vec1 = call <3 x float> asm "; def $0", "=s"()
11848   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 4, i32 4, i32 4>
11849   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11850   ret void
11853 define void @s_shuffle_v4f32_v3f32__5_4_4_4() {
11854 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__5_4_4_4:
11855 ; GFX9:       ; %bb.0:
11856 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11857 ; GFX9-NEXT:    ;;#ASMSTART
11858 ; GFX9-NEXT:    ; def s[8:10]
11859 ; GFX9-NEXT:    ;;#ASMEND
11860 ; GFX9-NEXT:    s_mov_b32 s8, s10
11861 ; GFX9-NEXT:    s_mov_b32 s10, s9
11862 ; GFX9-NEXT:    s_mov_b32 s11, s9
11863 ; GFX9-NEXT:    ;;#ASMSTART
11864 ; GFX9-NEXT:    ; use s[8:11]
11865 ; GFX9-NEXT:    ;;#ASMEND
11866 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
11867   %vec0 = call <3 x float> asm "; def $0", "=s"()
11868   %vec1 = call <3 x float> asm "; def $0", "=s"()
11869   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>
11870   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11871   ret void
11874 define void @s_shuffle_v4f32_v3f32__5_u_4_4() {
11875 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_u_4_4:
11876 ; GFX900:       ; %bb.0:
11877 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11878 ; GFX900-NEXT:    ;;#ASMSTART
11879 ; GFX900-NEXT:    ; def s[4:6]
11880 ; GFX900-NEXT:    ;;#ASMEND
11881 ; GFX900-NEXT:    s_mov_b32 s8, s6
11882 ; GFX900-NEXT:    s_mov_b32 s10, s5
11883 ; GFX900-NEXT:    s_mov_b32 s11, s5
11884 ; GFX900-NEXT:    ;;#ASMSTART
11885 ; GFX900-NEXT:    ; use s[8:11]
11886 ; GFX900-NEXT:    ;;#ASMEND
11887 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11889 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_u_4_4:
11890 ; GFX90A:       ; %bb.0:
11891 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11892 ; GFX90A-NEXT:    ;;#ASMSTART
11893 ; GFX90A-NEXT:    ; def s[4:6]
11894 ; GFX90A-NEXT:    ;;#ASMEND
11895 ; GFX90A-NEXT:    s_mov_b32 s8, s6
11896 ; GFX90A-NEXT:    s_mov_b32 s10, s5
11897 ; GFX90A-NEXT:    s_mov_b32 s11, s5
11898 ; GFX90A-NEXT:    ;;#ASMSTART
11899 ; GFX90A-NEXT:    ; use s[8:11]
11900 ; GFX90A-NEXT:    ;;#ASMEND
11901 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11903 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_u_4_4:
11904 ; GFX940:       ; %bb.0:
11905 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11906 ; GFX940-NEXT:    ;;#ASMSTART
11907 ; GFX940-NEXT:    ; def s[0:2]
11908 ; GFX940-NEXT:    ;;#ASMEND
11909 ; GFX940-NEXT:    s_mov_b32 s8, s2
11910 ; GFX940-NEXT:    s_mov_b32 s10, s1
11911 ; GFX940-NEXT:    s_mov_b32 s11, s1
11912 ; GFX940-NEXT:    ;;#ASMSTART
11913 ; GFX940-NEXT:    ; use s[8:11]
11914 ; GFX940-NEXT:    ;;#ASMEND
11915 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11916   %vec0 = call <3 x float> asm "; def $0", "=s"()
11917   %vec1 = call <3 x float> asm "; def $0", "=s"()
11918   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>
11919   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11920   ret void
11923 define void @s_shuffle_v4f32_v3f32__5_0_4_4() {
11924 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_0_4_4:
11925 ; GFX900:       ; %bb.0:
11926 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11927 ; GFX900-NEXT:    ;;#ASMSTART
11928 ; GFX900-NEXT:    ; def s[4:6]
11929 ; GFX900-NEXT:    ;;#ASMEND
11930 ; GFX900-NEXT:    ;;#ASMSTART
11931 ; GFX900-NEXT:    ; def s[12:14]
11932 ; GFX900-NEXT:    ;;#ASMEND
11933 ; GFX900-NEXT:    s_mov_b32 s8, s14
11934 ; GFX900-NEXT:    s_mov_b32 s9, s4
11935 ; GFX900-NEXT:    s_mov_b32 s10, s13
11936 ; GFX900-NEXT:    s_mov_b32 s11, s13
11937 ; GFX900-NEXT:    ;;#ASMSTART
11938 ; GFX900-NEXT:    ; use s[8:11]
11939 ; GFX900-NEXT:    ;;#ASMEND
11940 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
11942 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_0_4_4:
11943 ; GFX90A:       ; %bb.0:
11944 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11945 ; GFX90A-NEXT:    ;;#ASMSTART
11946 ; GFX90A-NEXT:    ; def s[4:6]
11947 ; GFX90A-NEXT:    ;;#ASMEND
11948 ; GFX90A-NEXT:    ;;#ASMSTART
11949 ; GFX90A-NEXT:    ; def s[12:14]
11950 ; GFX90A-NEXT:    ;;#ASMEND
11951 ; GFX90A-NEXT:    s_mov_b32 s8, s14
11952 ; GFX90A-NEXT:    s_mov_b32 s9, s4
11953 ; GFX90A-NEXT:    s_mov_b32 s10, s13
11954 ; GFX90A-NEXT:    s_mov_b32 s11, s13
11955 ; GFX90A-NEXT:    ;;#ASMSTART
11956 ; GFX90A-NEXT:    ; use s[8:11]
11957 ; GFX90A-NEXT:    ;;#ASMEND
11958 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11960 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_0_4_4:
11961 ; GFX940:       ; %bb.0:
11962 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11963 ; GFX940-NEXT:    ;;#ASMSTART
11964 ; GFX940-NEXT:    ; def s[0:2]
11965 ; GFX940-NEXT:    ;;#ASMEND
11966 ; GFX940-NEXT:    ;;#ASMSTART
11967 ; GFX940-NEXT:    ; def s[4:6]
11968 ; GFX940-NEXT:    ;;#ASMEND
11969 ; GFX940-NEXT:    s_mov_b32 s8, s6
11970 ; GFX940-NEXT:    s_mov_b32 s9, s0
11971 ; GFX940-NEXT:    s_mov_b32 s10, s5
11972 ; GFX940-NEXT:    s_mov_b32 s11, s5
11973 ; GFX940-NEXT:    ;;#ASMSTART
11974 ; GFX940-NEXT:    ; use s[8:11]
11975 ; GFX940-NEXT:    ;;#ASMEND
11976 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
11977   %vec0 = call <3 x float> asm "; def $0", "=s"()
11978   %vec1 = call <3 x float> asm "; def $0", "=s"()
11979   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 4, i32 4>
11980   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
11981   ret void
11984 define void @s_shuffle_v4f32_v3f32__5_1_4_4() {
11985 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_1_4_4:
11986 ; GFX900:       ; %bb.0:
11987 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11988 ; GFX900-NEXT:    ;;#ASMSTART
11989 ; GFX900-NEXT:    ; def s[8:10]
11990 ; GFX900-NEXT:    ;;#ASMEND
11991 ; GFX900-NEXT:    ;;#ASMSTART
11992 ; GFX900-NEXT:    ; def s[4:6]
11993 ; GFX900-NEXT:    ;;#ASMEND
11994 ; GFX900-NEXT:    s_mov_b32 s8, s6
11995 ; GFX900-NEXT:    s_mov_b32 s10, s5
11996 ; GFX900-NEXT:    s_mov_b32 s11, s5
11997 ; GFX900-NEXT:    ;;#ASMSTART
11998 ; GFX900-NEXT:    ; use s[8:11]
11999 ; GFX900-NEXT:    ;;#ASMEND
12000 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12002 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_1_4_4:
12003 ; GFX90A:       ; %bb.0:
12004 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12005 ; GFX90A-NEXT:    ;;#ASMSTART
12006 ; GFX90A-NEXT:    ; def s[8:10]
12007 ; GFX90A-NEXT:    ;;#ASMEND
12008 ; GFX90A-NEXT:    ;;#ASMSTART
12009 ; GFX90A-NEXT:    ; def s[4:6]
12010 ; GFX90A-NEXT:    ;;#ASMEND
12011 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12012 ; GFX90A-NEXT:    s_mov_b32 s10, s5
12013 ; GFX90A-NEXT:    s_mov_b32 s11, s5
12014 ; GFX90A-NEXT:    ;;#ASMSTART
12015 ; GFX90A-NEXT:    ; use s[8:11]
12016 ; GFX90A-NEXT:    ;;#ASMEND
12017 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12019 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_1_4_4:
12020 ; GFX940:       ; %bb.0:
12021 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12022 ; GFX940-NEXT:    ;;#ASMSTART
12023 ; GFX940-NEXT:    ; def s[8:10]
12024 ; GFX940-NEXT:    ;;#ASMEND
12025 ; GFX940-NEXT:    ;;#ASMSTART
12026 ; GFX940-NEXT:    ; def s[0:2]
12027 ; GFX940-NEXT:    ;;#ASMEND
12028 ; GFX940-NEXT:    s_mov_b32 s8, s2
12029 ; GFX940-NEXT:    s_mov_b32 s10, s1
12030 ; GFX940-NEXT:    s_mov_b32 s11, s1
12031 ; GFX940-NEXT:    ;;#ASMSTART
12032 ; GFX940-NEXT:    ; use s[8:11]
12033 ; GFX940-NEXT:    ;;#ASMEND
12034 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12035   %vec0 = call <3 x float> asm "; def $0", "=s"()
12036   %vec1 = call <3 x float> asm "; def $0", "=s"()
12037   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 4, i32 4>
12038   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12039   ret void
12042 define void @s_shuffle_v4f32_v3f32__5_2_4_4() {
12043 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_2_4_4:
12044 ; GFX900:       ; %bb.0:
12045 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12046 ; GFX900-NEXT:    ;;#ASMSTART
12047 ; GFX900-NEXT:    ; def s[4:6]
12048 ; GFX900-NEXT:    ;;#ASMEND
12049 ; GFX900-NEXT:    ;;#ASMSTART
12050 ; GFX900-NEXT:    ; def s[12:14]
12051 ; GFX900-NEXT:    ;;#ASMEND
12052 ; GFX900-NEXT:    s_mov_b32 s8, s14
12053 ; GFX900-NEXT:    s_mov_b32 s9, s6
12054 ; GFX900-NEXT:    s_mov_b32 s10, s13
12055 ; GFX900-NEXT:    s_mov_b32 s11, s13
12056 ; GFX900-NEXT:    ;;#ASMSTART
12057 ; GFX900-NEXT:    ; use s[8:11]
12058 ; GFX900-NEXT:    ;;#ASMEND
12059 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12061 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_2_4_4:
12062 ; GFX90A:       ; %bb.0:
12063 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12064 ; GFX90A-NEXT:    ;;#ASMSTART
12065 ; GFX90A-NEXT:    ; def s[4:6]
12066 ; GFX90A-NEXT:    ;;#ASMEND
12067 ; GFX90A-NEXT:    ;;#ASMSTART
12068 ; GFX90A-NEXT:    ; def s[12:14]
12069 ; GFX90A-NEXT:    ;;#ASMEND
12070 ; GFX90A-NEXT:    s_mov_b32 s8, s14
12071 ; GFX90A-NEXT:    s_mov_b32 s9, s6
12072 ; GFX90A-NEXT:    s_mov_b32 s10, s13
12073 ; GFX90A-NEXT:    s_mov_b32 s11, s13
12074 ; GFX90A-NEXT:    ;;#ASMSTART
12075 ; GFX90A-NEXT:    ; use s[8:11]
12076 ; GFX90A-NEXT:    ;;#ASMEND
12077 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12079 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_2_4_4:
12080 ; GFX940:       ; %bb.0:
12081 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12082 ; GFX940-NEXT:    ;;#ASMSTART
12083 ; GFX940-NEXT:    ; def s[0:2]
12084 ; GFX940-NEXT:    ;;#ASMEND
12085 ; GFX940-NEXT:    ;;#ASMSTART
12086 ; GFX940-NEXT:    ; def s[4:6]
12087 ; GFX940-NEXT:    ;;#ASMEND
12088 ; GFX940-NEXT:    s_mov_b32 s8, s6
12089 ; GFX940-NEXT:    s_mov_b32 s9, s2
12090 ; GFX940-NEXT:    s_mov_b32 s10, s5
12091 ; GFX940-NEXT:    s_mov_b32 s11, s5
12092 ; GFX940-NEXT:    ;;#ASMSTART
12093 ; GFX940-NEXT:    ; use s[8:11]
12094 ; GFX940-NEXT:    ;;#ASMEND
12095 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12096   %vec0 = call <3 x float> asm "; def $0", "=s"()
12097   %vec1 = call <3 x float> asm "; def $0", "=s"()
12098   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 4, i32 4>
12099   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12100   ret void
12103 define void @s_shuffle_v4f32_v3f32__5_3_4_4() {
12104 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_3_4_4:
12105 ; GFX900:       ; %bb.0:
12106 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12107 ; GFX900-NEXT:    ;;#ASMSTART
12108 ; GFX900-NEXT:    ; def s[4:6]
12109 ; GFX900-NEXT:    ;;#ASMEND
12110 ; GFX900-NEXT:    s_mov_b32 s8, s6
12111 ; GFX900-NEXT:    s_mov_b32 s9, s4
12112 ; GFX900-NEXT:    s_mov_b32 s10, s5
12113 ; GFX900-NEXT:    s_mov_b32 s11, s5
12114 ; GFX900-NEXT:    ;;#ASMSTART
12115 ; GFX900-NEXT:    ; use s[8:11]
12116 ; GFX900-NEXT:    ;;#ASMEND
12117 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12119 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_3_4_4:
12120 ; GFX90A:       ; %bb.0:
12121 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12122 ; GFX90A-NEXT:    ;;#ASMSTART
12123 ; GFX90A-NEXT:    ; def s[4:6]
12124 ; GFX90A-NEXT:    ;;#ASMEND
12125 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12126 ; GFX90A-NEXT:    s_mov_b32 s9, s4
12127 ; GFX90A-NEXT:    s_mov_b32 s10, s5
12128 ; GFX90A-NEXT:    s_mov_b32 s11, s5
12129 ; GFX90A-NEXT:    ;;#ASMSTART
12130 ; GFX90A-NEXT:    ; use s[8:11]
12131 ; GFX90A-NEXT:    ;;#ASMEND
12132 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12134 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_3_4_4:
12135 ; GFX940:       ; %bb.0:
12136 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12137 ; GFX940-NEXT:    ;;#ASMSTART
12138 ; GFX940-NEXT:    ; def s[0:2]
12139 ; GFX940-NEXT:    ;;#ASMEND
12140 ; GFX940-NEXT:    s_mov_b32 s8, s2
12141 ; GFX940-NEXT:    s_mov_b32 s9, s0
12142 ; GFX940-NEXT:    s_mov_b32 s10, s1
12143 ; GFX940-NEXT:    s_mov_b32 s11, s1
12144 ; GFX940-NEXT:    ;;#ASMSTART
12145 ; GFX940-NEXT:    ; use s[8:11]
12146 ; GFX940-NEXT:    ;;#ASMEND
12147 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12148   %vec0 = call <3 x float> asm "; def $0", "=s"()
12149   %vec1 = call <3 x float> asm "; def $0", "=s"()
12150   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 4, i32 4>
12151   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12152   ret void
12155 define void @s_shuffle_v4f32_v3f32__5_5_4_4() {
12156 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_4_4:
12157 ; GFX900:       ; %bb.0:
12158 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12159 ; GFX900-NEXT:    ;;#ASMSTART
12160 ; GFX900-NEXT:    ; def s[4:6]
12161 ; GFX900-NEXT:    ;;#ASMEND
12162 ; GFX900-NEXT:    s_mov_b32 s8, s6
12163 ; GFX900-NEXT:    s_mov_b32 s9, s6
12164 ; GFX900-NEXT:    s_mov_b32 s10, s5
12165 ; GFX900-NEXT:    s_mov_b32 s11, s5
12166 ; GFX900-NEXT:    ;;#ASMSTART
12167 ; GFX900-NEXT:    ; use s[8:11]
12168 ; GFX900-NEXT:    ;;#ASMEND
12169 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12171 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_4_4:
12172 ; GFX90A:       ; %bb.0:
12173 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12174 ; GFX90A-NEXT:    ;;#ASMSTART
12175 ; GFX90A-NEXT:    ; def s[4:6]
12176 ; GFX90A-NEXT:    ;;#ASMEND
12177 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12178 ; GFX90A-NEXT:    s_mov_b32 s9, s6
12179 ; GFX90A-NEXT:    s_mov_b32 s10, s5
12180 ; GFX90A-NEXT:    s_mov_b32 s11, s5
12181 ; GFX90A-NEXT:    ;;#ASMSTART
12182 ; GFX90A-NEXT:    ; use s[8:11]
12183 ; GFX90A-NEXT:    ;;#ASMEND
12184 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12186 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_4_4:
12187 ; GFX940:       ; %bb.0:
12188 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12189 ; GFX940-NEXT:    ;;#ASMSTART
12190 ; GFX940-NEXT:    ; def s[0:2]
12191 ; GFX940-NEXT:    ;;#ASMEND
12192 ; GFX940-NEXT:    s_mov_b32 s8, s2
12193 ; GFX940-NEXT:    s_mov_b32 s9, s2
12194 ; GFX940-NEXT:    s_mov_b32 s10, s1
12195 ; GFX940-NEXT:    s_mov_b32 s11, s1
12196 ; GFX940-NEXT:    ;;#ASMSTART
12197 ; GFX940-NEXT:    ; use s[8:11]
12198 ; GFX940-NEXT:    ;;#ASMEND
12199 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12200   %vec0 = call <3 x float> asm "; def $0", "=s"()
12201   %vec1 = call <3 x float> asm "; def $0", "=s"()
12202   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 4>
12203   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12204   ret void
12207 define void @s_shuffle_v4f32_v3f32__5_5_u_4() {
12208 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_u_4:
12209 ; GFX900:       ; %bb.0:
12210 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12211 ; GFX900-NEXT:    ;;#ASMSTART
12212 ; GFX900-NEXT:    ; def s[4:6]
12213 ; GFX900-NEXT:    ;;#ASMEND
12214 ; GFX900-NEXT:    s_mov_b32 s8, s6
12215 ; GFX900-NEXT:    s_mov_b32 s9, s6
12216 ; GFX900-NEXT:    s_mov_b32 s11, s5
12217 ; GFX900-NEXT:    ;;#ASMSTART
12218 ; GFX900-NEXT:    ; use s[8:11]
12219 ; GFX900-NEXT:    ;;#ASMEND
12220 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12222 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_u_4:
12223 ; GFX90A:       ; %bb.0:
12224 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12225 ; GFX90A-NEXT:    ;;#ASMSTART
12226 ; GFX90A-NEXT:    ; def s[4:6]
12227 ; GFX90A-NEXT:    ;;#ASMEND
12228 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12229 ; GFX90A-NEXT:    s_mov_b32 s9, s6
12230 ; GFX90A-NEXT:    s_mov_b32 s11, s5
12231 ; GFX90A-NEXT:    ;;#ASMSTART
12232 ; GFX90A-NEXT:    ; use s[8:11]
12233 ; GFX90A-NEXT:    ;;#ASMEND
12234 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12236 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_u_4:
12237 ; GFX940:       ; %bb.0:
12238 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12239 ; GFX940-NEXT:    ;;#ASMSTART
12240 ; GFX940-NEXT:    ; def s[0:2]
12241 ; GFX940-NEXT:    ;;#ASMEND
12242 ; GFX940-NEXT:    s_mov_b32 s8, s2
12243 ; GFX940-NEXT:    s_mov_b32 s9, s2
12244 ; GFX940-NEXT:    s_mov_b32 s11, s1
12245 ; GFX940-NEXT:    ;;#ASMSTART
12246 ; GFX940-NEXT:    ; use s[8:11]
12247 ; GFX940-NEXT:    ;;#ASMEND
12248 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12249   %vec0 = call <3 x float> asm "; def $0", "=s"()
12250   %vec1 = call <3 x float> asm "; def $0", "=s"()
12251   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>
12252   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12253   ret void
12256 define void @s_shuffle_v4f32_v3f32__5_5_0_4() {
12257 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_0_4:
12258 ; GFX900:       ; %bb.0:
12259 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12260 ; GFX900-NEXT:    ;;#ASMSTART
12261 ; GFX900-NEXT:    ; def s[4:6]
12262 ; GFX900-NEXT:    ;;#ASMEND
12263 ; GFX900-NEXT:    ;;#ASMSTART
12264 ; GFX900-NEXT:    ; def s[12:14]
12265 ; GFX900-NEXT:    ;;#ASMEND
12266 ; GFX900-NEXT:    s_mov_b32 s8, s14
12267 ; GFX900-NEXT:    s_mov_b32 s9, s14
12268 ; GFX900-NEXT:    s_mov_b32 s10, s4
12269 ; GFX900-NEXT:    s_mov_b32 s11, s13
12270 ; GFX900-NEXT:    ;;#ASMSTART
12271 ; GFX900-NEXT:    ; use s[8:11]
12272 ; GFX900-NEXT:    ;;#ASMEND
12273 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12275 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_0_4:
12276 ; GFX90A:       ; %bb.0:
12277 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12278 ; GFX90A-NEXT:    ;;#ASMSTART
12279 ; GFX90A-NEXT:    ; def s[4:6]
12280 ; GFX90A-NEXT:    ;;#ASMEND
12281 ; GFX90A-NEXT:    ;;#ASMSTART
12282 ; GFX90A-NEXT:    ; def s[12:14]
12283 ; GFX90A-NEXT:    ;;#ASMEND
12284 ; GFX90A-NEXT:    s_mov_b32 s8, s14
12285 ; GFX90A-NEXT:    s_mov_b32 s9, s14
12286 ; GFX90A-NEXT:    s_mov_b32 s10, s4
12287 ; GFX90A-NEXT:    s_mov_b32 s11, s13
12288 ; GFX90A-NEXT:    ;;#ASMSTART
12289 ; GFX90A-NEXT:    ; use s[8:11]
12290 ; GFX90A-NEXT:    ;;#ASMEND
12291 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12293 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_0_4:
12294 ; GFX940:       ; %bb.0:
12295 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12296 ; GFX940-NEXT:    ;;#ASMSTART
12297 ; GFX940-NEXT:    ; def s[0:2]
12298 ; GFX940-NEXT:    ;;#ASMEND
12299 ; GFX940-NEXT:    ;;#ASMSTART
12300 ; GFX940-NEXT:    ; def s[4:6]
12301 ; GFX940-NEXT:    ;;#ASMEND
12302 ; GFX940-NEXT:    s_mov_b32 s8, s6
12303 ; GFX940-NEXT:    s_mov_b32 s9, s6
12304 ; GFX940-NEXT:    s_mov_b32 s10, s0
12305 ; GFX940-NEXT:    s_mov_b32 s11, s5
12306 ; GFX940-NEXT:    ;;#ASMSTART
12307 ; GFX940-NEXT:    ; use s[8:11]
12308 ; GFX940-NEXT:    ;;#ASMEND
12309 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12310   %vec0 = call <3 x float> asm "; def $0", "=s"()
12311   %vec1 = call <3 x float> asm "; def $0", "=s"()
12312   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 4>
12313   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12314   ret void
12317 define void @s_shuffle_v4f32_v3f32__5_5_1_4() {
12318 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_1_4:
12319 ; GFX900:       ; %bb.0:
12320 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12321 ; GFX900-NEXT:    ;;#ASMSTART
12322 ; GFX900-NEXT:    ; def s[4:6]
12323 ; GFX900-NEXT:    ;;#ASMEND
12324 ; GFX900-NEXT:    ;;#ASMSTART
12325 ; GFX900-NEXT:    ; def s[12:14]
12326 ; GFX900-NEXT:    ;;#ASMEND
12327 ; GFX900-NEXT:    s_mov_b32 s8, s14
12328 ; GFX900-NEXT:    s_mov_b32 s9, s14
12329 ; GFX900-NEXT:    s_mov_b32 s10, s5
12330 ; GFX900-NEXT:    s_mov_b32 s11, s13
12331 ; GFX900-NEXT:    ;;#ASMSTART
12332 ; GFX900-NEXT:    ; use s[8:11]
12333 ; GFX900-NEXT:    ;;#ASMEND
12334 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12336 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_1_4:
12337 ; GFX90A:       ; %bb.0:
12338 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12339 ; GFX90A-NEXT:    ;;#ASMSTART
12340 ; GFX90A-NEXT:    ; def s[4:6]
12341 ; GFX90A-NEXT:    ;;#ASMEND
12342 ; GFX90A-NEXT:    ;;#ASMSTART
12343 ; GFX90A-NEXT:    ; def s[12:14]
12344 ; GFX90A-NEXT:    ;;#ASMEND
12345 ; GFX90A-NEXT:    s_mov_b32 s8, s14
12346 ; GFX90A-NEXT:    s_mov_b32 s9, s14
12347 ; GFX90A-NEXT:    s_mov_b32 s10, s5
12348 ; GFX90A-NEXT:    s_mov_b32 s11, s13
12349 ; GFX90A-NEXT:    ;;#ASMSTART
12350 ; GFX90A-NEXT:    ; use s[8:11]
12351 ; GFX90A-NEXT:    ;;#ASMEND
12352 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12354 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_1_4:
12355 ; GFX940:       ; %bb.0:
12356 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12357 ; GFX940-NEXT:    ;;#ASMSTART
12358 ; GFX940-NEXT:    ; def s[0:2]
12359 ; GFX940-NEXT:    ;;#ASMEND
12360 ; GFX940-NEXT:    ;;#ASMSTART
12361 ; GFX940-NEXT:    ; def s[4:6]
12362 ; GFX940-NEXT:    ;;#ASMEND
12363 ; GFX940-NEXT:    s_mov_b32 s8, s6
12364 ; GFX940-NEXT:    s_mov_b32 s9, s6
12365 ; GFX940-NEXT:    s_mov_b32 s10, s1
12366 ; GFX940-NEXT:    s_mov_b32 s11, s5
12367 ; GFX940-NEXT:    ;;#ASMSTART
12368 ; GFX940-NEXT:    ; use s[8:11]
12369 ; GFX940-NEXT:    ;;#ASMEND
12370 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12371   %vec0 = call <3 x float> asm "; def $0", "=s"()
12372   %vec1 = call <3 x float> asm "; def $0", "=s"()
12373   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 4>
12374   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12375   ret void
12378 define void @s_shuffle_v4f32_v3f32__5_5_2_4() {
12379 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_2_4:
12380 ; GFX900:       ; %bb.0:
12381 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12382 ; GFX900-NEXT:    ;;#ASMSTART
12383 ; GFX900-NEXT:    ; def s[8:10]
12384 ; GFX900-NEXT:    ;;#ASMEND
12385 ; GFX900-NEXT:    ;;#ASMSTART
12386 ; GFX900-NEXT:    ; def s[4:6]
12387 ; GFX900-NEXT:    ;;#ASMEND
12388 ; GFX900-NEXT:    s_mov_b32 s8, s6
12389 ; GFX900-NEXT:    s_mov_b32 s9, s6
12390 ; GFX900-NEXT:    s_mov_b32 s11, s5
12391 ; GFX900-NEXT:    ;;#ASMSTART
12392 ; GFX900-NEXT:    ; use s[8:11]
12393 ; GFX900-NEXT:    ;;#ASMEND
12394 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12396 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_2_4:
12397 ; GFX90A:       ; %bb.0:
12398 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12399 ; GFX90A-NEXT:    ;;#ASMSTART
12400 ; GFX90A-NEXT:    ; def s[8:10]
12401 ; GFX90A-NEXT:    ;;#ASMEND
12402 ; GFX90A-NEXT:    ;;#ASMSTART
12403 ; GFX90A-NEXT:    ; def s[4:6]
12404 ; GFX90A-NEXT:    ;;#ASMEND
12405 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12406 ; GFX90A-NEXT:    s_mov_b32 s9, s6
12407 ; GFX90A-NEXT:    s_mov_b32 s11, s5
12408 ; GFX90A-NEXT:    ;;#ASMSTART
12409 ; GFX90A-NEXT:    ; use s[8:11]
12410 ; GFX90A-NEXT:    ;;#ASMEND
12411 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12413 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_2_4:
12414 ; GFX940:       ; %bb.0:
12415 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12416 ; GFX940-NEXT:    ;;#ASMSTART
12417 ; GFX940-NEXT:    ; def s[8:10]
12418 ; GFX940-NEXT:    ;;#ASMEND
12419 ; GFX940-NEXT:    ;;#ASMSTART
12420 ; GFX940-NEXT:    ; def s[0:2]
12421 ; GFX940-NEXT:    ;;#ASMEND
12422 ; GFX940-NEXT:    s_mov_b32 s8, s2
12423 ; GFX940-NEXT:    s_mov_b32 s9, s2
12424 ; GFX940-NEXT:    s_mov_b32 s11, s1
12425 ; GFX940-NEXT:    ;;#ASMSTART
12426 ; GFX940-NEXT:    ; use s[8:11]
12427 ; GFX940-NEXT:    ;;#ASMEND
12428 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12429   %vec0 = call <3 x float> asm "; def $0", "=s"()
12430   %vec1 = call <3 x float> asm "; def $0", "=s"()
12431   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 4>
12432   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12433   ret void
12436 define void @s_shuffle_v4f32_v3f32__5_5_3_4() {
12437 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_3_4:
12438 ; GFX900:       ; %bb.0:
12439 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12440 ; GFX900-NEXT:    ;;#ASMSTART
12441 ; GFX900-NEXT:    ; def s[4:6]
12442 ; GFX900-NEXT:    ;;#ASMEND
12443 ; GFX900-NEXT:    s_mov_b32 s8, s6
12444 ; GFX900-NEXT:    s_mov_b32 s9, s6
12445 ; GFX900-NEXT:    s_mov_b32 s10, s4
12446 ; GFX900-NEXT:    s_mov_b32 s11, s5
12447 ; GFX900-NEXT:    ;;#ASMSTART
12448 ; GFX900-NEXT:    ; use s[8:11]
12449 ; GFX900-NEXT:    ;;#ASMEND
12450 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12452 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_3_4:
12453 ; GFX90A:       ; %bb.0:
12454 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12455 ; GFX90A-NEXT:    ;;#ASMSTART
12456 ; GFX90A-NEXT:    ; def s[4:6]
12457 ; GFX90A-NEXT:    ;;#ASMEND
12458 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12459 ; GFX90A-NEXT:    s_mov_b32 s9, s6
12460 ; GFX90A-NEXT:    s_mov_b32 s10, s4
12461 ; GFX90A-NEXT:    s_mov_b32 s11, s5
12462 ; GFX90A-NEXT:    ;;#ASMSTART
12463 ; GFX90A-NEXT:    ; use s[8:11]
12464 ; GFX90A-NEXT:    ;;#ASMEND
12465 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12467 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_3_4:
12468 ; GFX940:       ; %bb.0:
12469 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12470 ; GFX940-NEXT:    ;;#ASMSTART
12471 ; GFX940-NEXT:    ; def s[0:2]
12472 ; GFX940-NEXT:    ;;#ASMEND
12473 ; GFX940-NEXT:    s_mov_b32 s8, s2
12474 ; GFX940-NEXT:    s_mov_b32 s9, s2
12475 ; GFX940-NEXT:    s_mov_b32 s10, s0
12476 ; GFX940-NEXT:    s_mov_b32 s11, s1
12477 ; GFX940-NEXT:    ;;#ASMSTART
12478 ; GFX940-NEXT:    ; use s[8:11]
12479 ; GFX940-NEXT:    ;;#ASMEND
12480 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12481   %vec0 = call <3 x float> asm "; def $0", "=s"()
12482   %vec1 = call <3 x float> asm "; def $0", "=s"()
12483   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 4>
12484   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12485   ret void
12488 define void @s_shuffle_v4f32_v3f32__u_5_5_5() {
12489 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__u_5_5_5:
12490 ; GFX9:       ; %bb.0:
12491 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12492 ; GFX9-NEXT:    ;;#ASMSTART
12493 ; GFX9-NEXT:    ; def s[8:10]
12494 ; GFX9-NEXT:    ;;#ASMEND
12495 ; GFX9-NEXT:    s_mov_b32 s9, s10
12496 ; GFX9-NEXT:    s_mov_b32 s11, s10
12497 ; GFX9-NEXT:    ;;#ASMSTART
12498 ; GFX9-NEXT:    ; use s[8:11]
12499 ; GFX9-NEXT:    ;;#ASMEND
12500 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
12501   %vec0 = call <3 x float> asm "; def $0", "=s"()
12502   %vec1 = call <3 x float> asm "; def $0", "=s"()
12503   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>
12504   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12505   ret void
12508 define void @s_shuffle_v4f32_v3f32__0_5_5_5() {
12509 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__0_5_5_5:
12510 ; GFX900:       ; %bb.0:
12511 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12512 ; GFX900-NEXT:    ;;#ASMSTART
12513 ; GFX900-NEXT:    ; def s[8:10]
12514 ; GFX900-NEXT:    ;;#ASMEND
12515 ; GFX900-NEXT:    ;;#ASMSTART
12516 ; GFX900-NEXT:    ; def s[4:6]
12517 ; GFX900-NEXT:    ;;#ASMEND
12518 ; GFX900-NEXT:    s_mov_b32 s9, s6
12519 ; GFX900-NEXT:    s_mov_b32 s10, s6
12520 ; GFX900-NEXT:    s_mov_b32 s11, s6
12521 ; GFX900-NEXT:    ;;#ASMSTART
12522 ; GFX900-NEXT:    ; use s[8:11]
12523 ; GFX900-NEXT:    ;;#ASMEND
12524 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12526 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__0_5_5_5:
12527 ; GFX90A:       ; %bb.0:
12528 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12529 ; GFX90A-NEXT:    ;;#ASMSTART
12530 ; GFX90A-NEXT:    ; def s[8:10]
12531 ; GFX90A-NEXT:    ;;#ASMEND
12532 ; GFX90A-NEXT:    ;;#ASMSTART
12533 ; GFX90A-NEXT:    ; def s[4:6]
12534 ; GFX90A-NEXT:    ;;#ASMEND
12535 ; GFX90A-NEXT:    s_mov_b32 s9, s6
12536 ; GFX90A-NEXT:    s_mov_b32 s10, s6
12537 ; GFX90A-NEXT:    s_mov_b32 s11, s6
12538 ; GFX90A-NEXT:    ;;#ASMSTART
12539 ; GFX90A-NEXT:    ; use s[8:11]
12540 ; GFX90A-NEXT:    ;;#ASMEND
12541 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12543 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__0_5_5_5:
12544 ; GFX940:       ; %bb.0:
12545 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12546 ; GFX940-NEXT:    ;;#ASMSTART
12547 ; GFX940-NEXT:    ; def s[8:10]
12548 ; GFX940-NEXT:    ;;#ASMEND
12549 ; GFX940-NEXT:    ;;#ASMSTART
12550 ; GFX940-NEXT:    ; def s[0:2]
12551 ; GFX940-NEXT:    ;;#ASMEND
12552 ; GFX940-NEXT:    s_mov_b32 s9, s2
12553 ; GFX940-NEXT:    s_mov_b32 s10, s2
12554 ; GFX940-NEXT:    s_mov_b32 s11, s2
12555 ; GFX940-NEXT:    ;;#ASMSTART
12556 ; GFX940-NEXT:    ; use s[8:11]
12557 ; GFX940-NEXT:    ;;#ASMEND
12558 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12559   %vec0 = call <3 x float> asm "; def $0", "=s"()
12560   %vec1 = call <3 x float> asm "; def $0", "=s"()
12561   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>
12562   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12563   ret void
12566 define void @s_shuffle_v4f32_v3f32__1_5_5_5() {
12567 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__1_5_5_5:
12568 ; GFX900:       ; %bb.0:
12569 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12570 ; GFX900-NEXT:    ;;#ASMSTART
12571 ; GFX900-NEXT:    ; def s[8:10]
12572 ; GFX900-NEXT:    ;;#ASMEND
12573 ; GFX900-NEXT:    ;;#ASMSTART
12574 ; GFX900-NEXT:    ; def s[4:6]
12575 ; GFX900-NEXT:    ;;#ASMEND
12576 ; GFX900-NEXT:    s_mov_b32 s8, s5
12577 ; GFX900-NEXT:    s_mov_b32 s9, s10
12578 ; GFX900-NEXT:    s_mov_b32 s11, s10
12579 ; GFX900-NEXT:    ;;#ASMSTART
12580 ; GFX900-NEXT:    ; use s[8:11]
12581 ; GFX900-NEXT:    ;;#ASMEND
12582 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12584 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__1_5_5_5:
12585 ; GFX90A:       ; %bb.0:
12586 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12587 ; GFX90A-NEXT:    ;;#ASMSTART
12588 ; GFX90A-NEXT:    ; def s[8:10]
12589 ; GFX90A-NEXT:    ;;#ASMEND
12590 ; GFX90A-NEXT:    ;;#ASMSTART
12591 ; GFX90A-NEXT:    ; def s[4:6]
12592 ; GFX90A-NEXT:    ;;#ASMEND
12593 ; GFX90A-NEXT:    s_mov_b32 s8, s5
12594 ; GFX90A-NEXT:    s_mov_b32 s9, s10
12595 ; GFX90A-NEXT:    s_mov_b32 s11, s10
12596 ; GFX90A-NEXT:    ;;#ASMSTART
12597 ; GFX90A-NEXT:    ; use s[8:11]
12598 ; GFX90A-NEXT:    ;;#ASMEND
12599 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12601 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__1_5_5_5:
12602 ; GFX940:       ; %bb.0:
12603 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12604 ; GFX940-NEXT:    ;;#ASMSTART
12605 ; GFX940-NEXT:    ; def s[8:10]
12606 ; GFX940-NEXT:    ;;#ASMEND
12607 ; GFX940-NEXT:    ;;#ASMSTART
12608 ; GFX940-NEXT:    ; def s[0:2]
12609 ; GFX940-NEXT:    ;;#ASMEND
12610 ; GFX940-NEXT:    s_mov_b32 s8, s1
12611 ; GFX940-NEXT:    s_mov_b32 s9, s10
12612 ; GFX940-NEXT:    s_mov_b32 s11, s10
12613 ; GFX940-NEXT:    ;;#ASMSTART
12614 ; GFX940-NEXT:    ; use s[8:11]
12615 ; GFX940-NEXT:    ;;#ASMEND
12616 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12617   %vec0 = call <3 x float> asm "; def $0", "=s"()
12618   %vec1 = call <3 x float> asm "; def $0", "=s"()
12619   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>
12620   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12621   ret void
12624 define void @s_shuffle_v4f32_v3f32__2_5_5_5() {
12625 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__2_5_5_5:
12626 ; GFX900:       ; %bb.0:
12627 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12628 ; GFX900-NEXT:    ;;#ASMSTART
12629 ; GFX900-NEXT:    ; def s[8:10]
12630 ; GFX900-NEXT:    ;;#ASMEND
12631 ; GFX900-NEXT:    ;;#ASMSTART
12632 ; GFX900-NEXT:    ; def s[4:6]
12633 ; GFX900-NEXT:    ;;#ASMEND
12634 ; GFX900-NEXT:    s_mov_b32 s8, s6
12635 ; GFX900-NEXT:    s_mov_b32 s9, s10
12636 ; GFX900-NEXT:    s_mov_b32 s11, s10
12637 ; GFX900-NEXT:    ;;#ASMSTART
12638 ; GFX900-NEXT:    ; use s[8:11]
12639 ; GFX900-NEXT:    ;;#ASMEND
12640 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12642 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__2_5_5_5:
12643 ; GFX90A:       ; %bb.0:
12644 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12645 ; GFX90A-NEXT:    ;;#ASMSTART
12646 ; GFX90A-NEXT:    ; def s[8:10]
12647 ; GFX90A-NEXT:    ;;#ASMEND
12648 ; GFX90A-NEXT:    ;;#ASMSTART
12649 ; GFX90A-NEXT:    ; def s[4:6]
12650 ; GFX90A-NEXT:    ;;#ASMEND
12651 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12652 ; GFX90A-NEXT:    s_mov_b32 s9, s10
12653 ; GFX90A-NEXT:    s_mov_b32 s11, s10
12654 ; GFX90A-NEXT:    ;;#ASMSTART
12655 ; GFX90A-NEXT:    ; use s[8:11]
12656 ; GFX90A-NEXT:    ;;#ASMEND
12657 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12659 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__2_5_5_5:
12660 ; GFX940:       ; %bb.0:
12661 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12662 ; GFX940-NEXT:    ;;#ASMSTART
12663 ; GFX940-NEXT:    ; def s[8:10]
12664 ; GFX940-NEXT:    ;;#ASMEND
12665 ; GFX940-NEXT:    ;;#ASMSTART
12666 ; GFX940-NEXT:    ; def s[0:2]
12667 ; GFX940-NEXT:    ;;#ASMEND
12668 ; GFX940-NEXT:    s_mov_b32 s8, s2
12669 ; GFX940-NEXT:    s_mov_b32 s9, s10
12670 ; GFX940-NEXT:    s_mov_b32 s11, s10
12671 ; GFX940-NEXT:    ;;#ASMSTART
12672 ; GFX940-NEXT:    ; use s[8:11]
12673 ; GFX940-NEXT:    ;;#ASMEND
12674 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12675   %vec0 = call <3 x float> asm "; def $0", "=s"()
12676   %vec1 = call <3 x float> asm "; def $0", "=s"()
12677   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>
12678   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12679   ret void
12682 define void @s_shuffle_v4f32_v3f32__3_5_5_5() {
12683 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__3_5_5_5:
12684 ; GFX9:       ; %bb.0:
12685 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12686 ; GFX9-NEXT:    ;;#ASMSTART
12687 ; GFX9-NEXT:    ; def s[8:10]
12688 ; GFX9-NEXT:    ;;#ASMEND
12689 ; GFX9-NEXT:    s_mov_b32 s9, s10
12690 ; GFX9-NEXT:    s_mov_b32 s11, s10
12691 ; GFX9-NEXT:    ;;#ASMSTART
12692 ; GFX9-NEXT:    ; use s[8:11]
12693 ; GFX9-NEXT:    ;;#ASMEND
12694 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
12695   %vec0 = call <3 x float> asm "; def $0", "=s"()
12696   %vec1 = call <3 x float> asm "; def $0", "=s"()
12697   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>
12698   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12699   ret void
12702 define void @s_shuffle_v4f32_v3f32__4_5_5_5() {
12703 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__4_5_5_5:
12704 ; GFX9:       ; %bb.0:
12705 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12706 ; GFX9-NEXT:    ;;#ASMSTART
12707 ; GFX9-NEXT:    ; def s[8:10]
12708 ; GFX9-NEXT:    ;;#ASMEND
12709 ; GFX9-NEXT:    s_mov_b32 s8, s9
12710 ; GFX9-NEXT:    s_mov_b32 s9, s10
12711 ; GFX9-NEXT:    s_mov_b32 s11, s10
12712 ; GFX9-NEXT:    ;;#ASMSTART
12713 ; GFX9-NEXT:    ; use s[8:11]
12714 ; GFX9-NEXT:    ;;#ASMEND
12715 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
12716   %vec0 = call <3 x float> asm "; def $0", "=s"()
12717   %vec1 = call <3 x float> asm "; def $0", "=s"()
12718   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>
12719   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12720   ret void
12723 define void @s_shuffle_v4f32_v3f32__5_u_5_5() {
12724 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__5_u_5_5:
12725 ; GFX9:       ; %bb.0:
12726 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12727 ; GFX9-NEXT:    ;;#ASMSTART
12728 ; GFX9-NEXT:    ; def s[8:10]
12729 ; GFX9-NEXT:    ;;#ASMEND
12730 ; GFX9-NEXT:    s_mov_b32 s8, s10
12731 ; GFX9-NEXT:    s_mov_b32 s11, s10
12732 ; GFX9-NEXT:    ;;#ASMSTART
12733 ; GFX9-NEXT:    ; use s[8:11]
12734 ; GFX9-NEXT:    ;;#ASMEND
12735 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
12736   %vec0 = call <3 x float> asm "; def $0", "=s"()
12737   %vec1 = call <3 x float> asm "; def $0", "=s"()
12738   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>
12739   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12740   ret void
12743 define void @s_shuffle_v4f32_v3f32__5_0_5_5() {
12744 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_0_5_5:
12745 ; GFX900:       ; %bb.0:
12746 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12747 ; GFX900-NEXT:    ;;#ASMSTART
12748 ; GFX900-NEXT:    ; def s[8:10]
12749 ; GFX900-NEXT:    ;;#ASMEND
12750 ; GFX900-NEXT:    ;;#ASMSTART
12751 ; GFX900-NEXT:    ; def s[4:6]
12752 ; GFX900-NEXT:    ;;#ASMEND
12753 ; GFX900-NEXT:    s_mov_b32 s8, s10
12754 ; GFX900-NEXT:    s_mov_b32 s9, s4
12755 ; GFX900-NEXT:    s_mov_b32 s11, s10
12756 ; GFX900-NEXT:    ;;#ASMSTART
12757 ; GFX900-NEXT:    ; use s[8:11]
12758 ; GFX900-NEXT:    ;;#ASMEND
12759 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12761 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_0_5_5:
12762 ; GFX90A:       ; %bb.0:
12763 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12764 ; GFX90A-NEXT:    ;;#ASMSTART
12765 ; GFX90A-NEXT:    ; def s[8:10]
12766 ; GFX90A-NEXT:    ;;#ASMEND
12767 ; GFX90A-NEXT:    ;;#ASMSTART
12768 ; GFX90A-NEXT:    ; def s[4:6]
12769 ; GFX90A-NEXT:    ;;#ASMEND
12770 ; GFX90A-NEXT:    s_mov_b32 s8, s10
12771 ; GFX90A-NEXT:    s_mov_b32 s9, s4
12772 ; GFX90A-NEXT:    s_mov_b32 s11, s10
12773 ; GFX90A-NEXT:    ;;#ASMSTART
12774 ; GFX90A-NEXT:    ; use s[8:11]
12775 ; GFX90A-NEXT:    ;;#ASMEND
12776 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12778 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_0_5_5:
12779 ; GFX940:       ; %bb.0:
12780 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12781 ; GFX940-NEXT:    ;;#ASMSTART
12782 ; GFX940-NEXT:    ; def s[8:10]
12783 ; GFX940-NEXT:    ;;#ASMEND
12784 ; GFX940-NEXT:    ;;#ASMSTART
12785 ; GFX940-NEXT:    ; def s[0:2]
12786 ; GFX940-NEXT:    ;;#ASMEND
12787 ; GFX940-NEXT:    s_mov_b32 s8, s10
12788 ; GFX940-NEXT:    s_mov_b32 s9, s0
12789 ; GFX940-NEXT:    s_mov_b32 s11, s10
12790 ; GFX940-NEXT:    ;;#ASMSTART
12791 ; GFX940-NEXT:    ; use s[8:11]
12792 ; GFX940-NEXT:    ;;#ASMEND
12793 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12794   %vec0 = call <3 x float> asm "; def $0", "=s"()
12795   %vec1 = call <3 x float> asm "; def $0", "=s"()
12796   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 0, i32 5, i32 5>
12797   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12798   ret void
12801 define void @s_shuffle_v4f32_v3f32__5_1_5_5() {
12802 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_1_5_5:
12803 ; GFX900:       ; %bb.0:
12804 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12805 ; GFX900-NEXT:    ;;#ASMSTART
12806 ; GFX900-NEXT:    ; def s[8:10]
12807 ; GFX900-NEXT:    ;;#ASMEND
12808 ; GFX900-NEXT:    ;;#ASMSTART
12809 ; GFX900-NEXT:    ; def s[4:6]
12810 ; GFX900-NEXT:    ;;#ASMEND
12811 ; GFX900-NEXT:    s_mov_b32 s8, s6
12812 ; GFX900-NEXT:    s_mov_b32 s10, s6
12813 ; GFX900-NEXT:    s_mov_b32 s11, s6
12814 ; GFX900-NEXT:    ;;#ASMSTART
12815 ; GFX900-NEXT:    ; use s[8:11]
12816 ; GFX900-NEXT:    ;;#ASMEND
12817 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12819 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_1_5_5:
12820 ; GFX90A:       ; %bb.0:
12821 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12822 ; GFX90A-NEXT:    ;;#ASMSTART
12823 ; GFX90A-NEXT:    ; def s[8:10]
12824 ; GFX90A-NEXT:    ;;#ASMEND
12825 ; GFX90A-NEXT:    ;;#ASMSTART
12826 ; GFX90A-NEXT:    ; def s[4:6]
12827 ; GFX90A-NEXT:    ;;#ASMEND
12828 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12829 ; GFX90A-NEXT:    s_mov_b32 s10, s6
12830 ; GFX90A-NEXT:    s_mov_b32 s11, s6
12831 ; GFX90A-NEXT:    ;;#ASMSTART
12832 ; GFX90A-NEXT:    ; use s[8:11]
12833 ; GFX90A-NEXT:    ;;#ASMEND
12834 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12836 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_1_5_5:
12837 ; GFX940:       ; %bb.0:
12838 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12839 ; GFX940-NEXT:    ;;#ASMSTART
12840 ; GFX940-NEXT:    ; def s[8:10]
12841 ; GFX940-NEXT:    ;;#ASMEND
12842 ; GFX940-NEXT:    ;;#ASMSTART
12843 ; GFX940-NEXT:    ; def s[0:2]
12844 ; GFX940-NEXT:    ;;#ASMEND
12845 ; GFX940-NEXT:    s_mov_b32 s8, s2
12846 ; GFX940-NEXT:    s_mov_b32 s10, s2
12847 ; GFX940-NEXT:    s_mov_b32 s11, s2
12848 ; GFX940-NEXT:    ;;#ASMSTART
12849 ; GFX940-NEXT:    ; use s[8:11]
12850 ; GFX940-NEXT:    ;;#ASMEND
12851 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12852   %vec0 = call <3 x float> asm "; def $0", "=s"()
12853   %vec1 = call <3 x float> asm "; def $0", "=s"()
12854   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 1, i32 5, i32 5>
12855   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12856   ret void
12859 define void @s_shuffle_v4f32_v3f32__5_2_5_5() {
12860 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_2_5_5:
12861 ; GFX900:       ; %bb.0:
12862 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12863 ; GFX900-NEXT:    ;;#ASMSTART
12864 ; GFX900-NEXT:    ; def s[8:10]
12865 ; GFX900-NEXT:    ;;#ASMEND
12866 ; GFX900-NEXT:    ;;#ASMSTART
12867 ; GFX900-NEXT:    ; def s[4:6]
12868 ; GFX900-NEXT:    ;;#ASMEND
12869 ; GFX900-NEXT:    s_mov_b32 s8, s10
12870 ; GFX900-NEXT:    s_mov_b32 s9, s6
12871 ; GFX900-NEXT:    s_mov_b32 s11, s10
12872 ; GFX900-NEXT:    ;;#ASMSTART
12873 ; GFX900-NEXT:    ; use s[8:11]
12874 ; GFX900-NEXT:    ;;#ASMEND
12875 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12877 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_2_5_5:
12878 ; GFX90A:       ; %bb.0:
12879 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12880 ; GFX90A-NEXT:    ;;#ASMSTART
12881 ; GFX90A-NEXT:    ; def s[8:10]
12882 ; GFX90A-NEXT:    ;;#ASMEND
12883 ; GFX90A-NEXT:    ;;#ASMSTART
12884 ; GFX90A-NEXT:    ; def s[4:6]
12885 ; GFX90A-NEXT:    ;;#ASMEND
12886 ; GFX90A-NEXT:    s_mov_b32 s8, s10
12887 ; GFX90A-NEXT:    s_mov_b32 s9, s6
12888 ; GFX90A-NEXT:    s_mov_b32 s11, s10
12889 ; GFX90A-NEXT:    ;;#ASMSTART
12890 ; GFX90A-NEXT:    ; use s[8:11]
12891 ; GFX90A-NEXT:    ;;#ASMEND
12892 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12894 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_2_5_5:
12895 ; GFX940:       ; %bb.0:
12896 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12897 ; GFX940-NEXT:    ;;#ASMSTART
12898 ; GFX940-NEXT:    ; def s[8:10]
12899 ; GFX940-NEXT:    ;;#ASMEND
12900 ; GFX940-NEXT:    ;;#ASMSTART
12901 ; GFX940-NEXT:    ; def s[0:2]
12902 ; GFX940-NEXT:    ;;#ASMEND
12903 ; GFX940-NEXT:    s_mov_b32 s8, s10
12904 ; GFX940-NEXT:    s_mov_b32 s9, s2
12905 ; GFX940-NEXT:    s_mov_b32 s11, s10
12906 ; GFX940-NEXT:    ;;#ASMSTART
12907 ; GFX940-NEXT:    ; use s[8:11]
12908 ; GFX940-NEXT:    ;;#ASMEND
12909 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12910   %vec0 = call <3 x float> asm "; def $0", "=s"()
12911   %vec1 = call <3 x float> asm "; def $0", "=s"()
12912   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 2, i32 5, i32 5>
12913   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12914   ret void
12917 define void @s_shuffle_v4f32_v3f32__5_3_5_5() {
12918 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_3_5_5:
12919 ; GFX900:       ; %bb.0:
12920 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12921 ; GFX900-NEXT:    ;;#ASMSTART
12922 ; GFX900-NEXT:    ; def s[4:6]
12923 ; GFX900-NEXT:    ;;#ASMEND
12924 ; GFX900-NEXT:    s_mov_b32 s8, s6
12925 ; GFX900-NEXT:    s_mov_b32 s9, s4
12926 ; GFX900-NEXT:    s_mov_b32 s10, s6
12927 ; GFX900-NEXT:    s_mov_b32 s11, s6
12928 ; GFX900-NEXT:    ;;#ASMSTART
12929 ; GFX900-NEXT:    ; use s[8:11]
12930 ; GFX900-NEXT:    ;;#ASMEND
12931 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
12933 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_3_5_5:
12934 ; GFX90A:       ; %bb.0:
12935 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12936 ; GFX90A-NEXT:    ;;#ASMSTART
12937 ; GFX90A-NEXT:    ; def s[4:6]
12938 ; GFX90A-NEXT:    ;;#ASMEND
12939 ; GFX90A-NEXT:    s_mov_b32 s8, s6
12940 ; GFX90A-NEXT:    s_mov_b32 s9, s4
12941 ; GFX90A-NEXT:    s_mov_b32 s10, s6
12942 ; GFX90A-NEXT:    s_mov_b32 s11, s6
12943 ; GFX90A-NEXT:    ;;#ASMSTART
12944 ; GFX90A-NEXT:    ; use s[8:11]
12945 ; GFX90A-NEXT:    ;;#ASMEND
12946 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12948 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_3_5_5:
12949 ; GFX940:       ; %bb.0:
12950 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12951 ; GFX940-NEXT:    ;;#ASMSTART
12952 ; GFX940-NEXT:    ; def s[0:2]
12953 ; GFX940-NEXT:    ;;#ASMEND
12954 ; GFX940-NEXT:    s_mov_b32 s8, s2
12955 ; GFX940-NEXT:    s_mov_b32 s9, s0
12956 ; GFX940-NEXT:    s_mov_b32 s10, s2
12957 ; GFX940-NEXT:    s_mov_b32 s11, s2
12958 ; GFX940-NEXT:    ;;#ASMSTART
12959 ; GFX940-NEXT:    ; use s[8:11]
12960 ; GFX940-NEXT:    ;;#ASMEND
12961 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
12962   %vec0 = call <3 x float> asm "; def $0", "=s"()
12963   %vec1 = call <3 x float> asm "; def $0", "=s"()
12964   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 3, i32 5, i32 5>
12965   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12966   ret void
12969 define void @s_shuffle_v4f32_v3f32__5_4_5_5() {
12970 ; GFX9-LABEL: s_shuffle_v4f32_v3f32__5_4_5_5:
12971 ; GFX9:       ; %bb.0:
12972 ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12973 ; GFX9-NEXT:    ;;#ASMSTART
12974 ; GFX9-NEXT:    ; def s[8:10]
12975 ; GFX9-NEXT:    ;;#ASMEND
12976 ; GFX9-NEXT:    s_mov_b32 s8, s10
12977 ; GFX9-NEXT:    s_mov_b32 s11, s10
12978 ; GFX9-NEXT:    ;;#ASMSTART
12979 ; GFX9-NEXT:    ; use s[8:11]
12980 ; GFX9-NEXT:    ;;#ASMEND
12981 ; GFX9-NEXT:    s_setpc_b64 s[30:31]
12982   %vec0 = call <3 x float> asm "; def $0", "=s"()
12983   %vec1 = call <3 x float> asm "; def $0", "=s"()
12984   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 4, i32 5, i32 5>
12985   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
12986   ret void
12989 define void @s_shuffle_v4f32_v3f32__5_5_u_5() {
12990 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_u_5:
12991 ; GFX900:       ; %bb.0:
12992 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12993 ; GFX900-NEXT:    ;;#ASMSTART
12994 ; GFX900-NEXT:    ; def s[4:6]
12995 ; GFX900-NEXT:    ;;#ASMEND
12996 ; GFX900-NEXT:    s_mov_b32 s8, s6
12997 ; GFX900-NEXT:    s_mov_b32 s9, s6
12998 ; GFX900-NEXT:    s_mov_b32 s11, s6
12999 ; GFX900-NEXT:    ;;#ASMSTART
13000 ; GFX900-NEXT:    ; use s[8:11]
13001 ; GFX900-NEXT:    ;;#ASMEND
13002 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
13004 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_u_5:
13005 ; GFX90A:       ; %bb.0:
13006 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13007 ; GFX90A-NEXT:    ;;#ASMSTART
13008 ; GFX90A-NEXT:    ; def s[4:6]
13009 ; GFX90A-NEXT:    ;;#ASMEND
13010 ; GFX90A-NEXT:    s_mov_b32 s8, s6
13011 ; GFX90A-NEXT:    s_mov_b32 s9, s6
13012 ; GFX90A-NEXT:    s_mov_b32 s11, s6
13013 ; GFX90A-NEXT:    ;;#ASMSTART
13014 ; GFX90A-NEXT:    ; use s[8:11]
13015 ; GFX90A-NEXT:    ;;#ASMEND
13016 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13018 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_u_5:
13019 ; GFX940:       ; %bb.0:
13020 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13021 ; GFX940-NEXT:    ;;#ASMSTART
13022 ; GFX940-NEXT:    ; def s[0:2]
13023 ; GFX940-NEXT:    ;;#ASMEND
13024 ; GFX940-NEXT:    s_mov_b32 s8, s2
13025 ; GFX940-NEXT:    s_mov_b32 s9, s2
13026 ; GFX940-NEXT:    s_mov_b32 s11, s2
13027 ; GFX940-NEXT:    ;;#ASMSTART
13028 ; GFX940-NEXT:    ; use s[8:11]
13029 ; GFX940-NEXT:    ;;#ASMEND
13030 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
13031   %vec0 = call <3 x float> asm "; def $0", "=s"()
13032   %vec1 = call <3 x float> asm "; def $0", "=s"()
13033   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>
13034   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
13035   ret void
13038 define void @s_shuffle_v4f32_v3f32__5_5_0_5() {
13039 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_0_5:
13040 ; GFX900:       ; %bb.0:
13041 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13042 ; GFX900-NEXT:    ;;#ASMSTART
13043 ; GFX900-NEXT:    ; def s[4:6]
13044 ; GFX900-NEXT:    ;;#ASMEND
13045 ; GFX900-NEXT:    ;;#ASMSTART
13046 ; GFX900-NEXT:    ; def s[12:14]
13047 ; GFX900-NEXT:    ;;#ASMEND
13048 ; GFX900-NEXT:    s_mov_b32 s8, s14
13049 ; GFX900-NEXT:    s_mov_b32 s9, s14
13050 ; GFX900-NEXT:    s_mov_b32 s10, s4
13051 ; GFX900-NEXT:    s_mov_b32 s11, s14
13052 ; GFX900-NEXT:    ;;#ASMSTART
13053 ; GFX900-NEXT:    ; use s[8:11]
13054 ; GFX900-NEXT:    ;;#ASMEND
13055 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
13057 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_0_5:
13058 ; GFX90A:       ; %bb.0:
13059 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13060 ; GFX90A-NEXT:    ;;#ASMSTART
13061 ; GFX90A-NEXT:    ; def s[4:6]
13062 ; GFX90A-NEXT:    ;;#ASMEND
13063 ; GFX90A-NEXT:    ;;#ASMSTART
13064 ; GFX90A-NEXT:    ; def s[12:14]
13065 ; GFX90A-NEXT:    ;;#ASMEND
13066 ; GFX90A-NEXT:    s_mov_b32 s8, s14
13067 ; GFX90A-NEXT:    s_mov_b32 s9, s14
13068 ; GFX90A-NEXT:    s_mov_b32 s10, s4
13069 ; GFX90A-NEXT:    s_mov_b32 s11, s14
13070 ; GFX90A-NEXT:    ;;#ASMSTART
13071 ; GFX90A-NEXT:    ; use s[8:11]
13072 ; GFX90A-NEXT:    ;;#ASMEND
13073 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13075 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_0_5:
13076 ; GFX940:       ; %bb.0:
13077 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13078 ; GFX940-NEXT:    ;;#ASMSTART
13079 ; GFX940-NEXT:    ; def s[0:2]
13080 ; GFX940-NEXT:    ;;#ASMEND
13081 ; GFX940-NEXT:    ;;#ASMSTART
13082 ; GFX940-NEXT:    ; def s[4:6]
13083 ; GFX940-NEXT:    ;;#ASMEND
13084 ; GFX940-NEXT:    s_mov_b32 s8, s6
13085 ; GFX940-NEXT:    s_mov_b32 s9, s6
13086 ; GFX940-NEXT:    s_mov_b32 s10, s0
13087 ; GFX940-NEXT:    s_mov_b32 s11, s6
13088 ; GFX940-NEXT:    ;;#ASMSTART
13089 ; GFX940-NEXT:    ; use s[8:11]
13090 ; GFX940-NEXT:    ;;#ASMEND
13091 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
13092   %vec0 = call <3 x float> asm "; def $0", "=s"()
13093   %vec1 = call <3 x float> asm "; def $0", "=s"()
13094   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 5>
13095   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
13096   ret void
13099 define void @s_shuffle_v4f32_v3f32__5_5_1_5() {
13100 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_1_5:
13101 ; GFX900:       ; %bb.0:
13102 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13103 ; GFX900-NEXT:    ;;#ASMSTART
13104 ; GFX900-NEXT:    ; def s[4:6]
13105 ; GFX900-NEXT:    ;;#ASMEND
13106 ; GFX900-NEXT:    ;;#ASMSTART
13107 ; GFX900-NEXT:    ; def s[12:14]
13108 ; GFX900-NEXT:    ;;#ASMEND
13109 ; GFX900-NEXT:    s_mov_b32 s8, s14
13110 ; GFX900-NEXT:    s_mov_b32 s9, s14
13111 ; GFX900-NEXT:    s_mov_b32 s10, s5
13112 ; GFX900-NEXT:    s_mov_b32 s11, s14
13113 ; GFX900-NEXT:    ;;#ASMSTART
13114 ; GFX900-NEXT:    ; use s[8:11]
13115 ; GFX900-NEXT:    ;;#ASMEND
13116 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
13118 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_1_5:
13119 ; GFX90A:       ; %bb.0:
13120 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13121 ; GFX90A-NEXT:    ;;#ASMSTART
13122 ; GFX90A-NEXT:    ; def s[4:6]
13123 ; GFX90A-NEXT:    ;;#ASMEND
13124 ; GFX90A-NEXT:    ;;#ASMSTART
13125 ; GFX90A-NEXT:    ; def s[12:14]
13126 ; GFX90A-NEXT:    ;;#ASMEND
13127 ; GFX90A-NEXT:    s_mov_b32 s8, s14
13128 ; GFX90A-NEXT:    s_mov_b32 s9, s14
13129 ; GFX90A-NEXT:    s_mov_b32 s10, s5
13130 ; GFX90A-NEXT:    s_mov_b32 s11, s14
13131 ; GFX90A-NEXT:    ;;#ASMSTART
13132 ; GFX90A-NEXT:    ; use s[8:11]
13133 ; GFX90A-NEXT:    ;;#ASMEND
13134 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13136 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_1_5:
13137 ; GFX940:       ; %bb.0:
13138 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13139 ; GFX940-NEXT:    ;;#ASMSTART
13140 ; GFX940-NEXT:    ; def s[0:2]
13141 ; GFX940-NEXT:    ;;#ASMEND
13142 ; GFX940-NEXT:    ;;#ASMSTART
13143 ; GFX940-NEXT:    ; def s[4:6]
13144 ; GFX940-NEXT:    ;;#ASMEND
13145 ; GFX940-NEXT:    s_mov_b32 s8, s6
13146 ; GFX940-NEXT:    s_mov_b32 s9, s6
13147 ; GFX940-NEXT:    s_mov_b32 s10, s1
13148 ; GFX940-NEXT:    s_mov_b32 s11, s6
13149 ; GFX940-NEXT:    ;;#ASMSTART
13150 ; GFX940-NEXT:    ; use s[8:11]
13151 ; GFX940-NEXT:    ;;#ASMEND
13152 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
13153   %vec0 = call <3 x float> asm "; def $0", "=s"()
13154   %vec1 = call <3 x float> asm "; def $0", "=s"()
13155   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 5>
13156   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
13157   ret void
13160 define void @s_shuffle_v4f32_v3f32__5_5_2_5() {
13161 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_2_5:
13162 ; GFX900:       ; %bb.0:
13163 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13164 ; GFX900-NEXT:    ;;#ASMSTART
13165 ; GFX900-NEXT:    ; def s[8:10]
13166 ; GFX900-NEXT:    ;;#ASMEND
13167 ; GFX900-NEXT:    ;;#ASMSTART
13168 ; GFX900-NEXT:    ; def s[4:6]
13169 ; GFX900-NEXT:    ;;#ASMEND
13170 ; GFX900-NEXT:    s_mov_b32 s8, s6
13171 ; GFX900-NEXT:    s_mov_b32 s9, s6
13172 ; GFX900-NEXT:    s_mov_b32 s11, s6
13173 ; GFX900-NEXT:    ;;#ASMSTART
13174 ; GFX900-NEXT:    ; use s[8:11]
13175 ; GFX900-NEXT:    ;;#ASMEND
13176 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
13178 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_2_5:
13179 ; GFX90A:       ; %bb.0:
13180 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13181 ; GFX90A-NEXT:    ;;#ASMSTART
13182 ; GFX90A-NEXT:    ; def s[8:10]
13183 ; GFX90A-NEXT:    ;;#ASMEND
13184 ; GFX90A-NEXT:    ;;#ASMSTART
13185 ; GFX90A-NEXT:    ; def s[4:6]
13186 ; GFX90A-NEXT:    ;;#ASMEND
13187 ; GFX90A-NEXT:    s_mov_b32 s8, s6
13188 ; GFX90A-NEXT:    s_mov_b32 s9, s6
13189 ; GFX90A-NEXT:    s_mov_b32 s11, s6
13190 ; GFX90A-NEXT:    ;;#ASMSTART
13191 ; GFX90A-NEXT:    ; use s[8:11]
13192 ; GFX90A-NEXT:    ;;#ASMEND
13193 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13195 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_2_5:
13196 ; GFX940:       ; %bb.0:
13197 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13198 ; GFX940-NEXT:    ;;#ASMSTART
13199 ; GFX940-NEXT:    ; def s[8:10]
13200 ; GFX940-NEXT:    ;;#ASMEND
13201 ; GFX940-NEXT:    ;;#ASMSTART
13202 ; GFX940-NEXT:    ; def s[0:2]
13203 ; GFX940-NEXT:    ;;#ASMEND
13204 ; GFX940-NEXT:    s_mov_b32 s8, s2
13205 ; GFX940-NEXT:    s_mov_b32 s9, s2
13206 ; GFX940-NEXT:    s_mov_b32 s11, s2
13207 ; GFX940-NEXT:    ;;#ASMSTART
13208 ; GFX940-NEXT:    ; use s[8:11]
13209 ; GFX940-NEXT:    ;;#ASMEND
13210 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
13211   %vec0 = call <3 x float> asm "; def $0", "=s"()
13212   %vec1 = call <3 x float> asm "; def $0", "=s"()
13213   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 5>
13214   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
13215   ret void
13218 define void @s_shuffle_v4f32_v3f32__5_5_3_5() {
13219 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_3_5:
13220 ; GFX900:       ; %bb.0:
13221 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13222 ; GFX900-NEXT:    ;;#ASMSTART
13223 ; GFX900-NEXT:    ; def s[4:6]
13224 ; GFX900-NEXT:    ;;#ASMEND
13225 ; GFX900-NEXT:    s_mov_b32 s8, s6
13226 ; GFX900-NEXT:    s_mov_b32 s9, s6
13227 ; GFX900-NEXT:    s_mov_b32 s10, s4
13228 ; GFX900-NEXT:    s_mov_b32 s11, s6
13229 ; GFX900-NEXT:    ;;#ASMSTART
13230 ; GFX900-NEXT:    ; use s[8:11]
13231 ; GFX900-NEXT:    ;;#ASMEND
13232 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
13234 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_3_5:
13235 ; GFX90A:       ; %bb.0:
13236 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13237 ; GFX90A-NEXT:    ;;#ASMSTART
13238 ; GFX90A-NEXT:    ; def s[4:6]
13239 ; GFX90A-NEXT:    ;;#ASMEND
13240 ; GFX90A-NEXT:    s_mov_b32 s8, s6
13241 ; GFX90A-NEXT:    s_mov_b32 s9, s6
13242 ; GFX90A-NEXT:    s_mov_b32 s10, s4
13243 ; GFX90A-NEXT:    s_mov_b32 s11, s6
13244 ; GFX90A-NEXT:    ;;#ASMSTART
13245 ; GFX90A-NEXT:    ; use s[8:11]
13246 ; GFX90A-NEXT:    ;;#ASMEND
13247 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13249 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_3_5:
13250 ; GFX940:       ; %bb.0:
13251 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13252 ; GFX940-NEXT:    ;;#ASMSTART
13253 ; GFX940-NEXT:    ; def s[0:2]
13254 ; GFX940-NEXT:    ;;#ASMEND
13255 ; GFX940-NEXT:    s_mov_b32 s8, s2
13256 ; GFX940-NEXT:    s_mov_b32 s9, s2
13257 ; GFX940-NEXT:    s_mov_b32 s10, s0
13258 ; GFX940-NEXT:    s_mov_b32 s11, s2
13259 ; GFX940-NEXT:    ;;#ASMSTART
13260 ; GFX940-NEXT:    ; use s[8:11]
13261 ; GFX940-NEXT:    ;;#ASMEND
13262 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
13263   %vec0 = call <3 x float> asm "; def $0", "=s"()
13264   %vec1 = call <3 x float> asm "; def $0", "=s"()
13265   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 5>
13266   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
13267   ret void
13270 define void @s_shuffle_v4f32_v3f32__5_5_4_5() {
13271 ; GFX900-LABEL: s_shuffle_v4f32_v3f32__5_5_4_5:
13272 ; GFX900:       ; %bb.0:
13273 ; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13274 ; GFX900-NEXT:    ;;#ASMSTART
13275 ; GFX900-NEXT:    ; def s[4:6]
13276 ; GFX900-NEXT:    ;;#ASMEND
13277 ; GFX900-NEXT:    s_mov_b32 s8, s6
13278 ; GFX900-NEXT:    s_mov_b32 s9, s6
13279 ; GFX900-NEXT:    s_mov_b32 s10, s5
13280 ; GFX900-NEXT:    s_mov_b32 s11, s6
13281 ; GFX900-NEXT:    ;;#ASMSTART
13282 ; GFX900-NEXT:    ; use s[8:11]
13283 ; GFX900-NEXT:    ;;#ASMEND
13284 ; GFX900-NEXT:    s_setpc_b64 s[30:31]
13286 ; GFX90A-LABEL: s_shuffle_v4f32_v3f32__5_5_4_5:
13287 ; GFX90A:       ; %bb.0:
13288 ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13289 ; GFX90A-NEXT:    ;;#ASMSTART
13290 ; GFX90A-NEXT:    ; def s[4:6]
13291 ; GFX90A-NEXT:    ;;#ASMEND
13292 ; GFX90A-NEXT:    s_mov_b32 s8, s6
13293 ; GFX90A-NEXT:    s_mov_b32 s9, s6
13294 ; GFX90A-NEXT:    s_mov_b32 s10, s5
13295 ; GFX90A-NEXT:    s_mov_b32 s11, s6
13296 ; GFX90A-NEXT:    ;;#ASMSTART
13297 ; GFX90A-NEXT:    ; use s[8:11]
13298 ; GFX90A-NEXT:    ;;#ASMEND
13299 ; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13301 ; GFX940-LABEL: s_shuffle_v4f32_v3f32__5_5_4_5:
13302 ; GFX940:       ; %bb.0:
13303 ; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13304 ; GFX940-NEXT:    ;;#ASMSTART
13305 ; GFX940-NEXT:    ; def s[0:2]
13306 ; GFX940-NEXT:    ;;#ASMEND
13307 ; GFX940-NEXT:    s_mov_b32 s8, s2
13308 ; GFX940-NEXT:    s_mov_b32 s9, s2
13309 ; GFX940-NEXT:    s_mov_b32 s10, s1
13310 ; GFX940-NEXT:    s_mov_b32 s11, s2
13311 ; GFX940-NEXT:    ;;#ASMSTART
13312 ; GFX940-NEXT:    ; use s[8:11]
13313 ; GFX940-NEXT:    ;;#ASMEND
13314 ; GFX940-NEXT:    s_setpc_b64 s[30:31]
13315   %vec0 = call <3 x float> asm "; def $0", "=s"()
13316   %vec1 = call <3 x float> asm "; def $0", "=s"()
13317   %shuf = shufflevector <3 x float> %vec0, <3 x float> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 5>
13318   call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
13319   ret void
13321 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
13322 ; GFX90APLUS: {{.*}}