xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v4f32.v2f32.ll (revision 585858aeb6247b3892218edb9d353c63f1c33186)
17786266dSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
27786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s
37786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s
47786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s
57786266dSMatt Arsenault
67786266dSMatt Arsenault
77786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_u_u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4f32_v2f32__u_u_u_u:
97786266dSMatt Arsenault; GFX9:       ; %bb.0:
107786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
117786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
127786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> poison
147786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_u_u_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u:
207786266dSMatt Arsenault; GFX900:       ; %bb.0:
217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
297786266dSMatt Arsenault;
307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u:
317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
407786266dSMatt Arsenault;
417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u:
427786266dSMatt Arsenault; GFX940:       ; %bb.0:
437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
517786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
537786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_u_u_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_u_u_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
697786266dSMatt Arsenault;
707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_u_u_u:
717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
817786266dSMatt Arsenault;
827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_u_u_u:
837786266dSMatt Arsenault; GFX940:       ; %bb.0:
847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
937786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
947786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
957786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
967786266dSMatt Arsenault  ret void
977786266dSMatt Arsenault}
987786266dSMatt Arsenault
997786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_u_u_u(ptr addrspace(1) inreg %ptr) {
1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4f32_v2f32__2_u_u_u:
1017786266dSMatt Arsenault; GFX9:       ; %bb.0:
1027786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1037786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1047786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
1057786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
1067786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1077786266dSMatt Arsenault  ret void
1087786266dSMatt Arsenault}
1097786266dSMatt Arsenault
1107786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_u_u(ptr addrspace(1) inreg %ptr) {
1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u:
1127786266dSMatt Arsenault; GFX900:       ; %bb.0:
1137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
1167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
1197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
1207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1227786266dSMatt Arsenault;
1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u:
1247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
1307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
1327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1347786266dSMatt Arsenault;
1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u:
1367786266dSMatt Arsenault; GFX940:       ; %bb.0:
1377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
1427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
1447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1467786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
1477786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
1487786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
1497786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
1507786266dSMatt Arsenault  ret void
1517786266dSMatt Arsenault}
1527786266dSMatt Arsenault
1537786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_u_u(ptr addrspace(1) inreg %ptr) {
1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u:
1557786266dSMatt Arsenault; GFX900:       ; %bb.0:
1567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
1597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
1637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1687786266dSMatt Arsenault;
1697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u:
1707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
1787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1847786266dSMatt Arsenault;
1857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u:
1867786266dSMatt Arsenault; GFX940:       ; %bb.0:
1877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
1947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2007786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
2017786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
2027786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>
2037786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2047786266dSMatt Arsenault  ret void
2057786266dSMatt Arsenault}
2067786266dSMatt Arsenault
2077786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_u_u(ptr addrspace(1) inreg %ptr) {
2087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u:
2097786266dSMatt Arsenault; GFX900:       ; %bb.0:
2107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
2137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
2177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
2197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2227786266dSMatt Arsenault;
2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u:
2247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
2287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
2327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2377786266dSMatt Arsenault;
2387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u:
2397786266dSMatt Arsenault; GFX940:       ; %bb.0:
2407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
2437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
2477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2537786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
2547786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
2557786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>
2567786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
2577786266dSMatt Arsenault  ret void
2587786266dSMatt Arsenault}
2597786266dSMatt Arsenault
2607786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_u_u(ptr addrspace(1) inreg %ptr) {
2617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u:
2627786266dSMatt Arsenault; GFX900:       ; %bb.0:
2637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
2657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
2677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
2707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2727786266dSMatt Arsenault;
2737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u:
2747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
2797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2827786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2857786266dSMatt Arsenault;
2867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u:
2877786266dSMatt Arsenault; GFX940:       ; %bb.0:
2887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
2927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2937786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2997786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
3007786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
3017786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>
3027786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3037786266dSMatt Arsenault  ret void
3047786266dSMatt Arsenault}
3057786266dSMatt Arsenault
3067786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_u(ptr addrspace(1) inreg %ptr) {
3077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u:
3087786266dSMatt Arsenault; GFX900:       ; %bb.0:
3097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
3147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
3157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
3167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3187786266dSMatt Arsenault;
3197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u:
3207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
3267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
3277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
3287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3307786266dSMatt Arsenault;
3317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u:
3327786266dSMatt Arsenault; GFX940:       ; %bb.0:
3337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
3387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
3397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
3407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3427786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
3437786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
3447786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>
3457786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3467786266dSMatt Arsenault  ret void
3477786266dSMatt Arsenault}
3487786266dSMatt Arsenault
3497786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_u(ptr addrspace(1) inreg %ptr) {
3507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u:
3517786266dSMatt Arsenault; GFX900:       ; %bb.0:
3527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
3587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
3607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3647786266dSMatt Arsenault;
3657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u:
3667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
3737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
3757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3797786266dSMatt Arsenault;
3807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u:
3817786266dSMatt Arsenault; GFX940:       ; %bb.0:
3827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
3887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
3907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3947786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
3957786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
3967786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>
3977786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
3987786266dSMatt Arsenault  ret void
3997786266dSMatt Arsenault}
4007786266dSMatt Arsenault
4017786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_u(ptr addrspace(1) inreg %ptr) {
4027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u:
4037786266dSMatt Arsenault; GFX900:       ; %bb.0:
4047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
4077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4097786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
4107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
4137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
4147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4167786266dSMatt Arsenault;
4177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u:
4187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
4227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
4257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
4287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
4297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4327786266dSMatt Arsenault;
4337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u:
4347786266dSMatt Arsenault; GFX940:       ; %bb.0:
4357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
4387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4407786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
4417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
4447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
4457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
4467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4487786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
4497786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
4507786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>
4517786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4527786266dSMatt Arsenault  ret void
4537786266dSMatt Arsenault}
4547786266dSMatt Arsenault
4557786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_u(ptr addrspace(1) inreg %ptr) {
4567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u:
4577786266dSMatt Arsenault; GFX900:       ; %bb.0:
4587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
4627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
4647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
4657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4687786266dSMatt Arsenault;
4697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u:
4707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
4757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
4777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
4787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4817786266dSMatt Arsenault;
4827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u:
4837786266dSMatt Arsenault; GFX940:       ; %bb.0:
4847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
4887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4897786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
4917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
4927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
4937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4957786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
4967786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
4977786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>
4987786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
4997786266dSMatt Arsenault  ret void
5007786266dSMatt Arsenault}
5017786266dSMatt Arsenault
5027786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_u(ptr addrspace(1) inreg %ptr) {
5037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u:
5047786266dSMatt Arsenault; GFX900:       ; %bb.0:
5057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
5107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
5117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
5137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5157786266dSMatt Arsenault;
5167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u:
5177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
5237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
5247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
5267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5287786266dSMatt Arsenault;
5297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u:
5307786266dSMatt Arsenault; GFX940:       ; %bb.0:
5317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
5367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
5377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
5397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5417786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
5427786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
5437786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>
5447786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
5457786266dSMatt Arsenault  ret void
5467786266dSMatt Arsenault}
5477786266dSMatt Arsenault
5487786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_0(ptr addrspace(1) inreg %ptr) {
5497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0:
5507786266dSMatt Arsenault; GFX900:       ; %bb.0:
5517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
5567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
5577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
5607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5647786266dSMatt Arsenault;
5657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0:
5667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
5727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
5747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
5767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
5787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
5797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5817786266dSMatt Arsenault;
5827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0:
5837786266dSMatt Arsenault; GFX940:       ; %bb.0:
5847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
5897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5907786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
5917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
5937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
5957786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
5967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5987786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
5997786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
6007786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>
6017786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6027786266dSMatt Arsenault  ret void
6037786266dSMatt Arsenault}
6047786266dSMatt Arsenault
6057786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_1(ptr addrspace(1) inreg %ptr) {
6067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1:
6077786266dSMatt Arsenault; GFX900:       ; %bb.0:
6087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
6117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6137786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
6147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
6177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
6187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6217786266dSMatt Arsenault;
6227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1:
6237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
6277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
6307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
6337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
6347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6377786266dSMatt Arsenault;
6387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1:
6397786266dSMatt Arsenault; GFX940:       ; %bb.0:
6407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
6437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
6467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
6497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
6507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6537786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
6547786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
6557786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>
6567786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
6577786266dSMatt Arsenault  ret void
6587786266dSMatt Arsenault}
6597786266dSMatt Arsenault
6607786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_2(ptr addrspace(1) inreg %ptr) {
6617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2:
6627786266dSMatt Arsenault; GFX900:       ; %bb.0:
6637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
6657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
6677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
6697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v4
6707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
6717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6747786266dSMatt Arsenault;
6757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2:
6767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
6797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
6817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
6837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
6847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
6857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
6867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
6877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6897786266dSMatt Arsenault;
6907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2:
6917786266dSMatt Arsenault; GFX940:       ; %bb.0:
6927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
6947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
6967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6977786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
6987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
6997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
7007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v5
7017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
7027786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
7037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7057786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
7067786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
7077786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>
7087786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
7097786266dSMatt Arsenault  ret void
7107786266dSMatt Arsenault}
7117786266dSMatt Arsenault
7127786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_3_3(ptr addrspace(1) inreg %ptr) {
7137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3:
7147786266dSMatt Arsenault; GFX900:       ; %bb.0:
7157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7177786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
7187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
7217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
7227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
7237786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7267786266dSMatt Arsenault;
7277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3:
7287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
7357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
7367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
7377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7407786266dSMatt Arsenault;
7417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3:
7427786266dSMatt Arsenault; GFX940:       ; %bb.0:
7437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
7497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
7507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
7517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
7527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7547786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
7557786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
7567786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
7577786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
7587786266dSMatt Arsenault  ret void
7597786266dSMatt Arsenault}
7607786266dSMatt Arsenault
7617786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_0_0_0(ptr addrspace(1) inreg %ptr) {
7627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0:
7637786266dSMatt Arsenault; GFX900:       ; %bb.0:
7647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
7677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
7697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
7707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
7717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]
7727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7747786266dSMatt Arsenault;
7757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0:
7767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
7807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
7827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
7837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
7847786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]
7857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7877786266dSMatt Arsenault;
7887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0:
7897786266dSMatt Arsenault; GFX940:       ; %bb.0:
7907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7927786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
7937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
7957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
7967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
7977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1] sc0 sc1
7987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8007786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
8017786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>
8027786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
8037786266dSMatt Arsenault  ret void
8047786266dSMatt Arsenault}
8057786266dSMatt Arsenault
8067786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_0_0_0(ptr addrspace(1) inreg %ptr) {
8077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0:
8087786266dSMatt Arsenault; GFX900:       ; %bb.0:
8097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
8127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
8157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
8167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
8177786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8207786266dSMatt Arsenault;
8217786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0:
8227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8257786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
8267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
8297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
8307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
8317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8347786266dSMatt Arsenault;
8357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0:
8367786266dSMatt Arsenault; GFX940:       ; %bb.0:
8377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
8407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
8437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
8447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
8457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8487786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
8497786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> zeroinitializer
8507786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
8517786266dSMatt Arsenault  ret void
8527786266dSMatt Arsenault}
8537786266dSMatt Arsenault
8547786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_0_0_0(ptr addrspace(1) inreg %ptr) {
8557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0:
8567786266dSMatt Arsenault; GFX900:       ; %bb.0:
8577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
8607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
8637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
8647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
8657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8687786266dSMatt Arsenault;
8697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0:
8707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
8747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
8777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
8787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
8797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8827786266dSMatt Arsenault;
8837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0:
8847786266dSMatt Arsenault; GFX940:       ; %bb.0:
8857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
8887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
8917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
8927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
8937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8967786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
8977786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
8987786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
8997786266dSMatt Arsenault  ret void
9007786266dSMatt Arsenault}
9017786266dSMatt Arsenault
9027786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_0_0_0(ptr addrspace(1) inreg %ptr) {
9037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0:
9047786266dSMatt Arsenault; GFX900:       ; %bb.0:
9057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
9087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
9107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
9117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
9127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]
9137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9157786266dSMatt Arsenault;
9167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0:
9177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
9217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
9237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
9247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
9257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]
9267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9287786266dSMatt Arsenault;
9297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0:
9307786266dSMatt Arsenault; GFX940:       ; %bb.0:
9317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
9347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
9367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
9377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
9387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1] sc0 sc1
9397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9417786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
9427786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
9437786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
9447786266dSMatt Arsenault  ret void
9457786266dSMatt Arsenault}
9467786266dSMatt Arsenault
9477786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_0_0(ptr addrspace(1) inreg %ptr) {
9487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0:
9497786266dSMatt Arsenault; GFX900:       ; %bb.0:
9507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
9537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
9567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
9587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
9597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
9607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
9617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9647786266dSMatt Arsenault;
9657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0:
9667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
9707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9727786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
9737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
9757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
9767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
9777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
9787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9817786266dSMatt Arsenault;
9827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0:
9837786266dSMatt Arsenault; GFX940:       ; %bb.0:
9847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
9877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
9907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
9927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
9937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
9947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
9957786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
9967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9987786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
9997786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
10007786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
10017786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
10027786266dSMatt Arsenault  ret void
10037786266dSMatt Arsenault}
10047786266dSMatt Arsenault
10057786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_0_0(ptr addrspace(1) inreg %ptr) {
10067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0:
10077786266dSMatt Arsenault; GFX900:       ; %bb.0:
10087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
10117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10137786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
10147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
10177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
10187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10217786266dSMatt Arsenault;
10227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0:
10237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
10277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
10307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
10337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
10347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10377786266dSMatt Arsenault;
10387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0:
10397786266dSMatt Arsenault; GFX940:       ; %bb.0:
10407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
10437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
10467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
10487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
10497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
10507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
10517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10537786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
10547786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
10557786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>
10567786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
10577786266dSMatt Arsenault  ret void
10587786266dSMatt Arsenault}
10597786266dSMatt Arsenault
10607786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_0_0(ptr addrspace(1) inreg %ptr) {
10617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0:
10627786266dSMatt Arsenault; GFX900:       ; %bb.0:
10637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
10667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10687786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
10697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
10727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
10737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
10747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10777786266dSMatt Arsenault;
10787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0:
10797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
10837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
10867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
10897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
10907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
10917786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10947786266dSMatt Arsenault;
10957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0:
10967786266dSMatt Arsenault; GFX940:       ; %bb.0:
10977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
11007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
11037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
11057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
11067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
11077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
11087786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
11097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11117786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
11127786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
11137786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>
11147786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
11157786266dSMatt Arsenault  ret void
11167786266dSMatt Arsenault}
11177786266dSMatt Arsenault
11187786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_0_0(ptr addrspace(1) inreg %ptr) {
11197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0:
11207786266dSMatt Arsenault; GFX900:       ; %bb.0:
11217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11237786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
11247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
11267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11277786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
11287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
11307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
11317786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
11327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11347786266dSMatt Arsenault;
11357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0:
11367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
11407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
11427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11437786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
11447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
11467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
11477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
11487786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
11497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11517786266dSMatt Arsenault;
11527786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0:
11537786266dSMatt Arsenault; GFX940:       ; %bb.0:
11547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
11577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
11597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
11617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
11637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
11647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
11657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
11667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11687786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
11697786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
11707786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>
11717786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
11727786266dSMatt Arsenault  ret void
11737786266dSMatt Arsenault}
11747786266dSMatt Arsenault
11757786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_0(ptr addrspace(1) inreg %ptr) {
11767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0:
11777786266dSMatt Arsenault; GFX900:       ; %bb.0:
11787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
11817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
11847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
11877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
11887786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
11897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11907786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11917786266dSMatt Arsenault;
11927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0:
11937786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
11977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11997786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
12007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12017786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
12037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
12047786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
12057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12077786266dSMatt Arsenault;
12087786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0:
12097786266dSMatt Arsenault; GFX940:       ; %bb.0:
12107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12127786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
12137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12157786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
12167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
12197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
12207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
12217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12237786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
12247786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
12257786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>
12267786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
12277786266dSMatt Arsenault  ret void
12287786266dSMatt Arsenault}
12297786266dSMatt Arsenault
12307786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_0(ptr addrspace(1) inreg %ptr) {
12317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0:
12327786266dSMatt Arsenault; GFX900:       ; %bb.0:
12337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12357786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
12367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12387786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
12397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
12417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
12427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
12437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
12447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12467786266dSMatt Arsenault;
12477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0:
12487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
12527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
12557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
12587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
12597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
12607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12627786266dSMatt Arsenault;
12637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0:
12647786266dSMatt Arsenault; GFX940:       ; %bb.0:
12657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12677786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
12687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
12717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
12747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
12757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
12767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12787786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
12797786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
12807786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>
12817786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
12827786266dSMatt Arsenault  ret void
12837786266dSMatt Arsenault}
12847786266dSMatt Arsenault
12857786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_0(ptr addrspace(1) inreg %ptr) {
12867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0:
12877786266dSMatt Arsenault; GFX900:       ; %bb.0:
12887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12907786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
12917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
12937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12947786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
12957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
12977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
12987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
12997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13017786266dSMatt Arsenault;
13027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0:
13037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
13077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
13117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
13137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
13147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
13157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
13167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13187786266dSMatt Arsenault;
13197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0:
13207786266dSMatt Arsenault; GFX940:       ; %bb.0:
13217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
13247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
13287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
13307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v5
13317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
13327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
13337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13357786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
13367786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
13377786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>
13387786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
13397786266dSMatt Arsenault  ret void
13407786266dSMatt Arsenault}
13417786266dSMatt Arsenault
13427786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_0(ptr addrspace(1) inreg %ptr) {
13437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0:
13447786266dSMatt Arsenault; GFX900:       ; %bb.0:
13457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
13487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
13507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:5]
13527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
13547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
13557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v4
13567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
13577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13597786266dSMatt Arsenault;
13607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0:
13617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
13657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
13697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
13717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
13727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
13737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
13747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13767786266dSMatt Arsenault;
13777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0:
13787786266dSMatt Arsenault; GFX940:       ; %bb.0:
13797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
13827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
13867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
13887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
13897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
13907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
13917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13937786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
13947786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
13957786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>
13967786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
13977786266dSMatt Arsenault  ret void
13987786266dSMatt Arsenault}
13997786266dSMatt Arsenault
14007786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_1_1_1(ptr addrspace(1) inreg %ptr) {
14017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1:
14027786266dSMatt Arsenault; GFX900:       ; %bb.0:
14037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
14077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
14097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
14107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14137786266dSMatt Arsenault;
14147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1:
14157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
14207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
14227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
14237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14267786266dSMatt Arsenault;
14277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1:
14287786266dSMatt Arsenault; GFX940:       ; %bb.0:
14297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14327786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
14337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14347786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
14367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
14377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
14387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14407786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
14417786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>
14427786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
14437786266dSMatt Arsenault  ret void
14447786266dSMatt Arsenault}
14457786266dSMatt Arsenault
14467786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_1_1_1(ptr addrspace(1) inreg %ptr) {
14477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1:
14487786266dSMatt Arsenault; GFX900:       ; %bb.0:
14497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
14537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
14557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
14567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14597786266dSMatt Arsenault;
14607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1:
14617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
14667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
14687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
14697786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14727786266dSMatt Arsenault;
14737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1:
14747786266dSMatt Arsenault; GFX940:       ; %bb.0:
14757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
14797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14807786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
14827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
14837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
14847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14867786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
14877786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
14887786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
14897786266dSMatt Arsenault  ret void
14907786266dSMatt Arsenault}
14917786266dSMatt Arsenault
14927786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_1_1_1(ptr addrspace(1) inreg %ptr) {
14937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1:
14947786266dSMatt Arsenault; GFX900:       ; %bb.0:
14957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
14987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
15017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
15027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
15037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
15047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15067786266dSMatt Arsenault;
15077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1:
15087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
15127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
15147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
15157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
15167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
15177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
15187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15207786266dSMatt Arsenault;
15217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1:
15227786266dSMatt Arsenault; GFX940:       ; %bb.0:
15237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
15267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
15287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
15297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
15307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
15317786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
15327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15347786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
15357786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
15367786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
15377786266dSMatt Arsenault  ret void
15387786266dSMatt Arsenault}
15397786266dSMatt Arsenault
15407786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_1_1_1(ptr addrspace(1) inreg %ptr) {
15417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1:
15427786266dSMatt Arsenault; GFX900:       ; %bb.0:
15437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
15477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
15497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
15507786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
15517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15537786266dSMatt Arsenault;
15547786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1:
15557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
15587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
15607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
15627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
15637786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
15647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15667786266dSMatt Arsenault;
15677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1:
15687786266dSMatt Arsenault; GFX940:       ; %bb.0:
15697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
15717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15727786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
15737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15747786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
15767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
15777786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
15787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15807786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
15817786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>
15827786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
15837786266dSMatt Arsenault  ret void
15847786266dSMatt Arsenault}
15857786266dSMatt Arsenault
15867786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_1_1(ptr addrspace(1) inreg %ptr) {
15877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1:
15887786266dSMatt Arsenault; GFX900:       ; %bb.0:
15897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15917786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
15927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15947786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
15957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
15987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
15997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
16007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16037786266dSMatt Arsenault;
16047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1:
16057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
16097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
16127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
16147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
16157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
16167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
16177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16207786266dSMatt Arsenault;
16217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1:
16227786266dSMatt Arsenault; GFX940:       ; %bb.0:
16237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
16267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
16297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
16317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
16327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
16337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
16347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
16357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16377786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
16387786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
16397786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>
16407786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
16417786266dSMatt Arsenault  ret void
16427786266dSMatt Arsenault}
16437786266dSMatt Arsenault
16447786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_1_1(ptr addrspace(1) inreg %ptr) {
16457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1:
16467786266dSMatt Arsenault; GFX900:       ; %bb.0:
16477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
16507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
16537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
16557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
16567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
16577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16607786266dSMatt Arsenault;
16617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1:
16627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
16667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
16697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
16717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
16727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
16737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16767786266dSMatt Arsenault;
16777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1:
16787786266dSMatt Arsenault; GFX940:       ; %bb.0:
16797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
16827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
16857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
16877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
16887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
16897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
16907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16927786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
16937786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
16947786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>
16957786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
16967786266dSMatt Arsenault  ret void
16977786266dSMatt Arsenault}
16987786266dSMatt Arsenault
16997786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_1_1(ptr addrspace(1) inreg %ptr) {
17007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_1_1:
17017786266dSMatt Arsenault; GFX900:       ; %bb.0:
17027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
17057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
17077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
17097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
17117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
17127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
17137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17157786266dSMatt Arsenault;
17167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_1_1:
17177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
17217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
17247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
17277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
17287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
17297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17327786266dSMatt Arsenault;
17337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_1_1:
17347786266dSMatt Arsenault; GFX940:       ; %bb.0:
17357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
17387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17407786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
17417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
17447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
17457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
17467786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
17477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17497786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
17507786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
17517786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>
17527786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
17537786266dSMatt Arsenault  ret void
17547786266dSMatt Arsenault}
17557786266dSMatt Arsenault
17567786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_1_1(ptr addrspace(1) inreg %ptr) {
17577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1:
17587786266dSMatt Arsenault; GFX900:       ; %bb.0:
17597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
17627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
17657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
17677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
17687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
17697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17727786266dSMatt Arsenault;
17737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1:
17747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
17787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
17807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
17827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
17847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
17857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
17867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
17877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17897786266dSMatt Arsenault;
17907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1:
17917786266dSMatt Arsenault; GFX940:       ; %bb.0:
17927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17947786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
17957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
17977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
17997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
18017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
18027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
18037786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
18047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18067786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
18077786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
18087786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>
18097786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
18107786266dSMatt Arsenault  ret void
18117786266dSMatt Arsenault}
18127786266dSMatt Arsenault
18137786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_1(ptr addrspace(1) inreg %ptr) {
18147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1:
18157786266dSMatt Arsenault; GFX900:       ; %bb.0:
18167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
18197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
18227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
18257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
18267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
18277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18297786266dSMatt Arsenault;
18307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1:
18317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
18357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
18387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
18407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
18417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
18427786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
18437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18457786266dSMatt Arsenault;
18467786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1:
18477786266dSMatt Arsenault; GFX940:       ; %bb.0:
18487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18507786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
18517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18537786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
18547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
18567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
18577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
18587786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
18597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18617786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
18627786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
18637786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>
18647786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
18657786266dSMatt Arsenault  ret void
18667786266dSMatt Arsenault}
18677786266dSMatt Arsenault
18687786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_1(ptr addrspace(1) inreg %ptr) {
18697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1:
18707786266dSMatt Arsenault; GFX900:       ; %bb.0:
18717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18737786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
18747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
18777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18787786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
18797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18807786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
18817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18837786266dSMatt Arsenault;
18847786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1:
18857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18887786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
18897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
18917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
18927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
18947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18957786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
18967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18987786266dSMatt Arsenault;
18997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1:
19007786266dSMatt Arsenault; GFX940:       ; %bb.0:
19017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19037786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
19047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
19077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19087786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
19097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19107786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
19117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19137786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
19147786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
19157786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>
19167786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
19177786266dSMatt Arsenault  ret void
19187786266dSMatt Arsenault}
19197786266dSMatt Arsenault
19207786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_1(ptr addrspace(1) inreg %ptr) {
19217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1:
19227786266dSMatt Arsenault; GFX900:       ; %bb.0:
19237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
19267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
19287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
19297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
19317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19327786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19357786266dSMatt Arsenault;
19367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1:
19377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
19417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
19437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
19447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
19467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19477786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19507786266dSMatt Arsenault;
19517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1:
19527786266dSMatt Arsenault; GFX940:       ; %bb.0:
19537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
19567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
19597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
19617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19627786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
19637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19657786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
19667786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
19677786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>
19687786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
19697786266dSMatt Arsenault  ret void
19707786266dSMatt Arsenault}
19717786266dSMatt Arsenault
19727786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_1(ptr addrspace(1) inreg %ptr) {
19737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1:
19747786266dSMatt Arsenault; GFX900:       ; %bb.0:
19757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19777786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
19787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
19817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
19837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
19847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
19857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v4
19867786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
19877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19897786266dSMatt Arsenault;
19907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1:
19917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19947786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
19957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
19977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19987786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
19997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
20017786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
20027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
20037786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
20047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20057786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20067786266dSMatt Arsenault;
20077786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1:
20087786266dSMatt Arsenault; GFX940:       ; %bb.0:
20097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20117786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
20127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
20147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20157786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
20167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
20187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
20197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
20207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
20217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20237786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
20247786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
20257786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>
20267786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
20277786266dSMatt Arsenault  ret void
20287786266dSMatt Arsenault}
20297786266dSMatt Arsenault
20307786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_2_2_2(ptr addrspace(1) inreg %ptr) {
20317786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4f32_v2f32__u_2_2_2:
20327786266dSMatt Arsenault; GFX9:       ; %bb.0:
20337786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20347786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
20357786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
20367786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>
20377786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
20387786266dSMatt Arsenault  ret void
20397786266dSMatt Arsenault}
20407786266dSMatt Arsenault
20417786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_2_2_2(ptr addrspace(1) inreg %ptr) {
20427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2:
20437786266dSMatt Arsenault; GFX900:       ; %bb.0:
20447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
20467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
20487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
20507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20527786266dSMatt Arsenault;
20537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2:
20547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
20577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
20597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20607786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
20617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20637786266dSMatt Arsenault;
20647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2:
20657786266dSMatt Arsenault; GFX940:       ; %bb.0:
20667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
20687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20697786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
20707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
20727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20747786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
20757786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>
20767786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
20777786266dSMatt Arsenault  ret void
20787786266dSMatt Arsenault}
20797786266dSMatt Arsenault
20807786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_2_2_2(ptr addrspace(1) inreg %ptr) {
20817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2:
20827786266dSMatt Arsenault; GFX900:       ; %bb.0:
20837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20857786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
20867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
20887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
20897786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
20907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20927786266dSMatt Arsenault;
20937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2:
20947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20977786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
20987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
21007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
21017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
21027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21047786266dSMatt Arsenault;
21057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2:
21067786266dSMatt Arsenault; GFX940:       ; %bb.0:
21077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
21107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
21127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
21137786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
21147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21167786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
21177786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>
21187786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
21197786266dSMatt Arsenault  ret void
21207786266dSMatt Arsenault}
21217786266dSMatt Arsenault
21227786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_2_2_2(ptr addrspace(1) inreg %ptr) {
21237786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4f32_v2f32__2_2_2_2:
21247786266dSMatt Arsenault; GFX9:       ; %bb.0:
21257786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21267786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
21277786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
21287786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>
21297786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
21307786266dSMatt Arsenault  ret void
21317786266dSMatt Arsenault}
21327786266dSMatt Arsenault
21337786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_2_2(ptr addrspace(1) inreg %ptr) {
21347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2:
21357786266dSMatt Arsenault; GFX900:       ; %bb.0:
21367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21387786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
21397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
21417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
21427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
21437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
21447786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
21457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21477786266dSMatt Arsenault;
21487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2:
21497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21527786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
21537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
21557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
21567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
21577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
21587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
21597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21617786266dSMatt Arsenault;
21627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2:
21637786266dSMatt Arsenault; GFX940:       ; %bb.0:
21647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
21677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
21697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
21707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
21717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
21727786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
21737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21757786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
21767786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
21777786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>
21787786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
21797786266dSMatt Arsenault  ret void
21807786266dSMatt Arsenault}
21817786266dSMatt Arsenault
21827786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_2_2(ptr addrspace(1) inreg %ptr) {
21837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_2_2:
21847786266dSMatt Arsenault; GFX900:       ; %bb.0:
21857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21877786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
21887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, 0
21907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
21917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
21927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]
21937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21957786266dSMatt Arsenault;
21967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_2_2:
21977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
22017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
22037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
22047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
22057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]
22067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22087786266dSMatt Arsenault;
22097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_2_2:
22107786266dSMatt Arsenault; GFX940:       ; %bb.0:
22117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
22147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, 0
22167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
22177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
22187786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1
22197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22217786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
22227786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
22237786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>
22247786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
22257786266dSMatt Arsenault  ret void
22267786266dSMatt Arsenault}
22277786266dSMatt Arsenault
22287786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_2_2(ptr addrspace(1) inreg %ptr) {
22297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2:
22307786266dSMatt Arsenault; GFX900:       ; %bb.0:
22317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
22347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
22377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
22397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
22407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
22417786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
22427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22447786266dSMatt Arsenault;
22457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2:
22467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
22507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
22527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22537786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
22547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
22567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
22577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
22587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
22597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22617786266dSMatt Arsenault;
22627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2:
22637786266dSMatt Arsenault; GFX940:       ; %bb.0:
22647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
22677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
22697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
22717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
22737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
22747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
22757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
22767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22787786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
22797786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
22807786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>
22817786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
22827786266dSMatt Arsenault  ret void
22837786266dSMatt Arsenault}
22847786266dSMatt Arsenault
22857786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_2_2(ptr addrspace(1) inreg %ptr) {
22867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2:
22877786266dSMatt Arsenault; GFX900:       ; %bb.0:
22887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22907786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
22917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
22947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
22967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
22977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
22987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
22997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23017786266dSMatt Arsenault;
23027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2:
23037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
23077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
23107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
23127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
23137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
23147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23177786266dSMatt Arsenault;
23187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2:
23197786266dSMatt Arsenault; GFX940:       ; %bb.0:
23207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
23237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
23267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
23287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
23297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
23307786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
23317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23337786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
23347786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
23357786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>
23367786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
23377786266dSMatt Arsenault  ret void
23387786266dSMatt Arsenault}
23397786266dSMatt Arsenault
23407786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_2(ptr addrspace(1) inreg %ptr) {
23417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2:
23427786266dSMatt Arsenault; GFX900:       ; %bb.0:
23437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23457786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
23467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
23497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
23507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
23517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23547786266dSMatt Arsenault;
23557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2:
23567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
23607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
23627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
23637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
23647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
23657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23687786266dSMatt Arsenault;
23697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2:
23707786266dSMatt Arsenault; GFX940:       ; %bb.0:
23717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
23747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
23767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
23777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
23787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
23797786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
23807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23827786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
23837786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
23847786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>
23857786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
23867786266dSMatt Arsenault  ret void
23877786266dSMatt Arsenault}
23887786266dSMatt Arsenault
23897786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_2(ptr addrspace(1) inreg %ptr) {
23907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2:
23917786266dSMatt Arsenault; GFX900:       ; %bb.0:
23927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23947786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
23957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
23987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
23997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
24007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
24017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24037786266dSMatt Arsenault;
24047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2:
24057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
24097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
24117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
24127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
24137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
24147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
24157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24177786266dSMatt Arsenault;
24187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2:
24197786266dSMatt Arsenault; GFX940:       ; %bb.0:
24207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
24237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
24257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
24267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
24277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
24287786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
24297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24317786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
24327786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
24337786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>
24347786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
24357786266dSMatt Arsenault  ret void
24367786266dSMatt Arsenault}
24377786266dSMatt Arsenault
24387786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_2(ptr addrspace(1) inreg %ptr) {
24397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2:
24407786266dSMatt Arsenault; GFX900:       ; %bb.0:
24417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24437786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
24447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
24467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
24487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
24507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v4
24517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
24527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24547786266dSMatt Arsenault;
24557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2:
24567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
24607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
24627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
24647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
24667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
24677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
24687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
24697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24717786266dSMatt Arsenault;
24727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2:
24737786266dSMatt Arsenault; GFX940:       ; %bb.0:
24747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
24777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
24797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24807786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
24817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24827786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
24837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
24847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
24857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
24867786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
24877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24897786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
24907786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
24917786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>
24927786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
24937786266dSMatt Arsenault  ret void
24947786266dSMatt Arsenault}
24957786266dSMatt Arsenault
24967786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_2(ptr addrspace(1) inreg %ptr) {
24977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2:
24987786266dSMatt Arsenault; GFX900:       ; %bb.0:
24997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25017786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
25027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
25047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
25067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
25087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v4
25097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
25107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25127786266dSMatt Arsenault;
25137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2:
25147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
25187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
25207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
25227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
25247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
25257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
25267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
25277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
25287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25307786266dSMatt Arsenault;
25317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2:
25327786266dSMatt Arsenault; GFX940:       ; %bb.0:
25337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
25367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
25387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
25407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
25427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
25437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
25447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
25457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
25467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25487786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
25497786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
25507786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>
25517786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
25527786266dSMatt Arsenault  ret void
25537786266dSMatt Arsenault}
25547786266dSMatt Arsenault
25557786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__u_3_3_3(ptr addrspace(1) inreg %ptr) {
25567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3:
25577786266dSMatt Arsenault; GFX900:       ; %bb.0:
25587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
25607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
25627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
25647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
25657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
25667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25687786266dSMatt Arsenault;
25697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3:
25707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
25737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
25757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
25777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
25787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
25797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25817786266dSMatt Arsenault;
25827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3:
25837786266dSMatt Arsenault; GFX940:       ; %bb.0:
25847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
25867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
25887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25897786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
25907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
25917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
25927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
25937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25957786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
25967786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
25977786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>
25987786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
25997786266dSMatt Arsenault  ret void
26007786266dSMatt Arsenault}
26017786266dSMatt Arsenault
26027786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__0_3_3_3(ptr addrspace(1) inreg %ptr) {
26037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3:
26047786266dSMatt Arsenault; GFX900:       ; %bb.0:
26057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
26087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
26117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
26137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
26147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
26157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
26167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26187786266dSMatt Arsenault;
26197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3:
26207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
26247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
26277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
26297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
26307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
26317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
26327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26347786266dSMatt Arsenault;
26357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3:
26367786266dSMatt Arsenault; GFX940:       ; %bb.0:
26377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
26407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
26437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
26457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
26467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
26477786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
26487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26507786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
26517786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
26527786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>
26537786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
26547786266dSMatt Arsenault  ret void
26557786266dSMatt Arsenault}
26567786266dSMatt Arsenault
26577786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__1_3_3_3(ptr addrspace(1) inreg %ptr) {
26587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3:
26597786266dSMatt Arsenault; GFX900:       ; %bb.0:
26607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
26637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
26667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
26687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
26697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
26707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
26717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
26727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26747786266dSMatt Arsenault;
26757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3:
26767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
26807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
26837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
26857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
26867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
26877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
26887786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
26897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26917786266dSMatt Arsenault;
26927786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3:
26937786266dSMatt Arsenault; GFX940:       ; %bb.0:
26947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26967786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
26977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
27007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
27027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
27037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
27047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
27057786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
27067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27087786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
27097786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
27107786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>
27117786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
27127786266dSMatt Arsenault  ret void
27137786266dSMatt Arsenault}
27147786266dSMatt Arsenault
27157786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__2_3_3_3(ptr addrspace(1) inreg %ptr) {
27167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3:
27177786266dSMatt Arsenault; GFX900:       ; %bb.0:
27187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
27207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
27227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
27247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
27257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
27267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27287786266dSMatt Arsenault;
27297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3:
27307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
27337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
27357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
27377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
27387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
27397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27417786266dSMatt Arsenault;
27427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3:
27437786266dSMatt Arsenault; GFX940:       ; %bb.0:
27447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
27467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
27487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27497786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
27507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
27517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
27527786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
27537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27557786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
27567786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
27577786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>
27587786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
27597786266dSMatt Arsenault  ret void
27607786266dSMatt Arsenault}
27617786266dSMatt Arsenault
27627786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_u_3_3(ptr addrspace(1) inreg %ptr) {
27637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3:
27647786266dSMatt Arsenault; GFX900:       ; %bb.0:
27657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
27677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27687786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
27697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
27717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
27727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
27737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27757786266dSMatt Arsenault;
27767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3:
27777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
27817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
27837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
27847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
27857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]
27867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27887786266dSMatt Arsenault;
27897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3:
27907786266dSMatt Arsenault; GFX940:       ; %bb.0:
27917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
27947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, 0
27967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
27977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
27987786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1
27997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28017786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
28027786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
28037786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>
28047786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
28057786266dSMatt Arsenault  ret void
28067786266dSMatt Arsenault}
28077786266dSMatt Arsenault
28087786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_0_3_3(ptr addrspace(1) inreg %ptr) {
28097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3:
28107786266dSMatt Arsenault; GFX900:       ; %bb.0:
28117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28137786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
28147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
28177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
28197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
28207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
28217786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
28227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28237786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28247786266dSMatt Arsenault;
28257786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3:
28267786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
28307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
28327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28337786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
28347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
28367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
28377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
28387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
28397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28417786266dSMatt Arsenault;
28427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3:
28437786266dSMatt Arsenault; GFX940:       ; %bb.0:
28447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
28477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
28497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28507786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
28517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
28537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
28547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
28557786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
28567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28577786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28587786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
28597786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
28607786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>
28617786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
28627786266dSMatt Arsenault  ret void
28637786266dSMatt Arsenault}
28647786266dSMatt Arsenault
28657786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_1_3_3(ptr addrspace(1) inreg %ptr) {
28667786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3:
28677786266dSMatt Arsenault; GFX900:       ; %bb.0:
28687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28707786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
28717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28737786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
28747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
28767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
28777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
28787786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
28797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28817786266dSMatt Arsenault;
28827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3:
28837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28867786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
28877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
28907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
28927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
28937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
28947786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
28957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28977786266dSMatt Arsenault;
28987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3:
28997786266dSMatt Arsenault; GFX940:       ; %bb.0:
29007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
29037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29057786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
29067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
29087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
29097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
29107786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
29117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29137786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
29147786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
29157786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>
29167786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
29177786266dSMatt Arsenault  ret void
29187786266dSMatt Arsenault}
29197786266dSMatt Arsenault
29207786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_2_3_3(ptr addrspace(1) inreg %ptr) {
29217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3:
29227786266dSMatt Arsenault; GFX900:       ; %bb.0:
29237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
29257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29267786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
29277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
29297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
29307786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
29317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29337786266dSMatt Arsenault;
29347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3:
29357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29387786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
29397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
29417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
29427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
29437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
29447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
29457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29477786266dSMatt Arsenault;
29487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3:
29497786266dSMatt Arsenault; GFX940:       ; %bb.0:
29507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
29537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
29557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
29567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
29577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
29587786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
29597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29617786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
29627786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
29637786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>
29647786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
29657786266dSMatt Arsenault  ret void
29667786266dSMatt Arsenault}
29677786266dSMatt Arsenault
29687786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_u_3(ptr addrspace(1) inreg %ptr) {
29697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_3:
29707786266dSMatt Arsenault; GFX900:       ; %bb.0:
29717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29737786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
29747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
29767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
29777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
29787786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
29797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29817786266dSMatt Arsenault;
29827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_3:
29837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29867786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
29877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
29897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
29907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
29917786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
29927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29947786266dSMatt Arsenault;
29957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_u_3:
29967786266dSMatt Arsenault; GFX940:       ; %bb.0:
29977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
30007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
30027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
30037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
30047786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
30057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30077786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
30087786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
30097786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>
30107786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
30117786266dSMatt Arsenault  ret void
30127786266dSMatt Arsenault}
30137786266dSMatt Arsenault
30147786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_0_3(ptr addrspace(1) inreg %ptr) {
30157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3:
30167786266dSMatt Arsenault; GFX900:       ; %bb.0:
30177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30197786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
30207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
30237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
30257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
30267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
30277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
30287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30307786266dSMatt Arsenault;
30317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3:
30327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
30367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30387786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
30397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
30417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
30427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
30437786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
30447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30467786266dSMatt Arsenault;
30477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3:
30487786266dSMatt Arsenault; GFX940:       ; %bb.0:
30497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30517786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
30527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30547786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
30557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
30577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
30587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
30597786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
30607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30627786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
30637786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
30647786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>
30657786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
30667786266dSMatt Arsenault  ret void
30677786266dSMatt Arsenault}
30687786266dSMatt Arsenault
30697786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_1_3(ptr addrspace(1) inreg %ptr) {
30707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3:
30717786266dSMatt Arsenault; GFX900:       ; %bb.0:
30727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
30757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30777786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
30787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
30807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
30817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
30827786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
30837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30857786266dSMatt Arsenault;
30867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3:
30877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30907786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
30917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
30947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
30967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
30977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
30987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
30997786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
31007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31027786266dSMatt Arsenault;
31037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3:
31047786266dSMatt Arsenault; GFX940:       ; %bb.0:
31057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31077786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
31087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
31117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
31137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
31147786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
31157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
31167786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
31177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31197786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
31207786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
31217786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>
31227786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
31237786266dSMatt Arsenault  ret void
31247786266dSMatt Arsenault}
31257786266dSMatt Arsenault
31267786266dSMatt Arsenaultdefine void @v_shuffle_v4f32_v2f32__3_3_2_3(ptr addrspace(1) inreg %ptr) {
31277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3:
31287786266dSMatt Arsenault; GFX900:       ; %bb.0:
31297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
31317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31327786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
31337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
31357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
31367786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
31377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31397786266dSMatt Arsenault;
31407786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3:
31417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
31447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
31467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
31487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
31497786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
31507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31527786266dSMatt Arsenault;
31537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3:
31547786266dSMatt Arsenault; GFX940:       ; %bb.0:
31557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
31577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
31597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31607786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
31617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
31627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
31637786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
31647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31667786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=v"()
31677786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=v"()
31687786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>
31697786266dSMatt Arsenault  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16
31707786266dSMatt Arsenault  ret void
31717786266dSMatt Arsenault}
31727786266dSMatt Arsenault
31737786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_u_u_u() {
3174*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_u_u_u:
3175*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3176*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3177*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3178*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3179*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3180*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
31817786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
31827786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> poison
3183*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
31847786266dSMatt Arsenault  ret void
31857786266dSMatt Arsenault}
31867786266dSMatt Arsenault
31877786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_u_u_u() {
31887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u:
31897786266dSMatt Arsenault; GFX900:       ; %bb.0:
31907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3192*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
31937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3195*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
31967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31987786266dSMatt Arsenault;
31997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u:
32007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3203*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
32047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3206*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
32077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32097786266dSMatt Arsenault;
32107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u:
32117786266dSMatt Arsenault; GFX940:       ; %bb.0:
32127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3214*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
32157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32167786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
32177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3218*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
32197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32217786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
32227786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
3223*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
32247786266dSMatt Arsenault  ret void
32257786266dSMatt Arsenault}
32267786266dSMatt Arsenault
32277786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_u_u_u() {
32287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u:
32297786266dSMatt Arsenault; GFX900:       ; %bb.0:
32307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32327786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
32337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3234*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
32357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3236*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
32377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32397786266dSMatt Arsenault;
32407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u:
32417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
32457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3246*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
32477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3248*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
32497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32517786266dSMatt Arsenault;
32527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u:
32537786266dSMatt Arsenault; GFX940:       ; %bb.0:
32547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
32577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3258*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
32597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3260*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
32617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32637786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
32647786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
3265*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
32667786266dSMatt Arsenault  ret void
32677786266dSMatt Arsenault}
32687786266dSMatt Arsenault
32697786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_u_u_u() {
3270*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_u_u_u:
3271*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3272*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3273*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3274*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3275*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3276*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
32777786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
32787786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
3279*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
32807786266dSMatt Arsenault  ret void
32817786266dSMatt Arsenault}
32827786266dSMatt Arsenault
32837786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_u_u() {
32847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u:
32857786266dSMatt Arsenault; GFX900:       ; %bb.0:
32867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32887786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
32897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3290*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
32917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3292*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
32937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32957786266dSMatt Arsenault;
32967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u:
32977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33007786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
33017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3302*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
33037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3304*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
33057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33077786266dSMatt Arsenault;
33087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u:
33097786266dSMatt Arsenault; GFX940:       ; %bb.0:
33107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33127786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
33137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3314*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
33157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3316*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
33177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33197786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
33207786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
33217786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
3322*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
33237786266dSMatt Arsenault  ret void
33247786266dSMatt Arsenault}
33257786266dSMatt Arsenault
33267786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_u_u() {
33277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u:
33287786266dSMatt Arsenault; GFX900:       ; %bb.0:
33297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33317786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
33327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33347786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
33357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3336*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
3337*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
33387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3339*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
33407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33427786266dSMatt Arsenault;
33437786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u:
33447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33477786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
33487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
33517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3352*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
3353*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
33547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3355*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
33567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33587786266dSMatt Arsenault;
33597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u:
33607786266dSMatt Arsenault; GFX940:       ; %bb.0:
33617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33637786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
33647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33667786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
33677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3368*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
3369*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
33707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3371*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
33727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33747786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
33757786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
33767786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>
3377*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
33787786266dSMatt Arsenault  ret void
33797786266dSMatt Arsenault}
33807786266dSMatt Arsenault
33817786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_u_u() {
33827786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u:
33837786266dSMatt Arsenault; GFX900:       ; %bb.0:
33847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3386*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
3387*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3388*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33897786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
33907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3391*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
33927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3393*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
33947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33967786266dSMatt Arsenault;
33977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u:
33987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3401*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
3402*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3403*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34047786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
34057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3406*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
34077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3408*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
34097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34117786266dSMatt Arsenault;
34127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u:
34137786266dSMatt Arsenault; GFX940:       ; %bb.0:
34147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3416*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
3417*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3418*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34197786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
34207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3421*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
34227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3423*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
34247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34267786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
34277786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
34287786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>
3429*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
34307786266dSMatt Arsenault  ret void
34317786266dSMatt Arsenault}
34327786266dSMatt Arsenault
34337786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_u_u() {
34347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u:
34357786266dSMatt Arsenault; GFX900:       ; %bb.0:
34367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3438*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
34397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3440*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3441*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
34427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3443*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
34447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34467786266dSMatt Arsenault;
34477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u:
34487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3451*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
34527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3453*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3454*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
34557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3456*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
34577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34597786266dSMatt Arsenault;
34607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u:
34617786266dSMatt Arsenault; GFX940:       ; %bb.0:
34627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3464*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
34657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3466*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3467*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
34687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3469*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
34707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34727786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
34737786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
34747786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>
3475*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
34767786266dSMatt Arsenault  ret void
34777786266dSMatt Arsenault}
34787786266dSMatt Arsenault
34797786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_u() {
3480*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_u:
3481*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3482*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3483*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3484*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3485*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3486*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3487*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3488*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3489*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3490*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
34917786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
34927786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
34937786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>
3494*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
34957786266dSMatt Arsenault  ret void
34967786266dSMatt Arsenault}
34977786266dSMatt Arsenault
34987786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_u() {
3499*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_u:
3500*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3501*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3502*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3503*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3504*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3505*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3506*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3507*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3508*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3509*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3510*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3511*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3512*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
35137786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
35147786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
35157786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>
3516*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
35177786266dSMatt Arsenault  ret void
35187786266dSMatt Arsenault}
35197786266dSMatt Arsenault
35207786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_u() {
35217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u:
35227786266dSMatt Arsenault; GFX900:       ; %bb.0:
35237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3525*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
35267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35287786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
35297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3530*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
3531*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
35327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3533*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
35347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35367786266dSMatt Arsenault;
35377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u:
35387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3541*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
35427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
35457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3546*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
3547*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
35487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3549*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
35507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35527786266dSMatt Arsenault;
35537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u:
35547786266dSMatt Arsenault; GFX940:       ; %bb.0:
35557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3557*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
35587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35607786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
35617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3562*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
3563*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
35647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3565*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
35667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35687786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
35697786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
35707786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>
3571*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
35727786266dSMatt Arsenault  ret void
35737786266dSMatt Arsenault}
35747786266dSMatt Arsenault
35757786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_u() {
3576*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_u:
3577*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3578*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3579*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3580*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3581*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3582*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
3583*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
3584*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3585*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3586*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3587*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
35887786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
35897786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
35907786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>
3591*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
35927786266dSMatt Arsenault  ret void
35937786266dSMatt Arsenault}
35947786266dSMatt Arsenault
35957786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_u() {
3596*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_u:
3597*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3598*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3599*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3600*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3601*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3602*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3603*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3604*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3605*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3606*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3607*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36087786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
36097786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
36107786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>
3611*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
36127786266dSMatt Arsenault  ret void
36137786266dSMatt Arsenault}
36147786266dSMatt Arsenault
36157786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_0() {
36167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0:
36177786266dSMatt Arsenault; GFX900:       ; %bb.0:
36187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36207786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
36217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3623*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
3624*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3625*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
3626*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
3627*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
3628*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3629*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
36307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36327786266dSMatt Arsenault;
36337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0:
36347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36377786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
36387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3640*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
3641*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3642*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
3643*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
3644*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
3645*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3646*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
36477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36497786266dSMatt Arsenault;
36507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0:
36517786266dSMatt Arsenault; GFX940:       ; %bb.0:
36527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3654*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
3655*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3656*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
36587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3659*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
3660*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
3661*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
36627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3663*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
36647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36667786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
36677786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
36687786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>
3669*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
36707786266dSMatt Arsenault  ret void
36717786266dSMatt Arsenault}
36727786266dSMatt Arsenault
36737786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_1() {
3674*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_1:
3675*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3676*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3677*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3678*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3679*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3680*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3681*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3682*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3683*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3684*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3685*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3686*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3687*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3688*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36897786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
36907786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
36917786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>
3692*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
36937786266dSMatt Arsenault  ret void
36947786266dSMatt Arsenault}
36957786266dSMatt Arsenault
36967786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_2() {
36977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2:
36987786266dSMatt Arsenault; GFX900:       ; %bb.0:
36997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3701*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
37027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3703*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3704*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
3705*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
3706*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
37077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3708*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
37097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37117786266dSMatt Arsenault;
37127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2:
37137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3716*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
37177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3718*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3719*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
3720*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
3721*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
37227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3723*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
37247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37267786266dSMatt Arsenault;
37277786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2:
37287786266dSMatt Arsenault; GFX940:       ; %bb.0:
37297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3731*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
37327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3733*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3734*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
3735*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
3736*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
37377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3738*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
37397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37417786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
37427786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
37437786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>
3744*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
37457786266dSMatt Arsenault  ret void
37467786266dSMatt Arsenault}
37477786266dSMatt Arsenault
37487786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_3_3() {
3749*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_3:
3750*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3751*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3752*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3753*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3754*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3755*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3756*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3757*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
3758*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3759*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3760*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3761*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
37627786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
37637786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
37647786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
3765*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
37667786266dSMatt Arsenault  ret void
37677786266dSMatt Arsenault}
37687786266dSMatt Arsenault
37697786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_0_0_0() {
3770*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_0_0_0:
3771*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3772*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3773*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3774*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3775*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3776*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
3777*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
3778*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3779*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3780*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3781*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
37827786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
37837786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>
3784*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
37857786266dSMatt Arsenault  ret void
37867786266dSMatt Arsenault}
37877786266dSMatt Arsenault
37887786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_0_0_0() {
3789*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_0_0_0:
3790*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3791*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3792*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3793*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3794*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3795*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
3796*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
3797*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s8
3798*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3799*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3800*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3801*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38027786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
38037786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> zeroinitializer
3804*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
38057786266dSMatt Arsenault  ret void
38067786266dSMatt Arsenault}
38077786266dSMatt Arsenault
38087786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_0_0_0() {
3809*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__1_0_0_0:
3810*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3811*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3812*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3813*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3814*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3815*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
3816*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
3817*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
3818*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3819*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3820*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3821*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38227786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
38237786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
3824*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
38257786266dSMatt Arsenault  ret void
38267786266dSMatt Arsenault}
38277786266dSMatt Arsenault
38287786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_0_0_0() {
3829*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_0_0_0:
3830*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3831*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3832*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3833*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3834*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3835*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
3836*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
3837*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3838*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3839*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3840*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38417786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
38427786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
3843*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
38447786266dSMatt Arsenault  ret void
38457786266dSMatt Arsenault}
38467786266dSMatt Arsenault
38477786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_0_0() {
38487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0:
38497786266dSMatt Arsenault; GFX900:       ; %bb.0:
38507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3852*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
38537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38557786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
38567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3857*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3858*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
3859*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
38607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3861*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
38627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38647786266dSMatt Arsenault;
38657786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0:
38667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3869*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
38707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38727786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
38737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3874*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3875*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
3876*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
38777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3878*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
38797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38817786266dSMatt Arsenault;
38827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0:
38837786266dSMatt Arsenault; GFX940:       ; %bb.0:
38847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3886*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
38877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
38907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3891*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3892*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s10
3893*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
38947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3895*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
38967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38987786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
38997786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
39007786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
3901*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
39027786266dSMatt Arsenault  ret void
39037786266dSMatt Arsenault}
39047786266dSMatt Arsenault
39057786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_0_0() {
39067786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0:
39077786266dSMatt Arsenault; GFX900:       ; %bb.0:
39087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3910*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
39117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
39147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3915*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3916*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
39177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3918*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
39197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39217786266dSMatt Arsenault;
39227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0:
39237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3926*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
39277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39297786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
39307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3931*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3932*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
39337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3934*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
39357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39377786266dSMatt Arsenault;
39387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0:
39397786266dSMatt Arsenault; GFX940:       ; %bb.0:
39407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3942*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
39437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39457786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
39467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3947*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3948*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
39497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3950*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
39517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39537786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
39547786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
39557786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>
3956*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
39577786266dSMatt Arsenault  ret void
39587786266dSMatt Arsenault}
39597786266dSMatt Arsenault
39607786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_0_0() {
39617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0:
39627786266dSMatt Arsenault; GFX900:       ; %bb.0:
39637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3965*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
39667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
39697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3970*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3971*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
3972*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
39737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3974*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
39757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39777786266dSMatt Arsenault;
39787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0:
39797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3982*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
39837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39857786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
39867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3987*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3988*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
3989*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
39907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3991*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
39927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39947786266dSMatt Arsenault;
39957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0:
39967786266dSMatt Arsenault; GFX940:       ; %bb.0:
39977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3999*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
40007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
40037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4004*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4005*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4006*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
40077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4008*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
40097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40117786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
40127786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
40137786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>
4014*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
40157786266dSMatt Arsenault  ret void
40167786266dSMatt Arsenault}
40177786266dSMatt Arsenault
40187786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_0_0() {
40197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0:
40207786266dSMatt Arsenault; GFX900:       ; %bb.0:
40217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4023*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
40247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4026*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
40277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4028*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4029*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
4030*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
40317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4032*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
40337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40357786266dSMatt Arsenault;
40367786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0:
40377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4040*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
40417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4043*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
40447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4045*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4046*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
4047*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
40487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4049*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
40507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40527786266dSMatt Arsenault;
40537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0:
40547786266dSMatt Arsenault; GFX940:       ; %bb.0:
40557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4057*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
40587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4060*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
40617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4062*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4063*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
4064*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
40657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4066*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
40677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40687786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40697786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
40707786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
40717786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>
4072*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
40737786266dSMatt Arsenault  ret void
40747786266dSMatt Arsenault}
40757786266dSMatt Arsenault
40767786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_0() {
4077*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_0:
4078*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4079*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4080*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4081*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4082*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4083*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4084*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4085*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4086*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4087*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4088*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4089*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4090*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4091*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
40927786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
40937786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
40947786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>
4095*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
40967786266dSMatt Arsenault  ret void
40977786266dSMatt Arsenault}
40987786266dSMatt Arsenault
40997786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_0() {
41007786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0:
41017786266dSMatt Arsenault; GFX900:       ; %bb.0:
41027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4104*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
41057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41077786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
41087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4109*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
4110*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
41117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4112*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
41137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41157786266dSMatt Arsenault;
41167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0:
41177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4120*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
41217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41237786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
41247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4125*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
4126*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
41277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4128*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
41297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41317786266dSMatt Arsenault;
41327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0:
41337786266dSMatt Arsenault; GFX940:       ; %bb.0:
41347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4136*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
41377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41397786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
41407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4141*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
4142*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
41437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4144*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
41457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41477786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
41487786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
41497786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>
4150*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
41517786266dSMatt Arsenault  ret void
41527786266dSMatt Arsenault}
41537786266dSMatt Arsenault
41547786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_0() {
41557786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0:
41567786266dSMatt Arsenault; GFX900:       ; %bb.0:
41577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41597786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
41607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4162*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
4163*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4164*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
4165*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
4166*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
4167*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4168*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
41697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41717786266dSMatt Arsenault;
41727786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0:
41737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41767786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
41777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4179*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
4180*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4181*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
4182*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
4183*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
4184*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4185*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
41867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41887786266dSMatt Arsenault;
41897786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0:
41907786266dSMatt Arsenault; GFX940:       ; %bb.0:
41917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4193*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
4194*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4195*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41967786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
41977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4198*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
4199*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
4200*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
42017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4202*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
42037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42057786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
42067786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
42077786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>
4208*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
42097786266dSMatt Arsenault  ret void
42107786266dSMatt Arsenault}
42117786266dSMatt Arsenault
42127786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_0() {
42137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0:
42147786266dSMatt Arsenault; GFX900:       ; %bb.0:
42157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4217*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
42187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4220*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
42217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4222*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
4223*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4224*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
42257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4226*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
42277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42297786266dSMatt Arsenault;
42307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0:
42317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4234*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
42357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4237*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
42387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4239*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
4240*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4241*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
42427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4243*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
42447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42467786266dSMatt Arsenault;
42477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0:
42487786266dSMatt Arsenault; GFX940:       ; %bb.0:
42497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4251*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
42527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4254*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
42557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4256*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s11
4257*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4258*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
42597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4260*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
42617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42637786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
42647786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
42657786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>
4266*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
42677786266dSMatt Arsenault  ret void
42687786266dSMatt Arsenault}
42697786266dSMatt Arsenault
42707786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_1_1_1() {
4271*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_1_1_1:
4272*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4273*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4274*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4275*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4276*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4277*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
4278*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4279*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4280*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4281*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4282*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
42837786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
42847786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>
4285*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
42867786266dSMatt Arsenault  ret void
42877786266dSMatt Arsenault}
42887786266dSMatt Arsenault
42897786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_1_1_1() {
4290*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_1_1_1:
4291*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4292*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4293*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4294*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4295*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4296*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
4297*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4298*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4299*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4300*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4301*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43027786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
43037786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
4304*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
43057786266dSMatt Arsenault  ret void
43067786266dSMatt Arsenault}
43077786266dSMatt Arsenault
43087786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_1_1_1() {
4309*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__1_1_1_1:
4310*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4311*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4312*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4313*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4314*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4315*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4316*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
4317*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4318*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4319*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4320*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4321*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43227786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
43237786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
4324*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
43257786266dSMatt Arsenault  ret void
43267786266dSMatt Arsenault}
43277786266dSMatt Arsenault
43287786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_1_1_1() {
4329*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_1_1_1:
4330*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4331*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4332*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4333*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4334*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4335*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
4336*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4337*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4338*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4339*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4340*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43417786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
43427786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>
4343*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
43447786266dSMatt Arsenault  ret void
43457786266dSMatt Arsenault}
43467786266dSMatt Arsenault
43477786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_1_1() {
43487786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1:
43497786266dSMatt Arsenault; GFX900:       ; %bb.0:
43507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4352*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
4353*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4354*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43557786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
43567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4357*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4358*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
4359*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
43607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4361*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
43627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
43637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
43647786266dSMatt Arsenault;
43657786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1:
43667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4369*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
4370*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4371*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
43727786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
43737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4374*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4375*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
4376*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
43777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4378*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
43797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
43807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
43817786266dSMatt Arsenault;
43827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1:
43837786266dSMatt Arsenault; GFX940:       ; %bb.0:
43847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4386*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
4387*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4388*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
43907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4391*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4392*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
4393*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s9
43947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4395*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
43967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43987786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
43997786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
44007786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>
4401*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
44027786266dSMatt Arsenault  ret void
44037786266dSMatt Arsenault}
44047786266dSMatt Arsenault
44057786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_1_1() {
44067786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1:
44077786266dSMatt Arsenault; GFX900:       ; %bb.0:
44087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4410*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
44117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
44147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4415*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4416*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s11
44177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4418*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
44197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44217786266dSMatt Arsenault;
44227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1:
44237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4426*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
44277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44297786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
44307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4431*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4432*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s11
44337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4434*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
44357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44377786266dSMatt Arsenault;
44387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1:
44397786266dSMatt Arsenault; GFX940:       ; %bb.0:
44407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4442*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
44437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44457786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
44467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4447*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4448*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s11
44497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4450*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
44517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44537786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
44547786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
44557786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>
4456*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
44577786266dSMatt Arsenault  ret void
44587786266dSMatt Arsenault}
44597786266dSMatt Arsenault
44607786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_1_1() {
44617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1:
44627786266dSMatt Arsenault; GFX900:       ; %bb.0:
44637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4465*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
44667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
44697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4470*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4471*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
4472*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s11
44737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4474*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
44757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44777786266dSMatt Arsenault;
44787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1:
44797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4482*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
44837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44857786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
44867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4487*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4488*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
4489*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s11
44907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4491*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
44927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44947786266dSMatt Arsenault;
44957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1:
44967786266dSMatt Arsenault; GFX940:       ; %bb.0:
44977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4499*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
45007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
45037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4504*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4505*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s10
4506*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s11
45077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4508*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
45097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45117786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
45127786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
45137786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>
4514*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
45157786266dSMatt Arsenault  ret void
45167786266dSMatt Arsenault}
45177786266dSMatt Arsenault
45187786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_1_1() {
45197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1:
45207786266dSMatt Arsenault; GFX900:       ; %bb.0:
45217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4523*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
45247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4526*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
45277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4528*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4529*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
4530*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s11
45317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4532*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
45337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45357786266dSMatt Arsenault;
45367786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1:
45377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4540*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
45417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4543*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
45447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4545*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4546*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
4547*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s11
45487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4549*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
45507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45527786266dSMatt Arsenault;
45537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1:
45547786266dSMatt Arsenault; GFX940:       ; %bb.0:
45557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4557*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
45587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4560*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
45617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4562*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4563*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
4564*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s11
45657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4566*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
45677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45687786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45697786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
45707786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
45717786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>
4572*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
45737786266dSMatt Arsenault  ret void
45747786266dSMatt Arsenault}
45757786266dSMatt Arsenault
45767786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_1() {
4577*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_1_1:
4578*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4579*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4580*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4581*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4582*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4583*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4584*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4585*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4586*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4587*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
4588*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4589*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4590*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4591*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
45927786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
45937786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
45947786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>
4595*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
45967786266dSMatt Arsenault  ret void
45977786266dSMatt Arsenault}
45987786266dSMatt Arsenault
45997786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_1() {
4600*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_1:
4601*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4602*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4603*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4604*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4605*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4606*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4607*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4608*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4609*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4610*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4611*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4612*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4613*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
46147786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
46157786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
46167786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>
4617*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
46187786266dSMatt Arsenault  ret void
46197786266dSMatt Arsenault}
46207786266dSMatt Arsenault
46217786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_1() {
4622*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_1:
4623*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4624*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4625*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4626*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4627*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4628*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4629*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4630*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4631*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4632*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4633*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4634*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4635*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
46367786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
46377786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
46387786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>
4639*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
46407786266dSMatt Arsenault  ret void
46417786266dSMatt Arsenault}
46427786266dSMatt Arsenault
46437786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_1() {
46447786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1:
46457786266dSMatt Arsenault; GFX900:       ; %bb.0:
46467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4648*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
46497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4651*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
46527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4653*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
4654*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4655*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
46567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4657*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
46587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46607786266dSMatt Arsenault;
46617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1:
46627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4665*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
46667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4668*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
46697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4670*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
4671*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4672*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
46737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4674*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
46757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46777786266dSMatt Arsenault;
46787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1:
46797786266dSMatt Arsenault; GFX940:       ; %bb.0:
46807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4682*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
46837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4685*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
46867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4687*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s11
4688*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4689*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
46907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4691*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
46927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46947786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
46957786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
46967786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>
4697*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
46987786266dSMatt Arsenault  ret void
46997786266dSMatt Arsenault}
47007786266dSMatt Arsenault
47017786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_2_2_2() {
4702*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_2_2_2:
4703*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4704*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4705*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4706*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4707*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4708*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
47097786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
47107786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>
4711*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
47127786266dSMatt Arsenault  ret void
47137786266dSMatt Arsenault}
47147786266dSMatt Arsenault
47157786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_2_2_2() {
47167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2:
47177786266dSMatt Arsenault; GFX900:       ; %bb.0:
47187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4720*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
47217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4723*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
47247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47267786266dSMatt Arsenault;
47277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2:
47287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4731*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
47327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4734*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
47357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47377786266dSMatt Arsenault;
47387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2:
47397786266dSMatt Arsenault; GFX940:       ; %bb.0:
47407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4742*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
47437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47447786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
47457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4746*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
47477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47497786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
47507786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>
4751*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
47527786266dSMatt Arsenault  ret void
47537786266dSMatt Arsenault}
47547786266dSMatt Arsenault
47557786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_2_2_2() {
47567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2:
47577786266dSMatt Arsenault; GFX900:       ; %bb.0:
47587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
47607786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
47617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4762*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
47637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4764*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
47657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47667786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47677786266dSMatt Arsenault;
47687786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2:
47697786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47727786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
47737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4774*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
47757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4776*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
47777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47797786266dSMatt Arsenault;
47807786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2:
47817786266dSMatt Arsenault; GFX940:       ; %bb.0:
47827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47847786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
47857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4786*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
47877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4788*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
47897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47917786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
47927786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>
4793*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
47947786266dSMatt Arsenault  ret void
47957786266dSMatt Arsenault}
47967786266dSMatt Arsenault
47977786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_2_2_2() {
4798*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_2_2_2:
4799*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4800*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4801*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4802*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4803*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4804*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48057786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
48067786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>
4807*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
48087786266dSMatt Arsenault  ret void
48097786266dSMatt Arsenault}
48107786266dSMatt Arsenault
48117786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_2_2() {
4812*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_2_2_2:
4813*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4814*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4815*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4816*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4817*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4818*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4819*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
4820*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4821*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4822*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4823*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4824*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48257786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
48267786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
48277786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>
4828*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
48297786266dSMatt Arsenault  ret void
48307786266dSMatt Arsenault}
48317786266dSMatt Arsenault
48327786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_2_2() {
4833*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_u_2_2:
4834*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4835*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4836*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4837*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4838*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4839*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4840*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4841*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4842*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4843*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4844*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48457786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
48467786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
48477786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>
4848*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
48497786266dSMatt Arsenault  ret void
48507786266dSMatt Arsenault}
48517786266dSMatt Arsenault
48527786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_2_2() {
48537786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2:
48547786266dSMatt Arsenault; GFX900:       ; %bb.0:
48557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4857*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
48587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4860*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
48617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4862*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
4863*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
4864*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
48657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4866*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
48677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48697786266dSMatt Arsenault;
48707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2:
48717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4874*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
48757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4877*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
48787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4879*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
4880*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
4881*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
48827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4883*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
48847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48867786266dSMatt Arsenault;
48877786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2:
48887786266dSMatt Arsenault; GFX940:       ; %bb.0:
48897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4891*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
48927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4894*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
48957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4896*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s11
4897*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
4898*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
48997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4900*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
49017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49037786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
49047786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
49057786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>
4906*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
49077786266dSMatt Arsenault  ret void
49087786266dSMatt Arsenault}
49097786266dSMatt Arsenault
49107786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_2_2() {
4911*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_1_2_2:
4912*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4913*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4914*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4915*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4916*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4917*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4918*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4919*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4920*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4921*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4922*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4923*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4924*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4925*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
49267786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
49277786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
49287786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>
4929*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
49307786266dSMatt Arsenault  ret void
49317786266dSMatt Arsenault}
49327786266dSMatt Arsenault
49337786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_2() {
4934*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_2:
4935*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4936*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4937*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4938*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4939*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4940*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4941*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4942*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4943*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4944*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4945*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4946*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
49477786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
49487786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
49497786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>
4950*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
49517786266dSMatt Arsenault  ret void
49527786266dSMatt Arsenault}
49537786266dSMatt Arsenault
49547786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_2() {
49557786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2:
49567786266dSMatt Arsenault; GFX900:       ; %bb.0:
49577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4959*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
49607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4961*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4962*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
4963*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
49647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4965*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
49667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49687786266dSMatt Arsenault;
49697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2:
49707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4973*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
49747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4975*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4976*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
4977*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
49787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4979*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
49807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49827786266dSMatt Arsenault;
49837786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2:
49847786266dSMatt Arsenault; GFX940:       ; %bb.0:
49857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4987*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
49887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4989*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4990*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
4991*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
49927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4993*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
49947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49967786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
49977786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
49987786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>
4999*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
50007786266dSMatt Arsenault  ret void
50017786266dSMatt Arsenault}
50027786266dSMatt Arsenault
50037786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_2() {
50047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2:
50057786266dSMatt Arsenault; GFX900:       ; %bb.0:
50067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5008*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
50097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5011*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
50127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5013*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
5014*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
5015*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
50167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5017*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
50187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50207786266dSMatt Arsenault;
50217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2:
50227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5025*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
50267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5028*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
50297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5030*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
5031*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
5032*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
50337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5034*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
50357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50377786266dSMatt Arsenault;
50387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2:
50397786266dSMatt Arsenault; GFX940:       ; %bb.0:
50407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5042*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
50437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5045*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
50467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5047*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
5048*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
5049*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
50507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5051*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
50527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50547786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
50557786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
50567786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>
5057*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
50587786266dSMatt Arsenault  ret void
50597786266dSMatt Arsenault}
50607786266dSMatt Arsenault
50617786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_2() {
50627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2:
50637786266dSMatt Arsenault; GFX900:       ; %bb.0:
50647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5066*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
5067*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5068*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50697786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
50707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5071*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
5072*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
5073*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
5074*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s6
50757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5076*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
50777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50797786266dSMatt Arsenault;
50807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2:
50817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5084*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
5085*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5086*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
50887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5089*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
5090*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
5091*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
5092*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s6
50937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5094*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
50957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50977786266dSMatt Arsenault;
50987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2:
50997786266dSMatt Arsenault; GFX940:       ; %bb.0:
51007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5102*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
5103*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5104*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51057786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
51067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5107*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
5108*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5109*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
5110*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s2
51117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5112*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
51137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51157786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
51167786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
51177786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>
5118*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
51197786266dSMatt Arsenault  ret void
51207786266dSMatt Arsenault}
51217786266dSMatt Arsenault
51227786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__u_3_3_3() {
5123*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_3_3_3:
5124*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5125*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5126*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5127*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5128*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5129*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5130*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5131*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5132*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5133*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5134*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
51357786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
51367786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
51377786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>
5138*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
51397786266dSMatt Arsenault  ret void
51407786266dSMatt Arsenault}
51417786266dSMatt Arsenault
51427786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__0_3_3_3() {
5143*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_3_3_3:
5144*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5145*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5146*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5147*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5148*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5149*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5150*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5151*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5152*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
5153*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
5154*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5155*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5156*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5157*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
51587786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
51597786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
51607786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>
5161*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
51627786266dSMatt Arsenault  ret void
51637786266dSMatt Arsenault}
51647786266dSMatt Arsenault
51657786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__1_3_3_3() {
51667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3:
51677786266dSMatt Arsenault; GFX900:       ; %bb.0:
51687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5170*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
51717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51737786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
51747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5175*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
5176*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
5177*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
51787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5179*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
51807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51827786266dSMatt Arsenault;
51837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3:
51847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5187*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
51887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51907786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
51917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5192*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
5193*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
5194*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
51957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5196*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
51977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51997786266dSMatt Arsenault;
52007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3:
52017786266dSMatt Arsenault; GFX940:       ; %bb.0:
52027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5204*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
52057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
52077786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
52087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5209*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
5210*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
5211*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s9
52127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5213*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
52147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52167786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
52177786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
52187786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>
5219*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
52207786266dSMatt Arsenault  ret void
52217786266dSMatt Arsenault}
52227786266dSMatt Arsenault
52237786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__2_3_3_3() {
5224*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_3_3_3:
5225*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5226*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5227*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5228*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5229*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5230*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5231*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5232*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5233*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5234*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5235*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52367786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
52377786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
52387786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>
5239*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
52407786266dSMatt Arsenault  ret void
52417786266dSMatt Arsenault}
52427786266dSMatt Arsenault
52437786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_u_3_3() {
5244*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_u_3_3:
5245*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5246*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5247*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5248*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5249*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5250*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
5251*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
5252*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5253*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5254*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5255*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52567786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
52577786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
52587786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>
5259*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
52607786266dSMatt Arsenault  ret void
52617786266dSMatt Arsenault}
52627786266dSMatt Arsenault
52637786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_0_3_3() {
52647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3:
52657786266dSMatt Arsenault; GFX900:       ; %bb.0:
52667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5268*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
52697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5271*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
52727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5273*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
5274*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
5275*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s11
52767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5277*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
52787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52797786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52807786266dSMatt Arsenault;
52817786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3:
52827786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5285*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
52867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5288*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
52897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5290*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
5291*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
5292*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s11
52937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5294*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
52957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52977786266dSMatt Arsenault;
52987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3:
52997786266dSMatt Arsenault; GFX940:       ; %bb.0:
53007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5302*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
53037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5305*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
53067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5307*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s11
5308*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
5309*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s11
53107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5311*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
53127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53147786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
53157786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
53167786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>
5317*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
53187786266dSMatt Arsenault  ret void
53197786266dSMatt Arsenault}
53207786266dSMatt Arsenault
53217786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_1_3_3() {
5322*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_1_3_3:
5323*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5324*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5325*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5326*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5327*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5328*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5329*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5330*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5331*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
5332*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
5333*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5334*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5335*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5336*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
53377786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
53387786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
53397786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>
5340*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
53417786266dSMatt Arsenault  ret void
53427786266dSMatt Arsenault}
53437786266dSMatt Arsenault
53447786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_2_3_3() {
5345*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_2_3_3:
5346*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5347*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5348*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5349*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5350*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5351*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
5352*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
5353*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
5354*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5355*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5356*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5357*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
53587786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
53597786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
53607786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>
5361*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
53627786266dSMatt Arsenault  ret void
53637786266dSMatt Arsenault}
53647786266dSMatt Arsenault
53657786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_u_3() {
5366*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_3:
5367*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5368*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5369*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5370*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5371*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5372*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
5373*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5374*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5375*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5376*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5377*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
53787786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
53797786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
53807786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>
5381*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
53827786266dSMatt Arsenault  ret void
53837786266dSMatt Arsenault}
53847786266dSMatt Arsenault
53857786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_0_3() {
5386*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_3:
5387*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5388*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5389*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5390*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5391*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5392*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5393*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5394*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5395*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
5396*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5397*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5398*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5399*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5400*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
54017786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
54027786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
54037786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>
5404*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
54057786266dSMatt Arsenault  ret void
54067786266dSMatt Arsenault}
54077786266dSMatt Arsenault
54087786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_1_3() {
54097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3:
54107786266dSMatt Arsenault; GFX900:       ; %bb.0:
54117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5413*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
54147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54167786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
54177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5418*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
5419*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
5420*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
54217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5422*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
54237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54247786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54257786266dSMatt Arsenault;
54267786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3:
54277786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5430*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
54317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54337786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
54347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5435*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
5436*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
5437*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
54387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5439*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
54407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54417786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54427786266dSMatt Arsenault;
54437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3:
54447786266dSMatt Arsenault; GFX940:       ; %bb.0:
54457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5447*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
54487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
54507786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
54517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5452*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
5453*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
5454*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s9
54557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5456*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
54577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54597786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
54607786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
54617786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>
5462*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
54637786266dSMatt Arsenault  ret void
54647786266dSMatt Arsenault}
54657786266dSMatt Arsenault
54667786266dSMatt Arsenaultdefine void @s_shuffle_v4f32_v2f32__3_3_2_3() {
5467*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_3:
5468*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5469*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5470*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5471*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5472*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5473*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
5474*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
5475*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5476*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5477*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5478*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
54797786266dSMatt Arsenault  %vec0 = call <2 x float> asm "; def $0", "=s"()
54807786266dSMatt Arsenault  %vec1 = call <2 x float> asm "; def $0", "=s"()
54817786266dSMatt Arsenault  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>
5482*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)
54837786266dSMatt Arsenault  ret void
54847786266dSMatt Arsenault}
54857786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
54867786266dSMatt Arsenault; GFX90APLUS: {{.*}}
5487