xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v2f32.v4f32.ll (revision e28e93550a74752714db6fffe50233aa96e536a5)
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_v2f32_v4f32__u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2f32_v4f32__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 <4 x float> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> poison
147786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_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 v4, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], 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_v2f32_v4f32__0_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 v4, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], 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_v2f32_v4f32__0_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 v4, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], 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 <4 x float> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 poison>
537786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
687786266dSMatt Arsenault;
697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_u:
707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
777786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
797786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
807786266dSMatt Arsenault;
817786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__1_u:
827786266dSMatt Arsenault; GFX940:       ; %bb.0:
837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
927786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
937786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 poison>
947786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
957786266dSMatt Arsenault  ret void
967786266dSMatt Arsenault}
977786266dSMatt Arsenault
987786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_u(ptr addrspace(1) inreg %ptr) {
997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_u:
1007786266dSMatt Arsenault; GFX900:       ; %bb.0:
1017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1067786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
1077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1097786266dSMatt Arsenault;
1107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_u:
1117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1157786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
1167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
1187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1207786266dSMatt Arsenault;
1217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_u:
1227786266dSMatt Arsenault; GFX940:       ; %bb.0:
1237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
1277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1287786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
1297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1317786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
1327786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 poison>
1337786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
1347786266dSMatt Arsenault  ret void
1357786266dSMatt Arsenault}
1367786266dSMatt Arsenault
1377786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_u(ptr addrspace(1) inreg %ptr) {
1387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_u:
1397786266dSMatt Arsenault; GFX900:       ; %bb.0:
1407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
1477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1497786266dSMatt Arsenault;
1507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_u:
1517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
1557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
1587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
1597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1617786266dSMatt Arsenault;
1627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_u:
1637786266dSMatt Arsenault; GFX940:       ; %bb.0:
1647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
1677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
1707786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
1717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1737786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
1747786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 poison>
1757786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
1767786266dSMatt Arsenault  ret void
1777786266dSMatt Arsenault}
1787786266dSMatt Arsenault
1797786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_u(ptr addrspace(1) inreg %ptr) {
1807786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2f32_v4f32__4_u:
1817786266dSMatt Arsenault; GFX9:       ; %bb.0:
1827786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1837786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1847786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
1857786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 poison>
1867786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
1877786266dSMatt Arsenault  ret void
1887786266dSMatt Arsenault}
1897786266dSMatt Arsenault
1907786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_u(ptr addrspace(1) inreg %ptr) {
1917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_u:
1927786266dSMatt Arsenault; GFX900:       ; %bb.0:
1937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
1997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2017786266dSMatt Arsenault;
2027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_u:
2037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
2107786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
2117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2137786266dSMatt Arsenault;
2147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_u:
2157786266dSMatt Arsenault; GFX940:       ; %bb.0:
2167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2187786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
2197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
2227786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
2237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2247786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2257786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
2267786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
2277786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 poison>
2287786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
2297786266dSMatt Arsenault  ret void
2307786266dSMatt Arsenault}
2317786266dSMatt Arsenault
2327786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_u(ptr addrspace(1) inreg %ptr) {
2337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_u:
2347786266dSMatt Arsenault; GFX900:       ; %bb.0:
2357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2387786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
2397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2407786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
2417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2437786266dSMatt Arsenault;
2447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_u:
2457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2517786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
2527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2547786266dSMatt Arsenault;
2557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_u:
2567786266dSMatt Arsenault; GFX940:       ; %bb.0:
2577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
2617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2627786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
2637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2657786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
2667786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
2677786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 poison>
2687786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
2697786266dSMatt Arsenault  ret void
2707786266dSMatt Arsenault}
2717786266dSMatt Arsenault
2727786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_u(ptr addrspace(1) inreg %ptr) {
2737786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_u:
2747786266dSMatt Arsenault; GFX900:       ; %bb.0:
2757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2777786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
2787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
2817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
2827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2847786266dSMatt Arsenault;
2857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_u:
2867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
2947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2967786266dSMatt Arsenault;
2977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_u:
2987786266dSMatt Arsenault; GFX940:       ; %bb.0:
2997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
3027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
3057786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
3067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3087786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
3097786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
3107786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 poison>
3117786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
3127786266dSMatt Arsenault  ret void
3137786266dSMatt Arsenault}
3147786266dSMatt Arsenault
3157786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_0(ptr addrspace(1) inreg %ptr) {
3167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_0:
3177786266dSMatt Arsenault; GFX900:       ; %bb.0:
3187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3207786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
3217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3237786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:4]
3247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
3267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v4
3277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
3287786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[1:2], s[16:17]
3297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3317786266dSMatt Arsenault;
3327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_0:
3337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3367786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
3377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
338*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
3397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
3417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
342*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]
343*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
3447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3467786266dSMatt Arsenault;
3477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_0:
3487786266dSMatt Arsenault; GFX940:       ; %bb.0:
3497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3517786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
3527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
3547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
3567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3577786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
358*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[0:1] op_sel:[1,0]
359*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
3607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3627786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
3637786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
3647786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 0>
3657786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
3667786266dSMatt Arsenault  ret void
3677786266dSMatt Arsenault}
3687786266dSMatt Arsenault
3697786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_1(ptr addrspace(1) inreg %ptr) {
3707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_1:
3717786266dSMatt Arsenault; GFX900:       ; %bb.0:
3727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
3757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3787786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
3797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
3817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
3827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3847786266dSMatt Arsenault;
3857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_1:
3867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
3907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
3927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3937786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
3947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
3967786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
3977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3997786266dSMatt Arsenault;
4007786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_1:
4017786266dSMatt Arsenault; GFX940:       ; %bb.0:
4027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
4077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4087786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
4097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4107786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
4127786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
4137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4157786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
4167786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
4177786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 1>
4187786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
4197786266dSMatt Arsenault  ret void
4207786266dSMatt Arsenault}
4217786266dSMatt Arsenault
4227786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_2(ptr addrspace(1) inreg %ptr) {
4237786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_2:
4247786266dSMatt Arsenault; GFX900:       ; %bb.0:
4257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4277786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
4287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, 0
4307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4317786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:6]
4327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v6
4347786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v7, v[1:2], s[16:17]
4357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4377786266dSMatt Arsenault;
4387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_2:
4397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
4437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
4457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
4477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
448*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]
4497786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[0:1], s[16:17]
4507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4527786266dSMatt Arsenault;
4537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_2:
4547786266dSMatt Arsenault; GFX940:       ; %bb.0:
4557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4577786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
4607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4617786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
4627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
463*e28e9355SMatt Arsenault; GFX940-NEXT:    s_nop 0
464*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[6:7], v[2:3] op_sel:[1,0]
4657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[0:1], s[0:1] sc0 sc1
4667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4687786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
4697786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
4707786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 2>
4717786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
4727786266dSMatt Arsenault  ret void
4737786266dSMatt Arsenault}
4747786266dSMatt Arsenault
4757786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_3(ptr addrspace(1) inreg %ptr) {
4767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_3:
4777786266dSMatt Arsenault; GFX900:       ; %bb.0:
4787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
4817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
4837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4847786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
4857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v7
4877786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17]
4887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4907786266dSMatt Arsenault;
4917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_3:
4927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
4967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
4987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4997786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
5007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5017786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v7
5027786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17]
5037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5057786266dSMatt Arsenault;
5067786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_3:
5077786266dSMatt Arsenault; GFX940:       ; %bb.0:
5087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
5117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
5137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
5157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5167786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
5177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v7
5187786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
5197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5217786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
5227786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
5237786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 3>
5247786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
5257786266dSMatt Arsenault  ret void
5267786266dSMatt Arsenault}
5277786266dSMatt Arsenault
5287786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_4(ptr addrspace(1) inreg %ptr) {
5297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_4:
5307786266dSMatt Arsenault; GFX900:       ; %bb.0:
5317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
5377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
5387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
5397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5417786266dSMatt Arsenault;
5427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_4:
5437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
5477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
5507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
5517786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
5527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5547786266dSMatt Arsenault;
5557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_4:
5567786266dSMatt Arsenault; GFX940:       ; %bb.0:
5577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5597786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
5607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
5637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
5647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
5657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5677786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
5687786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
5697786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 4>
5707786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
5717786266dSMatt Arsenault  ret void
5727786266dSMatt Arsenault}
5737786266dSMatt Arsenault
5747786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_5(ptr addrspace(1) inreg %ptr) {
5757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_5:
5767786266dSMatt Arsenault; GFX900:       ; %bb.0:
5777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
5837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
5847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5867786266dSMatt Arsenault;
5877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_5:
5887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
5927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
5957786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
5967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5987786266dSMatt Arsenault;
5997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_5:
6007786266dSMatt Arsenault; GFX940:       ; %bb.0:
6017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6037786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
6047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
6077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
6087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6107786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
6117786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
6127786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 5>
6137786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
6147786266dSMatt Arsenault  ret void
6157786266dSMatt Arsenault}
6167786266dSMatt Arsenault
6177786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_6(ptr addrspace(1) inreg %ptr) {
6187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_6:
6197786266dSMatt Arsenault; GFX900:       ; %bb.0:
6207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
6237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
6267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
6277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6297786266dSMatt Arsenault;
6307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_6:
6317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
637*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]
6387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
6397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6417786266dSMatt Arsenault;
6427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_6:
6437786266dSMatt Arsenault; GFX940:       ; %bb.0:
6447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
6477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
649*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]
6507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], 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 <4 x float> asm "; def $0", "=v"()
6547786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
6557786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 6>
6567786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
6577786266dSMatt Arsenault  ret void
6587786266dSMatt Arsenault}
6597786266dSMatt Arsenault
6607786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__7_7(ptr addrspace(1) inreg %ptr) {
6617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__7_7:
6627786266dSMatt Arsenault; GFX900:       ; %bb.0:
6637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
6667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
6697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
6707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6727786266dSMatt Arsenault;
6737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__7_7:
6747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
6817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
6827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6847786266dSMatt Arsenault;
6857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__7_7:
6867786266dSMatt Arsenault; GFX940:       ; %bb.0:
6877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
6907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
6937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
6947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6967786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
6977786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
6987786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 7>
6997786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
7007786266dSMatt Arsenault  ret void
7017786266dSMatt Arsenault}
7027786266dSMatt Arsenault
7037786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__u_0(ptr addrspace(1) inreg %ptr) {
7047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__u_0:
7057786266dSMatt Arsenault; GFX900:       ; %bb.0:
7067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
7127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
7137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7157786266dSMatt Arsenault;
7167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__u_0:
7177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
7217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
7247786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
7257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7277786266dSMatt Arsenault;
7287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__u_0:
7297786266dSMatt Arsenault; GFX940:       ; %bb.0:
7307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7327786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
7367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
7377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7397786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
7407786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 0>
7417786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
7427786266dSMatt Arsenault  ret void
7437786266dSMatt Arsenault}
7447786266dSMatt Arsenault
7457786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_0(ptr addrspace(1) inreg %ptr) {
7467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_0:
7477786266dSMatt Arsenault; GFX900:       ; %bb.0:
7487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
7547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
7557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7577786266dSMatt Arsenault;
7587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__0_0:
7597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
7637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
7667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
7677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7697786266dSMatt Arsenault;
7707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__0_0:
7717786266dSMatt Arsenault; GFX940:       ; %bb.0:
7727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
7787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
7797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7817786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
7827786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> zeroinitializer
7837786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
7847786266dSMatt Arsenault  ret void
7857786266dSMatt Arsenault}
7867786266dSMatt Arsenault
7877786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_0(ptr addrspace(1) inreg %ptr) {
7887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_0:
7897786266dSMatt Arsenault; GFX900:       ; %bb.0:
7907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
7967786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
7977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7997786266dSMatt Arsenault;
8007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_0:
8017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
807*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
808*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
8097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8117786266dSMatt Arsenault;
8127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__1_0:
8137786266dSMatt Arsenault; GFX940:       ; %bb.0:
8147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
8177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
819*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
820*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
8217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8237786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
8247786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 0>
8257786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
8267786266dSMatt Arsenault  ret void
8277786266dSMatt Arsenault}
8287786266dSMatt Arsenault
8297786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_0(ptr addrspace(1) inreg %ptr) {
8307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_0:
8317786266dSMatt Arsenault; GFX900:       ; %bb.0:
8327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
8357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
8387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
8397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8417786266dSMatt Arsenault;
8427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_0:
8437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
8507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
8517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8537786266dSMatt Arsenault;
8547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_0:
8557786266dSMatt Arsenault; GFX940:       ; %bb.0:
8567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
8597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
8627786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
8637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8657786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
8667786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 0>
8677786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
8687786266dSMatt Arsenault  ret void
8697786266dSMatt Arsenault}
8707786266dSMatt Arsenault
8717786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_0(ptr addrspace(1) inreg %ptr) {
8727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_0:
8737786266dSMatt Arsenault; GFX900:       ; %bb.0:
8747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8767786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
8777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
8807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
8817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
8827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8847786266dSMatt Arsenault;
8857786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_0:
8867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
8937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
8947786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
8957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8977786266dSMatt Arsenault;
8987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_0:
8997786266dSMatt Arsenault; GFX940:       ; %bb.0:
9007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
9037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
9057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
9067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
9077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
9087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9107786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
9117786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 0>
9127786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
9137786266dSMatt Arsenault  ret void
9147786266dSMatt Arsenault}
9157786266dSMatt Arsenault
9167786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_0(ptr addrspace(1) inreg %ptr) {
9177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__4_0:
9187786266dSMatt Arsenault; GFX900:       ; %bb.0:
9197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
9227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
9247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
9257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
9267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9287786266dSMatt Arsenault;
9297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__4_0:
9307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9337786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
9347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
9367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
9377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
9387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9407786266dSMatt Arsenault;
9417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__4_0:
9427786266dSMatt Arsenault; GFX940:       ; %bb.0:
9437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
9467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
9487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
9497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
9507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9527786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
9537786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 0>
9547786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
9557786266dSMatt Arsenault  ret void
9567786266dSMatt Arsenault}
9577786266dSMatt Arsenault
9587786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_0(ptr addrspace(1) inreg %ptr) {
9597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_0:
9607786266dSMatt Arsenault; GFX900:       ; %bb.0:
9617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
9647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:4]
9677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
9697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
9707786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[2:3], s[16:17]
9717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9727786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9737786266dSMatt Arsenault;
9747786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_0:
9757786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
9797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
980*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
9817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
9837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
984*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
985*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
9867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9887786266dSMatt Arsenault;
9897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_0:
9907786266dSMatt Arsenault; GFX940:       ; %bb.0:
9917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
9947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
9967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
9987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9997786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
1000*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
1001*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
10027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10047786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
10057786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
10067786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 0>
10077786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
10087786266dSMatt Arsenault  ret void
10097786266dSMatt Arsenault}
10107786266dSMatt Arsenault
10117786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_0(ptr addrspace(1) inreg %ptr) {
10127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_0:
10137786266dSMatt Arsenault; GFX900:       ; %bb.0:
10147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
10177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10197786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:4]
10207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
10227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
10237786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[3:4], s[16:17]
10247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10267786266dSMatt Arsenault;
10277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_0:
10287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
10327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
10357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
10377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v0
10387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17]
10397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10417786266dSMatt Arsenault;
10427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_0:
10437786266dSMatt Arsenault; GFX940:       ; %bb.0:
10447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
10477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
10497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10507786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
10517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10527786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v0
10547786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1
10557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10577786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
10587786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
10597786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 0>
10607786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
10617786266dSMatt Arsenault  ret void
10627786266dSMatt Arsenault}
10637786266dSMatt Arsenault
10647786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__u_1(ptr addrspace(1) inreg %ptr) {
10657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__u_1:
10667786266dSMatt Arsenault; GFX900:       ; %bb.0:
10677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10707786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
10717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
10737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10757786266dSMatt Arsenault;
10767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__u_1:
10777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
10827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10837786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
10847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10867786266dSMatt Arsenault;
10877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__u_1:
10887786266dSMatt Arsenault; GFX940:       ; %bb.0:
10897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
10917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10927786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
10937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10947786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
10957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10977786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
10987786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 1>
10997786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
11007786266dSMatt Arsenault  ret void
11017786266dSMatt Arsenault}
11027786266dSMatt Arsenault
11037786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_1(ptr addrspace(1) inreg %ptr) {
11047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_1:
11057786266dSMatt Arsenault; GFX900:       ; %bb.0:
11067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11097786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
11107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
11127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11147786266dSMatt Arsenault;
11157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__0_1:
11167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
11197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
11217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11227786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
11237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11257786266dSMatt Arsenault;
11267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__0_1:
11277786266dSMatt Arsenault; GFX940:       ; %bb.0:
11287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
11307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
11327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
11347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11367786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
11377786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 1>
11387786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
11397786266dSMatt Arsenault  ret void
11407786266dSMatt Arsenault}
11417786266dSMatt Arsenault
11427786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_1(ptr addrspace(1) inreg %ptr) {
11437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_1:
11447786266dSMatt Arsenault; GFX900:       ; %bb.0:
11457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
11487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
11517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
11527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11547786266dSMatt Arsenault;
11557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_1:
11567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
11607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
11627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
11637786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
11647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11667786266dSMatt Arsenault;
11677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__1_1:
11687786266dSMatt Arsenault; GFX940:       ; %bb.0:
11697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11717786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
11727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
11747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
11757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
11767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11787786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
11797786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 1>
11807786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
11817786266dSMatt Arsenault  ret void
11827786266dSMatt Arsenault}
11837786266dSMatt Arsenault
11847786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_1(ptr addrspace(1) inreg %ptr) {
11857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_1:
11867786266dSMatt Arsenault; GFX900:       ; %bb.0:
11877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11897786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
11907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
11937786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
11947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11967786266dSMatt Arsenault;
11977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_1:
11987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
12027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
12057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
12067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12087786266dSMatt Arsenault;
12097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_1:
12107786266dSMatt Arsenault; GFX940:       ; %bb.0:
12117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
12147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
12177786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
12187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12207786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
12217786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 1>
12227786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
12237786266dSMatt Arsenault  ret void
12247786266dSMatt Arsenault}
12257786266dSMatt Arsenault
12267786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_1(ptr addrspace(1) inreg %ptr) {
12277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_1:
12287786266dSMatt Arsenault; GFX900:       ; %bb.0:
12297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12317786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
12327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
12347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
12357786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
12367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12387786266dSMatt Arsenault;
12397786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_1:
12407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12437786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
12447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
12477786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
12487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12507786266dSMatt Arsenault;
12517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_1:
12527786266dSMatt Arsenault; GFX940:       ; %bb.0:
12537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
12567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
12597786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
12607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12627786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
12637786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 1>
12647786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
12657786266dSMatt Arsenault  ret void
12667786266dSMatt Arsenault}
12677786266dSMatt Arsenault
12687786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_1(ptr addrspace(1) inreg %ptr) {
12697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__4_1:
12707786266dSMatt Arsenault; GFX900:       ; %bb.0:
12717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
12737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
12757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12767786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
12777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12797786266dSMatt Arsenault;
12807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__4_1:
12817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
12867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12877786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
12887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12907786266dSMatt Arsenault;
12917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__4_1:
12927786266dSMatt Arsenault; GFX940:       ; %bb.0:
12937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12967786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
12977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12987786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
12997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13017786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
13027786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 1>
13037786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
13047786266dSMatt Arsenault  ret void
13057786266dSMatt Arsenault}
13067786266dSMatt Arsenault
13077786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_1(ptr addrspace(1) inreg %ptr) {
13087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_1:
13097786266dSMatt Arsenault; GFX900:       ; %bb.0:
13107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
13137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
13167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
13187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v1
13197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[3:4], s[16:17]
13207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13227786266dSMatt Arsenault;
13237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_1:
13247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
13287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
13327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
13347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
13357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13377786266dSMatt Arsenault;
13387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_1:
13397786266dSMatt Arsenault; GFX940:       ; %bb.0:
13407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
13437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
13477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13487786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
13497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
13507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
13517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13537786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
13547786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
13557786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 1>
13567786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
13577786266dSMatt Arsenault  ret void
13587786266dSMatt Arsenault}
13597786266dSMatt Arsenault
13607786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_1(ptr addrspace(1) inreg %ptr) {
13617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_1:
13627786266dSMatt Arsenault; GFX900:       ; %bb.0:
13637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
13667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13687786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
13697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
13717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
13727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17]
13737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13757786266dSMatt Arsenault;
13767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_1:
13777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
13817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13837786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
13847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
13877786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17]
13887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13907786266dSMatt Arsenault;
13917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_1:
13927786266dSMatt Arsenault; GFX940:       ; %bb.0:
13937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
13967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
14007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14017786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
14037786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1
14047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14067786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
14077786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
14087786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 1>
14097786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
14107786266dSMatt Arsenault  ret void
14117786266dSMatt Arsenault}
14127786266dSMatt Arsenault
14137786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__u_2(ptr addrspace(1) inreg %ptr) {
14147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__u_2:
14157786266dSMatt Arsenault; GFX900:       ; %bb.0:
14167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14197786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
14207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14217786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
14227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14237786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14247786266dSMatt Arsenault;
14257786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__u_2:
14267786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
14307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
14337786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
14347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14357786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14367786266dSMatt Arsenault;
14377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__u_2:
14387786266dSMatt Arsenault; GFX940:       ; %bb.0:
14397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
14427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
14457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
14467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14487786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
14497786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 2>
14507786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
14517786266dSMatt Arsenault  ret void
14527786266dSMatt Arsenault}
14537786266dSMatt Arsenault
14547786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_2(ptr addrspace(1) inreg %ptr) {
14557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_2:
14567786266dSMatt Arsenault; GFX900:       ; %bb.0:
14577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
14607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
14637786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
14647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14657786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14667786266dSMatt Arsenault;
14677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__0_2:
14687786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14717786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
14727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
14757786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
14767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14787786266dSMatt Arsenault;
14797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__0_2:
14807786266dSMatt Arsenault; GFX940:       ; %bb.0:
14817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14837786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
14847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
14877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
14887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14907786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
14917786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 2>
14927786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
14937786266dSMatt Arsenault  ret void
14947786266dSMatt Arsenault}
14957786266dSMatt Arsenault
14967786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_2(ptr addrspace(1) inreg %ptr) {
14977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_2:
14987786266dSMatt Arsenault; GFX900:       ; %bb.0:
14997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
15037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
15057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15077786266dSMatt Arsenault;
15087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_2:
15097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
15137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
15157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
15167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
15177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], 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_v2f32_v4f32__1_2:
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:3]
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 v1, v2
15307786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
15317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15337786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
15347786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 2>
15357786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
15367786266dSMatt Arsenault  ret void
15377786266dSMatt Arsenault}
15387786266dSMatt Arsenault
15397786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_2(ptr addrspace(1) inreg %ptr) {
15407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_2:
15417786266dSMatt Arsenault; GFX900:       ; %bb.0:
15427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
15457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
15487786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
15497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15507786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15517786266dSMatt Arsenault;
15527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_2:
15537786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15567786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
15577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
15597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
15607786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
15617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15637786266dSMatt Arsenault;
15647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_2:
15657786266dSMatt Arsenault; GFX940:       ; %bb.0:
15667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
15697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
15717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
15727786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
15737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15757786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
15767786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 2>
15777786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
15787786266dSMatt Arsenault  ret void
15797786266dSMatt Arsenault}
15807786266dSMatt Arsenault
15817786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_2(ptr addrspace(1) inreg %ptr) {
15827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_2:
15837786266dSMatt Arsenault; GFX900:       ; %bb.0:
15847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
15877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
15907786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
15917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15937786266dSMatt Arsenault;
15947786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_2:
15957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15987786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
15997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1601*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]
16027786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
16037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16057786266dSMatt Arsenault;
16067786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_2:
16077786266dSMatt Arsenault; GFX940:       ; %bb.0:
16087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
16117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1613*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]
16147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
16157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16177786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
16187786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 2>
16197786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
16207786266dSMatt Arsenault  ret void
16217786266dSMatt Arsenault}
16227786266dSMatt Arsenault
16237786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_2(ptr addrspace(1) inreg %ptr) {
16247786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__4_2:
16257786266dSMatt Arsenault; GFX900:       ; %bb.0:
16267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
16287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
16307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16317786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
16327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16347786266dSMatt Arsenault;
16357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__4_2:
16367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
16407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
16427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
16437786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
16447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16467786266dSMatt Arsenault;
16477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__4_2:
16487786266dSMatt Arsenault; GFX940:       ; %bb.0:
16497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16517786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
16527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
16547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
16557786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
16567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16577786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16587786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
16597786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 2>
16607786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
16617786266dSMatt Arsenault  ret void
16627786266dSMatt Arsenault}
16637786266dSMatt Arsenault
16647786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_2(ptr addrspace(1) inreg %ptr) {
16657786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_2:
16667786266dSMatt Arsenault; GFX900:       ; %bb.0:
16677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16697786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
16707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16727786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:6]
16737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16747786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, 0
16757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v2
16767786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v7, v[4:5], s[16:17]
16777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16797786266dSMatt Arsenault;
16807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_2:
16817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16847786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
16857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
16877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16887786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
16897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1690*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]
16917786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[0:1], s[16:17]
16927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16947786266dSMatt Arsenault;
16957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_2:
16967786266dSMatt Arsenault; GFX940:       ; %bb.0:
16977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
17007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
17027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17037786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
17047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1705*e28e9355SMatt Arsenault; GFX940-NEXT:    s_nop 0
1706*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]
17077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[0:1], s[0:1] sc0 sc1
17087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17107786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
17117786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
17127786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 2>
17137786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
17147786266dSMatt Arsenault  ret void
17157786266dSMatt Arsenault}
17167786266dSMatt Arsenault
17177786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_2(ptr addrspace(1) inreg %ptr) {
17187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_2:
17197786266dSMatt Arsenault; GFX900:       ; %bb.0:
17207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
17237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:6]
17267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, 0
17287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v2
17297786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v7, v[5:6], s[16:17]
17307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17327786266dSMatt Arsenault;
17337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_2:
17347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
17387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
17407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17417786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
17427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v2
17447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17]
17457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17477786266dSMatt Arsenault;
17487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_2:
17497786266dSMatt Arsenault; GFX940:       ; %bb.0:
17507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
17537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
17557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
17577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17587786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v2
17607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1
17617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17637786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
17647786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
17657786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 2>
17667786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
17677786266dSMatt Arsenault  ret void
17687786266dSMatt Arsenault}
17697786266dSMatt Arsenault
17707786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__u_3(ptr addrspace(1) inreg %ptr) {
17717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__u_3:
17727786266dSMatt Arsenault; GFX900:       ; %bb.0:
17737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17747786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
17757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17767786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
17777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17787786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
17797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17817786266dSMatt Arsenault;
17827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__u_3:
17837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17877786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
17887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17897786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
17907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17927786266dSMatt Arsenault;
17937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__u_3:
17947786266dSMatt Arsenault; GFX940:       ; %bb.0:
17957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
17997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18007786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
18017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18037786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
18047786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 3>
18057786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
18067786266dSMatt Arsenault  ret void
18077786266dSMatt Arsenault}
18087786266dSMatt Arsenault
18097786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_3(ptr addrspace(1) inreg %ptr) {
18107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_3:
18117786266dSMatt Arsenault; GFX900:       ; %bb.0:
18127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18147786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
18157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
18187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
18197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18217786266dSMatt Arsenault;
18227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__0_3:
18237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
18277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
18297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
18307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
18317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18337786266dSMatt Arsenault;
18347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__0_3:
18357786266dSMatt Arsenault; GFX940:       ; %bb.0:
18367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
18397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
18417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
18427786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
18437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18447786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18457786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
18467786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 3>
18477786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
18487786266dSMatt Arsenault  ret void
18497786266dSMatt Arsenault}
18507786266dSMatt Arsenault
18517786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_3(ptr addrspace(1) inreg %ptr) {
18527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_3:
18537786266dSMatt Arsenault; GFX900:       ; %bb.0:
18547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18567786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
18577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
18607786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
18617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18637786266dSMatt Arsenault;
18647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_3:
18657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
18697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
18717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
18727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
18737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18757786266dSMatt Arsenault;
18767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__1_3:
18777786266dSMatt Arsenault; GFX940:       ; %bb.0:
18787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18807786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
18817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
18837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
18847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
18857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18877786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
18887786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 3>
18897786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
18907786266dSMatt Arsenault  ret void
18917786266dSMatt Arsenault}
18927786266dSMatt Arsenault
18937786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_3(ptr addrspace(1) inreg %ptr) {
18947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_3:
18957786266dSMatt Arsenault; GFX900:       ; %bb.0:
18967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
19007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
19027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19047786266dSMatt Arsenault;
19057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_3:
19067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
19097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
19117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19127786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
19137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19157786266dSMatt Arsenault;
19167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_3:
19177786266dSMatt Arsenault; GFX940:       ; %bb.0:
19187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
19227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19237786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
19247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19267786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
19277786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 3>
19287786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
19297786266dSMatt Arsenault  ret void
19307786266dSMatt Arsenault}
19317786266dSMatt Arsenault
19327786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_3(ptr addrspace(1) inreg %ptr) {
19337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_3:
19347786266dSMatt Arsenault; GFX900:       ; %bb.0:
19357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19377786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
19387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
19407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
19417786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
19427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19447786266dSMatt Arsenault;
19457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_3:
19467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
19507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
19527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
19537786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
19547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19567786266dSMatt Arsenault;
19577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_3:
19587786266dSMatt Arsenault; GFX940:       ; %bb.0:
19597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19617786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
19627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
19657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
19667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19687786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
19697786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 3>
19707786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
19717786266dSMatt Arsenault  ret void
19727786266dSMatt Arsenault}
19737786266dSMatt Arsenault
19747786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_3(ptr addrspace(1) inreg %ptr) {
19757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__4_3:
19767786266dSMatt Arsenault; GFX900:       ; %bb.0:
19777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
19797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
19817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19827786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
19837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19857786266dSMatt Arsenault;
19867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__4_3:
19877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
19907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
19927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
19947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19967786266dSMatt Arsenault;
19977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__4_3:
19987786266dSMatt Arsenault; GFX940:       ; %bb.0:
19997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
20017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
20037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20047786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
20057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20077786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
20087786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 3>
20097786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
20107786266dSMatt Arsenault  ret void
20117786266dSMatt Arsenault}
20127786266dSMatt Arsenault
20137786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_3(ptr addrspace(1) inreg %ptr) {
20147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_3:
20157786266dSMatt Arsenault; GFX900:       ; %bb.0:
20167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
20197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
20217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
20237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v3
20257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[5:6], s[16:17]
20267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20287786266dSMatt Arsenault;
20297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_3:
20307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20337786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
20347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
20367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
20387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
20407786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17]
20417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20437786266dSMatt Arsenault;
20447786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_3:
20457786266dSMatt Arsenault; GFX940:       ; %bb.0:
20467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20487786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
20497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
20517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
20537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20547786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
20557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v5
20567786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
20577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20597786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
20607786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
20617786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 3>
20627786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
20637786266dSMatt Arsenault  ret void
20647786266dSMatt Arsenault}
20657786266dSMatt Arsenault
20667786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_3(ptr addrspace(1) inreg %ptr) {
20677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_3:
20687786266dSMatt Arsenault; GFX900:       ; %bb.0:
20697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20717786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
20727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
20747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
20767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, v3
20787786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17]
20797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20817786266dSMatt Arsenault;
20827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_3:
20837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20867786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
20877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
20897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20907786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
20917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, v3
20937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17]
20947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20967786266dSMatt Arsenault;
20977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_3:
20987786266dSMatt Arsenault; GFX940:       ; %bb.0:
20997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
21027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
21047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21057786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
21067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21077786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
21087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, v3
21097786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1
21107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21127786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
21137786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
21147786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 3>
21157786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
21167786266dSMatt Arsenault  ret void
21177786266dSMatt Arsenault}
21187786266dSMatt Arsenault
21197786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__u_4(ptr addrspace(1) inreg %ptr) {
21207786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2f32_v4f32__u_4:
21217786266dSMatt Arsenault; GFX9:       ; %bb.0:
21227786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21237786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
21247786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
21257786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 4>
21267786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
21277786266dSMatt Arsenault  ret void
21287786266dSMatt Arsenault}
21297786266dSMatt Arsenault
21307786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_4(ptr addrspace(1) inreg %ptr) {
21317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_4:
21327786266dSMatt Arsenault; GFX900:       ; %bb.0:
21337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
21357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
21377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
21397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21417786266dSMatt Arsenault;
21427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__0_4:
21437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
21467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21477786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
21487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21497786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
21507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21527786266dSMatt Arsenault;
21537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__0_4:
21547786266dSMatt Arsenault; GFX940:       ; %bb.0:
21557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
21577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
21597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
21617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21637786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
21647786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 4>
21657786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
21667786266dSMatt Arsenault  ret void
21677786266dSMatt Arsenault}
21687786266dSMatt Arsenault
21697786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_4(ptr addrspace(1) inreg %ptr) {
21707786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_4:
21717786266dSMatt Arsenault; GFX900:       ; %bb.0:
21727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
21747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
21767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21777786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
21787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21797786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21807786266dSMatt Arsenault;
21817786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_4:
21827786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
21867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
21887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
21897786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
21907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21927786266dSMatt Arsenault;
21937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__1_4:
21947786266dSMatt Arsenault; GFX940:       ; %bb.0:
21957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
21987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
22007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
22017786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
22027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22047786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
22057786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 4>
22067786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
22077786266dSMatt Arsenault  ret void
22087786266dSMatt Arsenault}
22097786266dSMatt Arsenault
22107786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_4(ptr addrspace(1) inreg %ptr) {
22117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_4:
22127786266dSMatt Arsenault; GFX900:       ; %bb.0:
22137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
22157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
22177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
22197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22217786266dSMatt Arsenault;
22227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_4:
22237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
22267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
22287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
22307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22327786266dSMatt Arsenault;
22337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_4:
22347786266dSMatt Arsenault; GFX940:       ; %bb.0:
22357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
22377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
22397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
22417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22437786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
22447786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 4>
22457786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
22467786266dSMatt Arsenault  ret void
22477786266dSMatt Arsenault}
22487786266dSMatt Arsenault
22497786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_4(ptr addrspace(1) inreg %ptr) {
22507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_4:
22517786266dSMatt Arsenault; GFX900:       ; %bb.0:
22527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
22557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
22577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
22587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
22597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22617786266dSMatt Arsenault;
22627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_4:
22637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
22677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
22697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
22707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
22717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22737786266dSMatt Arsenault;
22747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_4:
22757786266dSMatt Arsenault; GFX940:       ; %bb.0:
22767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
22797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
22817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
22827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
22837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22857786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
22867786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 4>
22877786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
22887786266dSMatt Arsenault  ret void
22897786266dSMatt Arsenault}
22907786266dSMatt Arsenault
22917786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_4(ptr addrspace(1) inreg %ptr) {
22927786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2f32_v4f32__4_4:
22937786266dSMatt Arsenault; GFX9:       ; %bb.0:
22947786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22957786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
22967786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
22977786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 4>
22987786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
22997786266dSMatt Arsenault  ret void
23007786266dSMatt Arsenault}
23017786266dSMatt Arsenault
23027786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_4(ptr addrspace(1) inreg %ptr) {
23037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_4:
23047786266dSMatt Arsenault; GFX900:       ; %bb.0:
23057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
23087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
23117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
23127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23147786266dSMatt Arsenault;
23157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_4:
23167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
23207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2322*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
2323*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
23247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23267786266dSMatt Arsenault;
23277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_4:
23287786266dSMatt Arsenault; GFX940:       ; %bb.0:
23297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
23327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2334*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
2335*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
23367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23387786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
23397786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
23407786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 4>
23417786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
23427786266dSMatt Arsenault  ret void
23437786266dSMatt Arsenault}
23447786266dSMatt Arsenault
23457786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_4(ptr addrspace(1) inreg %ptr) {
23467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_4:
23477786266dSMatt Arsenault; GFX900:       ; %bb.0:
23487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
23517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
23547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
23557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23577786266dSMatt Arsenault;
23587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_4:
23597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
23637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
23657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
23667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
23677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23697786266dSMatt Arsenault;
23707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_4:
23717786266dSMatt Arsenault; GFX940:       ; %bb.0:
23727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
23757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
23777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
23787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
23797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23817786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
23827786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
23837786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 4>
23847786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
23857786266dSMatt Arsenault  ret void
23867786266dSMatt Arsenault}
23877786266dSMatt Arsenault
23887786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__u_5(ptr addrspace(1) inreg %ptr) {
23897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__u_5:
23907786266dSMatt Arsenault; GFX900:       ; %bb.0:
23917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23947786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
23957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23967786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
23977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23997786266dSMatt Arsenault;
24007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__u_5:
24017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
24047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24057786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
24067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24077786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
24087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24107786266dSMatt Arsenault;
24117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__u_5:
24127786266dSMatt Arsenault; GFX940:       ; %bb.0:
24137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24147786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
24157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
24177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24187786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
24197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24217786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
24227786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
24237786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 poison, i32 5>
24247786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
24257786266dSMatt Arsenault  ret void
24267786266dSMatt Arsenault}
24277786266dSMatt Arsenault
24287786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_5(ptr addrspace(1) inreg %ptr) {
24297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_5:
24307786266dSMatt Arsenault; GFX900:       ; %bb.0:
24317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
24347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:4]
24377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
24397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
24407786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
24417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24437786266dSMatt Arsenault;
24447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__0_5:
24457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24487786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
24497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
24517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24527786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
24537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
24557786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
24567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24587786266dSMatt Arsenault;
24597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__0_5:
24607786266dSMatt Arsenault; GFX940:       ; %bb.0:
24617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24637786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
24647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
24667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24677786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
24687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24697786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
24707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
24717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
24727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24747786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
24757786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
24767786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 0, i32 5>
24777786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
24787786266dSMatt Arsenault  ret void
24797786266dSMatt Arsenault}
24807786266dSMatt Arsenault
24817786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_5(ptr addrspace(1) inreg %ptr) {
24827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_5:
24837786266dSMatt Arsenault; GFX900:       ; %bb.0:
24847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
24877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24897786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
24907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
24927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
24937786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[1:2], s[16:17]
24947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24967786266dSMatt Arsenault;
24977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_5:
24987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
25027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
25057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
25077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
25087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17]
25097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25117786266dSMatt Arsenault;
25127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__1_5:
25137786266dSMatt Arsenault; GFX940:       ; %bb.0:
25147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
25177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
25197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25207786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
25217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25227786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
25237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
25247786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[2:3], s[0:1] sc0 sc1
25257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25277786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
25287786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
25297786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 1, i32 5>
25307786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
25317786266dSMatt Arsenault  ret void
25327786266dSMatt Arsenault}
25337786266dSMatt Arsenault
25347786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_5(ptr addrspace(1) inreg %ptr) {
25357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_5:
25367786266dSMatt Arsenault; GFX900:       ; %bb.0:
25377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
25407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:6]
25437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, 0
25457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v4
25467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v7, v[2:3], s[16:17]
25477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25497786266dSMatt Arsenault;
25507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_5:
25517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
25557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
25577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
25597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
25617786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17]
25627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25647786266dSMatt Arsenault;
25657786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_5:
25667786266dSMatt Arsenault; GFX940:       ; %bb.0:
25677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25697786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
25707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
25727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
25747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25757786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
25767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
25777786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
25787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25807786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
25817786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
25827786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 2, i32 5>
25837786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
25847786266dSMatt Arsenault  ret void
25857786266dSMatt Arsenault}
25867786266dSMatt Arsenault
25877786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_5(ptr addrspace(1) inreg %ptr) {
25887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_5:
25897786266dSMatt Arsenault; GFX900:       ; %bb.0:
25907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
25937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
25957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
25977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v3
25997786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17]
26007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26027786266dSMatt Arsenault;
26037786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_5:
26047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26077786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
26087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
26107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
26127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v3
26147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17]
26157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26177786266dSMatt Arsenault;
26187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_5:
26197786266dSMatt Arsenault; GFX940:       ; %bb.0:
26207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
26237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
26257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
26277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26287786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
26297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v3
26307786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[4:5], s[0:1] sc0 sc1
26317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26337786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
26347786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
26357786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 3, i32 5>
26367786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
26377786266dSMatt Arsenault  ret void
26387786266dSMatt Arsenault}
26397786266dSMatt Arsenault
26407786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_5(ptr addrspace(1) inreg %ptr) {
26417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__4_5:
26427786266dSMatt Arsenault; GFX900:       ; %bb.0:
26437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
26457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
26477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26487786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
26497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26507786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26517786266dSMatt Arsenault;
26527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__4_5:
26537786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
26567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
26587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
26607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26627786266dSMatt Arsenault;
26637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__4_5:
26647786266dSMatt Arsenault; GFX940:       ; %bb.0:
26657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
26677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
26697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26707786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
26717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26737786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
26747786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
26757786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 4, i32 5>
26767786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
26777786266dSMatt Arsenault  ret void
26787786266dSMatt Arsenault}
26797786266dSMatt Arsenault
26807786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_5(ptr addrspace(1) inreg %ptr) {
26817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_5:
26827786266dSMatt Arsenault; GFX900:       ; %bb.0:
26837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26857786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
26867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
26887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
26897786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
26907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26927786266dSMatt Arsenault;
26937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_5:
26947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26977786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
26987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
27007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
27017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
27027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27047786266dSMatt Arsenault;
27057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_5:
27067786266dSMatt Arsenault; GFX940:       ; %bb.0:
27077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
27107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
27127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
27137786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
27147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27167786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
27177786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
27187786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 5>
27197786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
27207786266dSMatt Arsenault  ret void
27217786266dSMatt Arsenault}
27227786266dSMatt Arsenault
27237786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_5(ptr addrspace(1) inreg %ptr) {
27247786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_5:
27257786266dSMatt Arsenault; GFX900:       ; %bb.0:
27267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27287786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
27297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
27317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
27327786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
27337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27357786266dSMatt Arsenault;
27367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_5:
27377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
27417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
27437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
27447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
27457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27477786266dSMatt Arsenault;
27487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_5:
27497786266dSMatt Arsenault; GFX940:       ; %bb.0:
27507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
27537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
27557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
27567786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
27577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27597786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
27607786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
27617786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 5>
27627786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
27637786266dSMatt Arsenault  ret void
27647786266dSMatt Arsenault}
27657786266dSMatt Arsenault
27667786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__u_6(ptr addrspace(1) inreg %ptr) {
27677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__u_6:
27687786266dSMatt Arsenault; GFX900:       ; %bb.0:
27697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
27717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27727786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
27737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
27757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27777786266dSMatt Arsenault;
27787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__u_6:
27797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
27837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
27857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
27867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
27877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27897786266dSMatt Arsenault;
27907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__u_6:
27917786266dSMatt Arsenault; GFX940:       ; %bb.0:
27927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27947786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
27957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
27977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
27987786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], 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 <4 x float> asm "; def $0", "=v"()
28027786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
28037786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 poison, i32 6>
28047786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
28057786266dSMatt Arsenault  ret void
28067786266dSMatt Arsenault}
28077786266dSMatt Arsenault
28087786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_6(ptr addrspace(1) inreg %ptr) {
28097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_6:
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[0:3]
28147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:4]
28177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
28197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
28207786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
28217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28227786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28237786266dSMatt Arsenault;
28247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__0_6:
28257786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
28297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
28317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28327786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
28337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
28357786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
28367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28387786266dSMatt Arsenault;
28397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__0_6:
28407786266dSMatt Arsenault; GFX940:       ; %bb.0:
28417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28437786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
28447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
28467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
28487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28497786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
28507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
28517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
28527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28547786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
28557786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
28567786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 0, i32 6>
28577786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
28587786266dSMatt Arsenault  ret void
28597786266dSMatt Arsenault}
28607786266dSMatt Arsenault
28617786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_6(ptr addrspace(1) inreg %ptr) {
28627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_6:
28637786266dSMatt Arsenault; GFX900:       ; %bb.0:
28647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
28677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28697786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
28707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
28727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
28737786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[1:2], s[16:17]
28747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28767786266dSMatt Arsenault;
28777786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_6:
28787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
28827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
28847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
28867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2887*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[4:5] op_sel:[1,0]
28887786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
28897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28917786266dSMatt Arsenault;
28927786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__1_6:
28937786266dSMatt Arsenault; GFX940:       ; %bb.0:
28947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28967786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
28977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
28997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
29017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2902*e28e9355SMatt Arsenault; GFX940-NEXT:    s_nop 0
2903*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[4:5] op_sel:[1,0]
29047786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
29057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29077786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
29087786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
29097786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 1, i32 6>
29107786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
29117786266dSMatt Arsenault  ret void
29127786266dSMatt Arsenault}
29137786266dSMatt Arsenault
29147786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_6(ptr addrspace(1) inreg %ptr) {
29157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_6:
29167786266dSMatt Arsenault; GFX900:       ; %bb.0:
29177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29197786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
29207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:6]
29237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, 0
29257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
29267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v7, v[2:3], s[16:17]
29277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29297786266dSMatt Arsenault;
29307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_6:
29317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
29357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
29377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29387786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
29397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v6
29417786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17]
29427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29447786266dSMatt Arsenault;
29457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_6:
29467786266dSMatt Arsenault; GFX940:       ; %bb.0:
29477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29497786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
29507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
29527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29537786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
29547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29557786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
29567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v6
29577786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
29587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29597786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29607786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
29617786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
29627786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 2, i32 6>
29637786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
29647786266dSMatt Arsenault  ret void
29657786266dSMatt Arsenault}
29667786266dSMatt Arsenault
29677786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_6(ptr addrspace(1) inreg %ptr) {
29687786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_6:
29697786266dSMatt Arsenault; GFX900:       ; %bb.0:
29707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29727786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
29737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29747786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
29757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29767786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
29777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
29797786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[5:6], s[16:17]
29807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29827786266dSMatt Arsenault;
29837786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_6:
29847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29877786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
29887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
29907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
29927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2993*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[6:7] op_sel:[1,0]
29947786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[0:1], s[16:17]
29957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29977786266dSMatt Arsenault;
29987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_6:
29997786266dSMatt Arsenault; GFX940:       ; %bb.0:
30007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
30037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
30057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30067786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
30077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3008*e28e9355SMatt Arsenault; GFX940-NEXT:    s_nop 0
3009*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[6:7] op_sel:[1,0]
30107786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[0:1], s[0:1] sc0 sc1
30117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30137786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
30147786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
30157786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 3, i32 6>
30167786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
30177786266dSMatt Arsenault  ret void
30187786266dSMatt Arsenault}
30197786266dSMatt Arsenault
30207786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_6(ptr addrspace(1) inreg %ptr) {
30217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__4_6:
30227786266dSMatt Arsenault; GFX900:       ; %bb.0:
30237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
30267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
30287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
30297786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
30307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30327786266dSMatt Arsenault;
30337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__4_6:
30347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
30387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
30407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
30417786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
30427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30447786266dSMatt Arsenault;
30457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__4_6:
30467786266dSMatt Arsenault; GFX940:       ; %bb.0:
30477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30497786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
30507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
30527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
30537786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
30547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30567786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
30577786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
30587786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 4, i32 6>
30597786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
30607786266dSMatt Arsenault  ret void
30617786266dSMatt Arsenault}
30627786266dSMatt Arsenault
30637786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_6(ptr addrspace(1) inreg %ptr) {
30647786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_6:
30657786266dSMatt Arsenault; GFX900:       ; %bb.0:
30667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
30687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30697786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
30707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
30727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30747786266dSMatt Arsenault;
30757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_6:
30767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
30807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
30827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
30837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
30847786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
30857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30877786266dSMatt Arsenault;
30887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_6:
30897786266dSMatt Arsenault; GFX940:       ; %bb.0:
30907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30927786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
30937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
30957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
30967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
30977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
30987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31007786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
31017786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
31027786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 6>
31037786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
31047786266dSMatt Arsenault  ret void
31057786266dSMatt Arsenault}
31067786266dSMatt Arsenault
31077786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_6(ptr addrspace(1) inreg %ptr) {
31087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_6:
31097786266dSMatt Arsenault; GFX900:       ; %bb.0:
31107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
31137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
31157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
31167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
31177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31197786266dSMatt Arsenault;
31207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_6:
31217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
31257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
31277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
31287786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
31297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31317786266dSMatt Arsenault;
31327786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_6:
31337786266dSMatt Arsenault; GFX940:       ; %bb.0:
31347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31367786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
31377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
31397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
31407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
31417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31437786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
31447786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
31457786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 6>
31467786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
31477786266dSMatt Arsenault  ret void
31487786266dSMatt Arsenault}
31497786266dSMatt Arsenault
31507786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__u_7(ptr addrspace(1) inreg %ptr) {
31517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__u_7:
31527786266dSMatt Arsenault; GFX900:       ; %bb.0:
31537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
31557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31567786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
31577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
31597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31617786266dSMatt Arsenault;
31627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__u_7:
31637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
31667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
31687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31697786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
31707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31727786266dSMatt Arsenault;
31737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__u_7:
31747786266dSMatt Arsenault; GFX940:       ; %bb.0:
31757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
31777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
31797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
31817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31837786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
31847786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
31857786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 poison, i32 7>
31867786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
31877786266dSMatt Arsenault  ret void
31887786266dSMatt Arsenault}
31897786266dSMatt Arsenault
31907786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__0_7(ptr addrspace(1) inreg %ptr) {
31917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__0_7:
31927786266dSMatt Arsenault; GFX900:       ; %bb.0:
31937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
31967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:4]
31997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
32017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v4
32027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
32037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32057786266dSMatt Arsenault;
32067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__0_7:
32077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
32117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
32137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
32157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
32177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17]
32187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32207786266dSMatt Arsenault;
32217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__0_7:
32227786266dSMatt Arsenault; GFX940:       ; %bb.0:
32237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
32267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
32287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
32307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32317786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
32327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
32337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] sc0 sc1
32347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32367786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
32377786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
32387786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 0, i32 7>
32397786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
32407786266dSMatt Arsenault  ret void
32417786266dSMatt Arsenault}
32427786266dSMatt Arsenault
32437786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__1_7(ptr addrspace(1) inreg %ptr) {
32447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__1_7:
32457786266dSMatt Arsenault; GFX900:       ; %bb.0:
32467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32487786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
32497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
32527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
32547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v5
32557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[1:2], s[16:17]
32567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32587786266dSMatt Arsenault;
32597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__1_7:
32607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
32647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
32677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
32697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v1
32707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17]
32717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32737786266dSMatt Arsenault;
32747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__1_7:
32757786266dSMatt Arsenault; GFX940:       ; %bb.0:
32767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
32797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
32817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
32837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32847786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
32857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v1
32867786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] sc0 sc1
32877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32897786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
32907786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
32917786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 1, i32 7>
32927786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
32937786266dSMatt Arsenault  ret void
32947786266dSMatt Arsenault}
32957786266dSMatt Arsenault
32967786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__2_7(ptr addrspace(1) inreg %ptr) {
32977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__2_7:
32987786266dSMatt Arsenault; GFX900:       ; %bb.0:
32997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33017786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
33027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:6]
33057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v7, 0
33077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v6
33087786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v7, v[2:3], s[16:17]
33097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33117786266dSMatt Arsenault;
33127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__2_7:
33137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
33177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
33197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
33217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
33237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17]
33247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33267786266dSMatt Arsenault;
33277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__2_7:
33287786266dSMatt Arsenault; GFX940:       ; %bb.0:
33297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
33327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
33347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
33367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33377786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
33387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
33397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] sc0 sc1
33407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
33417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33427786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
33437786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
33447786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 2, i32 7>
33457786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
33467786266dSMatt Arsenault  ret void
33477786266dSMatt Arsenault}
33487786266dSMatt Arsenault
33497786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__3_7(ptr addrspace(1) inreg %ptr) {
33507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__3_7:
33517786266dSMatt Arsenault; GFX900:       ; %bb.0:
33527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
33557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
33577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
33597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, v3
33617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17]
33627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33647786266dSMatt Arsenault;
33657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__3_7:
33667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
33707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
33727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
33747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v3
33767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17]
33777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33797786266dSMatt Arsenault;
33807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__3_7:
33817786266dSMatt Arsenault; GFX940:       ; %bb.0:
33827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
33857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
33877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
33897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33907786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
33917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v3
33927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[6:7], s[0:1] sc0 sc1
33937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
33947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33957786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
33967786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
33977786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 3, i32 7>
33987786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
33997786266dSMatt Arsenault  ret void
34007786266dSMatt Arsenault}
34017786266dSMatt Arsenault
34027786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__4_7(ptr addrspace(1) inreg %ptr) {
34037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__4_7:
34047786266dSMatt Arsenault; GFX900:       ; %bb.0:
34057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
34087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
34107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
34117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
34127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34147786266dSMatt Arsenault;
34157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__4_7:
34167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
34207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
34227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
34237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
34247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34267786266dSMatt Arsenault;
34277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__4_7:
34287786266dSMatt Arsenault; GFX940:       ; %bb.0:
34297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
34327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
34347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
34357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] sc0 sc1
34367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34387786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
34397786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
34407786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 4, i32 7>
34417786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
34427786266dSMatt Arsenault  ret void
34437786266dSMatt Arsenault}
34447786266dSMatt Arsenault
34457786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__5_7(ptr addrspace(1) inreg %ptr) {
34467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__5_7:
34477786266dSMatt Arsenault; GFX900:       ; %bb.0:
34487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
34517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
34537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
34547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
34557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34577786266dSMatt Arsenault;
34587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__5_7:
34597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
34637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
34657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
34667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
34677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34697786266dSMatt Arsenault;
34707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__5_7:
34717786266dSMatt Arsenault; GFX940:       ; %bb.0:
34727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
34757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
34777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
34787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
34797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34817786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
34827786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
34837786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 7>
34847786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
34857786266dSMatt Arsenault  ret void
34867786266dSMatt Arsenault}
34877786266dSMatt Arsenault
34887786266dSMatt Arsenaultdefine void @v_shuffle_v2f32_v4f32__6_7(ptr addrspace(1) inreg %ptr) {
34897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2f32_v4f32__6_7:
34907786266dSMatt Arsenault; GFX900:       ; %bb.0:
34917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
34937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34947786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
34957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34967786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
34977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34997786266dSMatt Arsenault;
35007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2f32_v4f32__6_7:
35017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
35047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35057786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
35067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35077786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
35087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35107786266dSMatt Arsenault;
35117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2f32_v4f32__6_7:
35127786266dSMatt Arsenault; GFX940:       ; %bb.0:
35137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35147786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
35157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
35177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35187786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
35197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35217786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=v"()
35227786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=v"()
35237786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 7>
35247786266dSMatt Arsenault  store <2 x float> %shuf, ptr addrspace(1) %ptr, align 8
35257786266dSMatt Arsenault  ret void
35267786266dSMatt Arsenault}
35277786266dSMatt Arsenault
35287786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_u() {
35297786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__u_u:
35307786266dSMatt Arsenault; GFX9:       ; %bb.0:
35317786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35327786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3533585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
35347786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
35357786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
35367786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
35377786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> poison
3538585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
35397786266dSMatt Arsenault  ret void
35407786266dSMatt Arsenault}
35417786266dSMatt Arsenault
35427786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_u() {
35437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__0_u:
35447786266dSMatt Arsenault; GFX900:       ; %bb.0:
35457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3547585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
35487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3550585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
35517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35537786266dSMatt Arsenault;
35547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__0_u:
35557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3558585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
35597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3561585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
35627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35647786266dSMatt Arsenault;
35657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__0_u:
35667786266dSMatt Arsenault; GFX940:       ; %bb.0:
35677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3569585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
35707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3571585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
35727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3573585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
35747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35767786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
35777786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 poison>
3578585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
35797786266dSMatt Arsenault  ret void
35807786266dSMatt Arsenault}
35817786266dSMatt Arsenault
35827786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_u() {
35837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__1_u:
35847786266dSMatt Arsenault; GFX900:       ; %bb.0:
35857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35877786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
35887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3589585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
35907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3591585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
35927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35947786266dSMatt Arsenault;
35957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__1_u:
35967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35997786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
36007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3601585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
36027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3603585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
36047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36057786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36067786266dSMatt Arsenault;
36077786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__1_u:
36087786266dSMatt Arsenault; GFX940:       ; %bb.0:
36097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36117786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
36127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3613585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
36147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3615585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
36167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36187786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
36197786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 poison>
3620585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
36217786266dSMatt Arsenault  ret void
36227786266dSMatt Arsenault}
36237786266dSMatt Arsenault
36247786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_u() {
36257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_u:
36267786266dSMatt Arsenault; GFX900:       ; %bb.0:
36277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3629585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
36307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3631585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
36327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3633585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
36347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36367786266dSMatt Arsenault;
36377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_u:
36387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3641585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
36427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3643585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
36447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3645585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
36467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36487786266dSMatt Arsenault;
36497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_u:
36507786266dSMatt Arsenault; GFX940:       ; %bb.0:
36517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3653585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
36547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3655585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
36567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3657585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
36587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36597786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36607786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
36617786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 poison>
3662585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
36637786266dSMatt Arsenault  ret void
36647786266dSMatt Arsenault}
36657786266dSMatt Arsenault
36667786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_u() {
36677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__3_u:
36687786266dSMatt Arsenault; GFX900:       ; %bb.0:
36697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36717786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
36727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3673585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
36747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3675585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
36767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36787786266dSMatt Arsenault;
36797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__3_u:
36807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36837786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
36847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3685585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
36867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3687585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
36887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36907786266dSMatt Arsenault;
36917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__3_u:
36927786266dSMatt Arsenault; GFX940:       ; %bb.0:
36937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36957786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
36967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3697585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
36987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3699585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
37007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37027786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
37037786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 poison>
3704585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
37057786266dSMatt Arsenault  ret void
37067786266dSMatt Arsenault}
37077786266dSMatt Arsenault
37087786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_u() {
37097786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__4_u:
37107786266dSMatt Arsenault; GFX9:       ; %bb.0:
37117786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37127786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3713585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
37147786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
37157786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
37167786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
37177786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 poison>
3718585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
37197786266dSMatt Arsenault  ret void
37207786266dSMatt Arsenault}
37217786266dSMatt Arsenault
37227786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_u() {
37237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__5_u:
37247786266dSMatt Arsenault; GFX900:       ; %bb.0:
37257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37277786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
37287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3729585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
37307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3731585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
37327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37347786266dSMatt Arsenault;
37357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__5_u:
37367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37397786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
37407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3741585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
37427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3743585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
37447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37467786266dSMatt Arsenault;
37477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__5_u:
37487786266dSMatt Arsenault; GFX940:       ; %bb.0:
37497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37517786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
37527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3753585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
37547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3755585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
37567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37577786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37587786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
37597786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
37607786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 poison>
3761585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
37627786266dSMatt Arsenault  ret void
37637786266dSMatt Arsenault}
37647786266dSMatt Arsenault
37657786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_u() {
37667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_u:
37677786266dSMatt Arsenault; GFX900:       ; %bb.0:
37687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3770585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
37717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3772585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
37737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3774585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
37757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37777786266dSMatt Arsenault;
37787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_u:
37797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3782585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
37837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3784585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
37857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3786585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
37877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37897786266dSMatt Arsenault;
37907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_u:
37917786266dSMatt Arsenault; GFX940:       ; %bb.0:
37927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3794585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
37957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3796585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
37977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3798585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
37997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38017786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
38027786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
38037786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 poison>
3804585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
38057786266dSMatt Arsenault  ret void
38067786266dSMatt Arsenault}
38077786266dSMatt Arsenault
38087786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_u() {
38097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__7_u:
38107786266dSMatt Arsenault; GFX900:       ; %bb.0:
38117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
38147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3815585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
38167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3817585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
38187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38207786266dSMatt Arsenault;
38217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__7_u:
38227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38257786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
38267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3827585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
38287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3829585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
38307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38327786266dSMatt Arsenault;
38337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__7_u:
38347786266dSMatt Arsenault; GFX940:       ; %bb.0:
38357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38377786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
38387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3839585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
38407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3841585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
38427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38447786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
38457786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
38467786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 poison>
3847585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
38487786266dSMatt Arsenault  ret void
38497786266dSMatt Arsenault}
38507786266dSMatt Arsenault
38517786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_0() {
38527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__7_0:
38537786266dSMatt Arsenault; GFX900:       ; %bb.0:
38547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38567786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
38577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38597786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
38607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3861585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
3862585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
38637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3864585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
38657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38667786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38677786266dSMatt Arsenault;
38687786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__7_0:
38697786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38727786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
38737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38757786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
38767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3877585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
3878585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
38797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3880585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
38817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38837786266dSMatt Arsenault;
38847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__7_0:
38857786266dSMatt Arsenault; GFX940:       ; %bb.0:
38867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38887786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
38897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38917786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
38927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3893585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s7
3894585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
38957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3896585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
38977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38997786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
39007786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
39017786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 0>
3902585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
39037786266dSMatt Arsenault  ret void
39047786266dSMatt Arsenault}
39057786266dSMatt Arsenault
39067786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_1() {
39077786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__7_1:
39087786266dSMatt Arsenault; GFX900:       ; %bb.0:
39097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39117786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
39127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3914585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3915585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3916585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
3917585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3918585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
39197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39217786266dSMatt Arsenault;
39227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__7_1:
39237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39267786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
39277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3929585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3930585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3931585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
3932585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3933585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
39347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39357786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39367786266dSMatt Arsenault;
39377786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__7_1:
39387786266dSMatt Arsenault; GFX940:       ; %bb.0:
39397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3941585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
3942585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3943585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39447786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
39457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3946585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
39477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3948585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
39497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39517786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
39527786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
39537786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 1>
3954585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
39557786266dSMatt Arsenault  ret void
39567786266dSMatt Arsenault}
39577786266dSMatt Arsenault
39587786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_2() {
39597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__7_2:
39607786266dSMatt Arsenault; GFX900:       ; %bb.0:
39617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
39647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39667786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
39677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3968585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
3969585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
39707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3971585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
39727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39747786266dSMatt Arsenault;
39757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__7_2:
39767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39797786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
39807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39827786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
39837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3984585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
3985585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
39867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3987585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
39887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39907786266dSMatt Arsenault;
39917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__7_2:
39927786266dSMatt Arsenault; GFX940:       ; %bb.0:
39937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39957786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
39967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39987786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
39997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4000585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s7
4001585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
40027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4003585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
40047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40067786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
40077786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
40087786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 2>
4009585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
40107786266dSMatt Arsenault  ret void
40117786266dSMatt Arsenault}
40127786266dSMatt Arsenault
40137786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_3() {
40147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__7_3:
40157786266dSMatt Arsenault; GFX900:       ; %bb.0:
40167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40187786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
40197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4021585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
4022585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4023585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s6, s11
4024585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
4025585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4026585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
40277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40297786266dSMatt Arsenault;
40307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__7_3:
40317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40347786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
40357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4037585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
4038585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4039585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s6, s11
4040585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
4041585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4042585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
40437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40457786266dSMatt Arsenault;
40467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__7_3:
40477786266dSMatt Arsenault; GFX940:       ; %bb.0:
40487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40507786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
40517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4053585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
4054585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4055585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, s7
4056585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
4057585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4058585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
40597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40617786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
40627786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
40637786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 3>
4064585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
40657786266dSMatt Arsenault  ret void
40667786266dSMatt Arsenault}
40677786266dSMatt Arsenault
40687786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_4() {
40697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__7_4:
40707786266dSMatt Arsenault; GFX900:       ; %bb.0:
40717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40737786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
40747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4075585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
4076585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
40777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4078585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
40797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40817786266dSMatt Arsenault;
40827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__7_4:
40837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
40877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4088585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
4089585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
40907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4091585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
40927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40947786266dSMatt Arsenault;
40957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__7_4:
40967786266dSMatt Arsenault; GFX940:       ; %bb.0:
40977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40997786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
41007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4101585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
4102585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
41037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4104585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
41057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41077786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
41087786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
41097786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 4>
4110585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
41117786266dSMatt Arsenault  ret void
41127786266dSMatt Arsenault}
41137786266dSMatt Arsenault
41147786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_5() {
4115585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__7_5:
4116585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4117585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4118585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4119585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4120585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4121585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4122585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4123585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
4124585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4125585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
41267786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
41277786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
41287786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 5>
4129585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
41307786266dSMatt Arsenault  ret void
41317786266dSMatt Arsenault}
41327786266dSMatt Arsenault
41337786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_6() {
41347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__7_6:
41357786266dSMatt Arsenault; GFX900:       ; %bb.0:
41367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41387786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
41397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4140585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
4141585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
41427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4143585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
41447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41467786266dSMatt Arsenault;
41477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__7_6:
41487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41517786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
41527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4153585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
4154585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
41557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4156585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
41577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41597786266dSMatt Arsenault;
41607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__7_6:
41617786266dSMatt Arsenault; GFX940:       ; %bb.0:
41627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41647786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
41657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4166585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
4167585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
41687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4169585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
41707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41727786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
41737786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
41747786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 6>
4175585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
41767786266dSMatt Arsenault  ret void
41777786266dSMatt Arsenault}
41787786266dSMatt Arsenault
41797786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__7_7() {
4180585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__7_7:
4181585858aeSMatt Arsenault; GFX900:       ; %bb.0:
4182585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4183585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4184585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4185585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4186585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s6, s7
4187585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
4188585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4189585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
4190585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4191585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4192585858aeSMatt Arsenault;
4193585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__7_7:
4194585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
4195585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4196585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4197585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
4198585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4199585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s6, s7
4200585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
4201585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4202585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
4203585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4204585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4205585858aeSMatt Arsenault;
4206585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__7_7:
4207585858aeSMatt Arsenault; GFX940:       ; %bb.0:
4208585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4209585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4210585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
4211585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4212585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, s3
4213585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
4214585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4215585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
4216585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4217585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42187786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
42197786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
42207786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 7, i32 7>
4221585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
42227786266dSMatt Arsenault  ret void
42237786266dSMatt Arsenault}
42247786266dSMatt Arsenault
42257786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_0() {
42267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__u_0:
42277786266dSMatt Arsenault; GFX900:       ; %bb.0:
42287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42307786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
42317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4232585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
42337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4234585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
42357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42377786266dSMatt Arsenault;
42387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__u_0:
42397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
42437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4244585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
42457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4246585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
42477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42497786266dSMatt Arsenault;
42507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__u_0:
42517786266dSMatt Arsenault; GFX940:       ; %bb.0:
42527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42547786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
42557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4256585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
42577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4258585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
42597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42617786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
42627786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 0>
4263585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
42647786266dSMatt Arsenault  ret void
42657786266dSMatt Arsenault}
42667786266dSMatt Arsenault
42677786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_0() {
4268585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__0_0:
4269585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4270585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4271585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4272585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4273585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4274585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
4275585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4276585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
4277585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4278585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
42797786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
42807786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> zeroinitializer
4281585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
42827786266dSMatt Arsenault  ret void
42837786266dSMatt Arsenault}
42847786266dSMatt Arsenault
42857786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_0() {
42867786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__1_0:
42877786266dSMatt Arsenault; GFX900:       ; %bb.0:
42887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42907786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
42917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4292585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4293585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
42947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4295585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
42967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42987786266dSMatt Arsenault;
42997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__1_0:
43007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
43037786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
43047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4305585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4306585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
43077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4308585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
43097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
43107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
43117786266dSMatt Arsenault;
43127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__1_0:
43137786266dSMatt Arsenault; GFX940:       ; %bb.0:
43147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43167786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
43177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4318585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4319585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
43207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4321585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
43227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43247786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
43257786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 0>
4326585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
43277786266dSMatt Arsenault  ret void
43287786266dSMatt Arsenault}
43297786266dSMatt Arsenault
43307786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_0() {
4331585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_0:
4332585858aeSMatt Arsenault; GFX900:       ; %bb.0:
4333585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4334585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4335585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4336585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4337585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s4
4338585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
4339585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4340585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
4341585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4342585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4343585858aeSMatt Arsenault;
4344585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_0:
4345585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
4346585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4347585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4348585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
4349585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4350585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s4
4351585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
4352585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4353585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
4354585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4355585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4356585858aeSMatt Arsenault;
4357585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_0:
4358585858aeSMatt Arsenault; GFX940:       ; %bb.0:
4359585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4360585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4361585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
4362585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4363585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s0
4364585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
4365585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4366585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
4367585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4368585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43697786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
43707786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 0>
4371585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
43727786266dSMatt Arsenault  ret void
43737786266dSMatt Arsenault}
43747786266dSMatt Arsenault
43757786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_0() {
43767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__3_0:
43777786266dSMatt Arsenault; GFX900:       ; %bb.0:
43787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43807786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
43817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4382585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
4383585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
43847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4385585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
43867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
43877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
43887786266dSMatt Arsenault;
43897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__3_0:
43907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
43937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
43947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4395585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
4396585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
43977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4398585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
43997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44017786266dSMatt Arsenault;
44027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__3_0:
44037786266dSMatt Arsenault; GFX940:       ; %bb.0:
44047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44067786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
44077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4408585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
4409585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
44107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4411585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
44127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44147786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
44157786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 0>
4416585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
44177786266dSMatt Arsenault  ret void
44187786266dSMatt Arsenault}
44197786266dSMatt Arsenault
44207786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_0() {
44217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__4_0:
44227786266dSMatt Arsenault; GFX900:       ; %bb.0:
44237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
44267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4427585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
44287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4429585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
44307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44327786266dSMatt Arsenault;
44337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__4_0:
44347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44377786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
44387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4439585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
44407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4441585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
44427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44447786266dSMatt Arsenault;
44457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__4_0:
44467786266dSMatt Arsenault; GFX940:       ; %bb.0:
44477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44497786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
44507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4451585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
44527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4453585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
44547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44567786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
44577786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 0>
4458585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
44597786266dSMatt Arsenault  ret void
44607786266dSMatt Arsenault}
44617786266dSMatt Arsenault
44627786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_0() {
44637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__5_0:
44647786266dSMatt Arsenault; GFX900:       ; %bb.0:
44657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44677786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
44687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44707786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
44717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4472585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
4473585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
44747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4475585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
44767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44787786266dSMatt Arsenault;
44797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__5_0:
44807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44837786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
44847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
44877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4488585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
4489585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
44907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4491585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
44927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44947786266dSMatt Arsenault;
44957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__5_0:
44967786266dSMatt Arsenault; GFX940:       ; %bb.0:
44977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44997786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
45007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
45037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4504585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s5
4505585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
45067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4507585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
45087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45107786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
45117786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
45127786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 0>
4513585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
45147786266dSMatt Arsenault  ret void
45157786266dSMatt Arsenault}
45167786266dSMatt Arsenault
45177786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_0() {
45187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_0:
45197786266dSMatt Arsenault; GFX900:       ; %bb.0:
45207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45227786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
45237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
45267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45277786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
4528585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[10:11]
45297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4530585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
45317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45337786266dSMatt Arsenault;
45347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_0:
45357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45387786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
45397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
45427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45437786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
4544585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[10:11]
45457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4546585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
45477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45497786266dSMatt Arsenault;
45507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_0:
45517786266dSMatt Arsenault; GFX940:       ; %bb.0:
45527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4554585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
45557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
45587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4559585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s7, s0
4560585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[6:7]
45617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4562585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
45637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45657786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
45667786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
45677786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 0>
4568585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
45697786266dSMatt Arsenault  ret void
45707786266dSMatt Arsenault}
45717786266dSMatt Arsenault
45727786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_1() {
45737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__u_1:
45747786266dSMatt Arsenault; GFX900:       ; %bb.0:
45757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4577585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
45787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4580585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
45817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45837786266dSMatt Arsenault;
45847786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__u_1:
45857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4588585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
45897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4591585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
45927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45947786266dSMatt Arsenault;
45957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__u_1:
45967786266dSMatt Arsenault; GFX940:       ; %bb.0:
45977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4599585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
46007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4601585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
46027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4603585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
46047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46067786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
46077786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 1>
4608585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
46097786266dSMatt Arsenault  ret void
46107786266dSMatt Arsenault}
46117786266dSMatt Arsenault
46127786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_1() {
46137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__0_1:
46147786266dSMatt Arsenault; GFX900:       ; %bb.0:
46157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4617585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
46187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4620585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
46217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46227786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46237786266dSMatt Arsenault;
46247786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__0_1:
46257786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4628585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
46297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4631585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
46327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46347786266dSMatt Arsenault;
46357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__0_1:
46367786266dSMatt Arsenault; GFX940:       ; %bb.0:
46377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4639585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
46407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4641585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
46427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4643585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
46447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46467786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
46477786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 1>
4648585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
46497786266dSMatt Arsenault  ret void
46507786266dSMatt Arsenault}
46517786266dSMatt Arsenault
46527786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_1() {
4653585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__1_1:
46547786266dSMatt Arsenault; GFX9:       ; %bb.0:
46557786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46567786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
46577786266dSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
46587786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4659585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
46607786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4661585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
46627786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
46637786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
46647786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
4665585858aeSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 1>
4666585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
46677786266dSMatt Arsenault  ret void
46687786266dSMatt Arsenault}
46697786266dSMatt Arsenault
4670585858aeSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_1() {
4671585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_1:
46727786266dSMatt Arsenault; GFX900:       ; %bb.0:
46737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46757786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
46767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4677585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s5
4678585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
46797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4680585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
46817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46837786266dSMatt Arsenault;
4684585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_1:
46857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46887786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
46897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4690585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s5
4691585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
46927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4693585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
46947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46967786266dSMatt Arsenault;
4697585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_1:
46987786266dSMatt Arsenault; GFX940:       ; %bb.0:
46997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47017786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
47027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4703585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s1
4704585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
47057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4706585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
47077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47097786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
4710585858aeSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 1>
4711585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
4712585858aeSMatt Arsenault  ret void
4713585858aeSMatt Arsenault}
4714585858aeSMatt Arsenault
4715585858aeSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_1() {
4716585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__3_1:
4717585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4718585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4719585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4720585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4721585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4722585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4723585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4724585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
4725585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4726585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
4727585858aeSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
47287786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 1>
4729585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
47307786266dSMatt Arsenault  ret void
47317786266dSMatt Arsenault}
47327786266dSMatt Arsenault
47337786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_1() {
47347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__4_1:
47357786266dSMatt Arsenault; GFX900:       ; %bb.0:
47367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4738585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
47397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4741585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
47427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47447786266dSMatt Arsenault;
47457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__4_1:
47467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4749585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
47507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4752585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
47537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47557786266dSMatt Arsenault;
47567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__4_1:
47577786266dSMatt Arsenault; GFX940:       ; %bb.0:
47587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4760585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
47617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4762585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
47637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4764585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
47657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47677786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
47687786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 1>
4769585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
47707786266dSMatt Arsenault  ret void
47717786266dSMatt Arsenault}
47727786266dSMatt Arsenault
47737786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_1() {
47747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__5_1:
47757786266dSMatt Arsenault; GFX900:       ; %bb.0:
47767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
47787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
47797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4781585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4782585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4783585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4784585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4785585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
47867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47887786266dSMatt Arsenault;
47897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__5_1:
47907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
47947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4796585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
4797585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4798585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4799585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4800585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
48017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48037786266dSMatt Arsenault;
48047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__5_1:
48057786266dSMatt Arsenault; GFX940:       ; %bb.0:
48067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4808585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
4809585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4810585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
48117786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
48127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4813585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
48147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4815585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
48167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48187786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
48197786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
48207786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 1>
4821585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
48227786266dSMatt Arsenault  ret void
48237786266dSMatt Arsenault}
48247786266dSMatt Arsenault
48257786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_1() {
48267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_1:
48277786266dSMatt Arsenault; GFX900:       ; %bb.0:
48287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48307786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
48317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48337786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
48347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48357786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
4836585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[10:11]
48377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4838585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
48397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48417786266dSMatt Arsenault;
48427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_1:
48437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48467786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
48477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48497786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
48507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48517786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
4852585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[10:11]
48537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4854585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
48557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48567786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48577786266dSMatt Arsenault;
48587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_1:
48597786266dSMatt Arsenault; GFX940:       ; %bb.0:
48607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4862585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
48637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
48657786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
48667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4867585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s7, s1
4868585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[6:7]
48697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4870585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
48717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48737786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
48747786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
48757786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 1>
4876585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
48777786266dSMatt Arsenault  ret void
48787786266dSMatt Arsenault}
48797786266dSMatt Arsenault
48807786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_2() {
48817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__u_2:
48827786266dSMatt Arsenault; GFX900:       ; %bb.0:
48837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48857786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
48867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4887585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
48887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4889585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
48907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48927786266dSMatt Arsenault;
48937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__u_2:
48947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48977786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
48987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4899585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
49007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4901585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
49027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49047786266dSMatt Arsenault;
49057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__u_2:
49067786266dSMatt Arsenault; GFX940:       ; %bb.0:
49077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
49097786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
49107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4911585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
49127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4913585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
49147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49167786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
49177786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 2>
4918585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
49197786266dSMatt Arsenault  ret void
49207786266dSMatt Arsenault}
49217786266dSMatt Arsenault
49227786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_2() {
4923585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__0_2:
4924585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4925585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4926585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4927585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4928585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4929585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
4930585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4931585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
4932585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4933585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
49347786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
49357786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 2>
4936585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
49377786266dSMatt Arsenault  ret void
49387786266dSMatt Arsenault}
49397786266dSMatt Arsenault
49407786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_2() {
49417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__1_2:
49427786266dSMatt Arsenault; GFX900:       ; %bb.0:
49437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49457786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
49467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4947585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4948585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
49497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4950585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
49517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49537786266dSMatt Arsenault;
49547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__1_2:
49557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
49597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4960585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4961585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
49627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4963585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
49647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49667786266dSMatt Arsenault;
49677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__1_2:
49687786266dSMatt Arsenault; GFX940:       ; %bb.0:
49697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
49717786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
49727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4973585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4974585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
49757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4976585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
49777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49797786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
49807786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 2>
4981585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
49827786266dSMatt Arsenault  ret void
49837786266dSMatt Arsenault}
49847786266dSMatt Arsenault
49857786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_2() {
4986585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_2:
4987585858aeSMatt Arsenault; GFX900:       ; %bb.0:
4988585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4989585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4990585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4991585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4992585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s6
4993585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
4994585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4995585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
4996585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4997585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4998585858aeSMatt Arsenault;
4999585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_2:
5000585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
5001585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5002585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5003585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5004585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5005585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s6
5006585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
5007585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5008585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
5009585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5010585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5011585858aeSMatt Arsenault;
5012585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_2:
5013585858aeSMatt Arsenault; GFX940:       ; %bb.0:
5014585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5015585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5016585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
5017585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5018585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s2
5019585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
5020585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5021585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
5022585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5023585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50247786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
50257786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 2>
5026585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
50277786266dSMatt Arsenault  ret void
50287786266dSMatt Arsenault}
50297786266dSMatt Arsenault
50307786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_2() {
50317786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__3_2:
50327786266dSMatt Arsenault; GFX900:       ; %bb.0:
50337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50357786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
50367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5037585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
5038585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
50397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5040585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
50417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50437786266dSMatt Arsenault;
50447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__3_2:
50457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50487786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
50497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5050585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
5051585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
50527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5053585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
50547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50567786266dSMatt Arsenault;
50577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__3_2:
50587786266dSMatt Arsenault; GFX940:       ; %bb.0:
50597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50617786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
50627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5063585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
5064585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
50657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5066585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
50677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50687786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50697786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
50707786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 2>
5071585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
50727786266dSMatt Arsenault  ret void
50737786266dSMatt Arsenault}
50747786266dSMatt Arsenault
50757786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_2() {
50767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__4_2:
50777786266dSMatt Arsenault; GFX900:       ; %bb.0:
50787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50807786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
50817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5082585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
50837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5084585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
50857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50877786266dSMatt Arsenault;
50887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__4_2:
50897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50927786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
50937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5094585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
50957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5096585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
50977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50997786266dSMatt Arsenault;
51007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__4_2:
51017786266dSMatt Arsenault; GFX940:       ; %bb.0:
51027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51047786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
51057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5106585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
51077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5108585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
51097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51117786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
51127786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 2>
5113585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
51147786266dSMatt Arsenault  ret void
51157786266dSMatt Arsenault}
51167786266dSMatt Arsenault
51177786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_2() {
51187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__5_2:
51197786266dSMatt Arsenault; GFX900:       ; %bb.0:
51207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51227786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
51237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
51267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5127585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
5128585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
51297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5130585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
51317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51337786266dSMatt Arsenault;
51347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__5_2:
51357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51387786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
51397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
51427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5143585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
5144585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
51457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5146585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
51477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51497786266dSMatt Arsenault;
51507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__5_2:
51517786266dSMatt Arsenault; GFX940:       ; %bb.0:
51527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51547786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
51557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
51587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5159585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s5
5160585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
51617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5162585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
51637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51657786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
51667786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
51677786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 2>
5168585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
51697786266dSMatt Arsenault  ret void
51707786266dSMatt Arsenault}
51717786266dSMatt Arsenault
51727786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_2() {
51737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_2:
51747786266dSMatt Arsenault; GFX900:       ; %bb.0:
51757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51777786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
51787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51807786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
51817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51827786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s6
5183585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[10:11]
51847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5185585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
51867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51887786266dSMatt Arsenault;
51897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_2:
51907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
51947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51967786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
51977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51987786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s6
5199585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[10:11]
52007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5201585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
52027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52047786266dSMatt Arsenault;
52057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_2:
52067786266dSMatt Arsenault; GFX940:       ; %bb.0:
52077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5209585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
52107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
52127786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
52137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5214585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s7, s2
5215585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[6:7]
52167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5217585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
52187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52207786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
52217786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
52227786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 2>
5223585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
52247786266dSMatt Arsenault  ret void
52257786266dSMatt Arsenault}
52267786266dSMatt Arsenault
52277786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_3() {
52287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__u_3:
52297786266dSMatt Arsenault; GFX900:       ; %bb.0:
52307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5232585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
52337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5234585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
52357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5236585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
52377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52397786266dSMatt Arsenault;
52407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__u_3:
52417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5244585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
52457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5246585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
52477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5248585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
52497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52517786266dSMatt Arsenault;
52527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__u_3:
52537786266dSMatt Arsenault; GFX940:       ; %bb.0:
52547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5256585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
52577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5258585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
52597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5260585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
52617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52637786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
52647786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 3>
5265585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
52667786266dSMatt Arsenault  ret void
52677786266dSMatt Arsenault}
52687786266dSMatt Arsenault
52697786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_3() {
5270585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__0_3:
52717786266dSMatt Arsenault; GFX9:       ; %bb.0:
52727786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52737786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
52747786266dSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
52757786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5276585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
52777786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5278585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
52797786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
52807786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52817786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
5282585858aeSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 3>
5283585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
5284585858aeSMatt Arsenault  ret void
5285585858aeSMatt Arsenault}
5286585858aeSMatt Arsenault
5287585858aeSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_3() {
5288585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__1_3:
5289585858aeSMatt Arsenault; GFX900:       ; %bb.0:
5290585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5291585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5292585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
5293585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5294585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s6, s5
5295585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
5296585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5297585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
5298585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5299585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5300585858aeSMatt Arsenault;
5301585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__1_3:
5302585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
5303585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5304585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5305585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5306585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5307585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s6, s5
5308585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
5309585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5310585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
5311585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5312585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5313585858aeSMatt Arsenault;
5314585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__1_3:
5315585858aeSMatt Arsenault; GFX940:       ; %bb.0:
5316585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5317585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5318585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
5319585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5320585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, s1
5321585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
5322585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5323585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
5324585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5325585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5326585858aeSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
53277786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 3>
5328585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
53297786266dSMatt Arsenault  ret void
53307786266dSMatt Arsenault}
53317786266dSMatt Arsenault
53327786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_3() {
53337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_3:
53347786266dSMatt Arsenault; GFX900:       ; %bb.0:
53357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5337585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
53387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5339585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
53407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5341585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
53427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53447786266dSMatt Arsenault;
53457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_3:
53467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5349585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
53507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5351585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
53527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5353585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
53547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53567786266dSMatt Arsenault;
53577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_3:
53587786266dSMatt Arsenault; GFX940:       ; %bb.0:
53597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5361585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
53627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5363585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
53647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5365585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
53667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53687786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
53697786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 3>
5370585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
53717786266dSMatt Arsenault  ret void
53727786266dSMatt Arsenault}
53737786266dSMatt Arsenault
53747786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_3() {
5375585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__3_3:
5376585858aeSMatt Arsenault; GFX900:       ; %bb.0:
5377585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5378585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5379585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
5380585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5381585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s6, s7
5382585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
5383585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5384585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
5385585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5386585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5387585858aeSMatt Arsenault;
5388585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__3_3:
5389585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
5390585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5391585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5392585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5393585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5394585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s6, s7
5395585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
5396585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5397585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
5398585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5399585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5400585858aeSMatt Arsenault;
5401585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__3_3:
5402585858aeSMatt Arsenault; GFX940:       ; %bb.0:
5403585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5404585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5405585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
5406585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5407585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, s3
5408585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
5409585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5410585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
5411585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5412585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54137786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
54147786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 3>
5415585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
54167786266dSMatt Arsenault  ret void
54177786266dSMatt Arsenault}
54187786266dSMatt Arsenault
54197786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_3() {
54207786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__4_3:
54217786266dSMatt Arsenault; GFX900:       ; %bb.0:
54227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5424585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
54257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5426585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
54277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5428585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
54297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54317786266dSMatt Arsenault;
54327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__4_3:
54337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5436585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
54377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5438585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
54397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5440585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
54417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54437786266dSMatt Arsenault;
54447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__4_3:
54457786266dSMatt Arsenault; GFX940:       ; %bb.0:
54467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5448585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
54497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5450585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
54517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5452585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
54537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54557786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
54567786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 3>
5457585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
54587786266dSMatt Arsenault  ret void
54597786266dSMatt Arsenault}
54607786266dSMatt Arsenault
54617786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_3() {
54627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__5_3:
54637786266dSMatt Arsenault; GFX900:       ; %bb.0:
54647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54667786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
54677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5469585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
5470585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5471585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s6, s9
5472585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
5473585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5474585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
54757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54777786266dSMatt Arsenault;
54787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__5_3:
54797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54827786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
54837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5485585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
5486585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5487585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s6, s9
5488585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
5489585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5490585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
54917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54937786266dSMatt Arsenault;
54947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__5_3:
54957786266dSMatt Arsenault; GFX940:       ; %bb.0:
54967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
54987786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
54997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5501585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
5502585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5503585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, s5
5504585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
5505585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5506585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
55077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55097786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
55107786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
55117786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 3>
5512585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
55137786266dSMatt Arsenault  ret void
55147786266dSMatt Arsenault}
55157786266dSMatt Arsenault
55167786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_3() {
55177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_3:
55187786266dSMatt Arsenault; GFX900:       ; %bb.0:
55197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55217786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
55227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55247786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
55257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55267786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s7
5527585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[10:11]
55287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5529585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
55307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
55327786266dSMatt Arsenault;
55337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_3:
55347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
55357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55377786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
55387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55407786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
55417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55427786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s7
5543585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[10:11]
55447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5545585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
55467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
55487786266dSMatt Arsenault;
55497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_3:
55507786266dSMatt Arsenault; GFX940:       ; %bb.0:
55517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5553585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
55547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
55567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
55577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5558585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s7, s3
5559585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[6:7]
55607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5561585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
55627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55647786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
55657786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
55667786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 3>
5567585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
55687786266dSMatt Arsenault  ret void
55697786266dSMatt Arsenault}
55707786266dSMatt Arsenault
55717786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_4() {
55727786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__u_4:
55737786266dSMatt Arsenault; GFX9:       ; %bb.0:
55747786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55757786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5576585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
55777786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
55787786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
55797786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
55807786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 poison, i32 4>
5581585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
55827786266dSMatt Arsenault  ret void
55837786266dSMatt Arsenault}
55847786266dSMatt Arsenault
55857786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_4() {
55867786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__0_4:
55877786266dSMatt Arsenault; GFX900:       ; %bb.0:
55887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5590585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
55917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5593585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
55947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
55967786266dSMatt Arsenault;
55977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__0_4:
55987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
55997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5601585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
56027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5604585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
56057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56077786266dSMatt Arsenault;
56087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__0_4:
56097786266dSMatt Arsenault; GFX940:       ; %bb.0:
56107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5612585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
56137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5614585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
56157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5616585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
56177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
56197786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
56207786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 0, i32 4>
5621585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
56227786266dSMatt Arsenault  ret void
56237786266dSMatt Arsenault}
56247786266dSMatt Arsenault
56257786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_4() {
56267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__1_4:
56277786266dSMatt Arsenault; GFX900:       ; %bb.0:
56287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56307786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
56317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5632585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
56337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5634585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
56357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56377786266dSMatt Arsenault;
56387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__1_4:
56397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
56437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5644585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
56457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5646585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
56477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56497786266dSMatt Arsenault;
56507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__1_4:
56517786266dSMatt Arsenault; GFX940:       ; %bb.0:
56527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
56547786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
56557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5656585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
56577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5658585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
56597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
56617786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
56627786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 1, i32 4>
5663585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
56647786266dSMatt Arsenault  ret void
56657786266dSMatt Arsenault}
56667786266dSMatt Arsenault
56677786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_4() {
56687786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_4:
56697786266dSMatt Arsenault; GFX900:       ; %bb.0:
56707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5672585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
56737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5674585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
56757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5676585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
56777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56797786266dSMatt Arsenault;
56807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_4:
56817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5684585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
56857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5686585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
56877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5688585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
56897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56917786266dSMatt Arsenault;
56927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_4:
56937786266dSMatt Arsenault; GFX940:       ; %bb.0:
56947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5696585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
56977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5698585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
56997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5700585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
57017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
57037786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
57047786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 2, i32 4>
5705585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
57067786266dSMatt Arsenault  ret void
57077786266dSMatt Arsenault}
57087786266dSMatt Arsenault
57097786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_4() {
57107786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__3_4:
57117786266dSMatt Arsenault; GFX900:       ; %bb.0:
57127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57147786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
57157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5716585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
57177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5718585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
57197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
57217786266dSMatt Arsenault;
57227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__3_4:
57237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57267786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
57277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5728585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
57297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5730585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
57317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
57337786266dSMatt Arsenault;
57347786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__3_4:
57357786266dSMatt Arsenault; GFX940:       ; %bb.0:
57367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57387786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
57397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5740585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
57417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5742585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
57437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57447786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
57457786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
57467786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 3, i32 4>
5747585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
57487786266dSMatt Arsenault  ret void
57497786266dSMatt Arsenault}
57507786266dSMatt Arsenault
57517786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_4() {
57527786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__4_4:
57537786266dSMatt Arsenault; GFX9:       ; %bb.0:
57547786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57557786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5756585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
57577786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
57587786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
57597786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
57607786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> poison, <2 x i32> <i32 4, i32 4>
5761585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
57627786266dSMatt Arsenault  ret void
57637786266dSMatt Arsenault}
57647786266dSMatt Arsenault
57657786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_4() {
57667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__5_4:
57677786266dSMatt Arsenault; GFX900:       ; %bb.0:
57687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57707786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
57717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5772585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
5773585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
57747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5775585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
57767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
57787786266dSMatt Arsenault;
57797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__5_4:
57807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57837786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
57847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5785585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
5786585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
57877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5788585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
57897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
57917786266dSMatt Arsenault;
57927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__5_4:
57937786266dSMatt Arsenault; GFX940:       ; %bb.0:
57947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57967786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
57977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5798585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
5799585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
58007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5801585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
58027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
58047786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
58057786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
58067786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 4>
5807585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
58087786266dSMatt Arsenault  ret void
58097786266dSMatt Arsenault}
58107786266dSMatt Arsenault
58117786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_4() {
5812585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_4:
5813585858aeSMatt Arsenault; GFX900:       ; %bb.0:
5814585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5815585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5816585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
5817585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5818585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s4
5819585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
5820585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5821585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
5822585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5823585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5824585858aeSMatt Arsenault;
5825585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_4:
5826585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
5827585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5828585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5829585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5830585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5831585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s4
5832585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
5833585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5834585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
5835585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5836585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5837585858aeSMatt Arsenault;
5838585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_4:
5839585858aeSMatt Arsenault; GFX940:       ; %bb.0:
5840585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5841585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5842585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
5843585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5844585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s0
5845585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
5846585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5847585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
5848585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5849585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
58507786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
58517786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
58527786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 4>
5853585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
58547786266dSMatt Arsenault  ret void
58557786266dSMatt Arsenault}
58567786266dSMatt Arsenault
58577786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_5() {
58587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__u_5:
58597786266dSMatt Arsenault; GFX900:       ; %bb.0:
58607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5862585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
58637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5865585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
58667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
58687786266dSMatt Arsenault;
58697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__u_5:
58707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
58717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5873585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
58747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5876585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
58777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
58797786266dSMatt Arsenault;
58807786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__u_5:
58817786266dSMatt Arsenault; GFX940:       ; %bb.0:
58827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5884585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
58857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5886585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
58877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5888585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
58897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
58917786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
58927786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
58937786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 poison, i32 5>
5894585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
58957786266dSMatt Arsenault  ret void
58967786266dSMatt Arsenault}
58977786266dSMatt Arsenault
58987786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_5() {
58997786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__0_5:
59007786266dSMatt Arsenault; GFX900:       ; %bb.0:
59017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59037786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
59047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5906585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
5907585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5908585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
5909585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5910585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
59117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59137786266dSMatt Arsenault;
59147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__0_5:
59157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59187786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
59197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5921585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
5922585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5923585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
5924585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5925585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
59267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
59287786266dSMatt Arsenault;
59297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__0_5:
59307786266dSMatt Arsenault; GFX940:       ; %bb.0:
59317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5933585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
5934585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5935585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
59367786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
59377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5938585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
59397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5940585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
59417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
59437786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
59447786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
59457786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 0, i32 5>
5946585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
59477786266dSMatt Arsenault  ret void
59487786266dSMatt Arsenault}
59497786266dSMatt Arsenault
59507786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_5() {
59517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__1_5:
59527786266dSMatt Arsenault; GFX900:       ; %bb.0:
59537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59557786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
59567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59587786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
59597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59607786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
59617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5962585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
59637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59657786266dSMatt Arsenault;
59667786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__1_5:
59677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59707786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
59717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59737786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
59747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59757786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
59767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5977585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
59787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59797786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
59807786266dSMatt Arsenault;
59817786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__1_5:
59827786266dSMatt Arsenault; GFX940:       ; %bb.0:
59837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
59857786266dSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
59867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
59887786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
59897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5990585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
59917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5992585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
5993585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5994585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5995585858aeSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
5996585858aeSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
5997585858aeSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 1, i32 5>
5998585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
5999585858aeSMatt Arsenault  ret void
6000585858aeSMatt Arsenault}
6001585858aeSMatt Arsenault
6002585858aeSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_5() {
6003585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_5:
6004585858aeSMatt Arsenault; GFX900:       ; %bb.0:
6005585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6006585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6007585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
6008585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6009585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6010585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
6011585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6012585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s9
6013585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
6014585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6015585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
6016585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6017585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6018585858aeSMatt Arsenault;
6019585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_5:
6020585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
6021585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6022585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6023585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
6024585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6025585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6026585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
6027585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6028585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s9
6029585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
6030585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6031585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
6032585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6033585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6034585858aeSMatt Arsenault;
6035585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_5:
6036585858aeSMatt Arsenault; GFX940:       ; %bb.0:
6037585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6038585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6039585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
6040585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6041585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6042585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
6043585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6044585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s5
6045585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
6046585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6047585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
60487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
60507786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
60517786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
60527786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 2, i32 5>
6053585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
60547786266dSMatt Arsenault  ret void
60557786266dSMatt Arsenault}
60567786266dSMatt Arsenault
60577786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_5() {
60587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__3_5:
60597786266dSMatt Arsenault; GFX900:       ; %bb.0:
60607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60627786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
60637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60657786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
60667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60677786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
60687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6069585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
60707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
60727786266dSMatt Arsenault;
60737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__3_5:
60747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
60757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60777786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
60787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
60817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60827786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
60837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6084585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
60857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
60877786266dSMatt Arsenault;
60887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__3_5:
60897786266dSMatt Arsenault; GFX940:       ; %bb.0:
60907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6092585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
60937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
60957786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
60967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6097585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
60987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6099585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
61007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
61027786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
61037786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
61047786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 3, i32 5>
6105585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
61067786266dSMatt Arsenault  ret void
61077786266dSMatt Arsenault}
61087786266dSMatt Arsenault
61097786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_5() {
61107786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__4_5:
61117786266dSMatt Arsenault; GFX900:       ; %bb.0:
61127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6114585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
61157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6117585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
61187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
61207786266dSMatt Arsenault;
61217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__4_5:
61227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
61237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6125585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
61267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6128585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
61297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
61317786266dSMatt Arsenault;
61327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__4_5:
61337786266dSMatt Arsenault; GFX940:       ; %bb.0:
61347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6136585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
61377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6138585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
61397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6140585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
61417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
61437786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
61447786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
61457786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 4, i32 5>
6146585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
61477786266dSMatt Arsenault  ret void
61487786266dSMatt Arsenault}
61497786266dSMatt Arsenault
61507786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_5() {
6151585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__5_5:
61527786266dSMatt Arsenault; GFX9:       ; %bb.0:
61537786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61547786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
61557786266dSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
61567786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6157585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
61587786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6159585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
61607786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
61617786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
61627786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
61637786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
6164585858aeSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 5>
6165585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
6166585858aeSMatt Arsenault  ret void
6167585858aeSMatt Arsenault}
6168585858aeSMatt Arsenault
6169585858aeSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_5() {
6170585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_5:
6171585858aeSMatt Arsenault; GFX900:       ; %bb.0:
6172585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6173585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6174585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
6175585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6176585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s5
6177585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
6178585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6179585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
6180585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6181585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6182585858aeSMatt Arsenault;
6183585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_5:
6184585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
6185585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6186585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6187585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
6188585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6189585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s5
6190585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
6191585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6192585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
6193585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6194585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6195585858aeSMatt Arsenault;
6196585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_5:
6197585858aeSMatt Arsenault; GFX940:       ; %bb.0:
6198585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6199585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6200585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
6201585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6202585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s1
6203585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
6204585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6205585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
6206585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6207585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6208585858aeSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
6209585858aeSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
62107786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 5>
6211585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
62127786266dSMatt Arsenault  ret void
62137786266dSMatt Arsenault}
62147786266dSMatt Arsenault
62157786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_6() {
62167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__u_6:
62177786266dSMatt Arsenault; GFX900:       ; %bb.0:
62187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62207786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
62217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6222585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
62237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6224585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
62257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
62277786266dSMatt Arsenault;
62287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__u_6:
62297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
62307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62327786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
62337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6234585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
62357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6236585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
62377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62387786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
62397786266dSMatt Arsenault;
62407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__u_6:
62417786266dSMatt Arsenault; GFX940:       ; %bb.0:
62427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62447786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
62457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6246585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
62477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6248585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
62497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
62517786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
62527786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
62537786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 poison, i32 6>
6254585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
62557786266dSMatt Arsenault  ret void
62567786266dSMatt Arsenault}
62577786266dSMatt Arsenault
62587786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_6() {
62597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__0_6:
62607786266dSMatt Arsenault; GFX900:       ; %bb.0:
62617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
62647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6266585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
6267585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6268585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
6269585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6270585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
62717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62727786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
62737786266dSMatt Arsenault;
62747786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__0_6:
62757786266dSMatt Arsenault; GFX90A:       ; %bb.0:
62767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62787786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
62797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6281585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
6282585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6283585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
6284585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6285585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
62867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
62887786266dSMatt Arsenault;
62897786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__0_6:
62907786266dSMatt Arsenault; GFX940:       ; %bb.0:
62917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6293585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
6294585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6295585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62967786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
62977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6298585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
62997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6300585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
63017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
63037786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
63047786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
63057786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 0, i32 6>
6306585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
63077786266dSMatt Arsenault  ret void
63087786266dSMatt Arsenault}
63097786266dSMatt Arsenault
63107786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_6() {
63117786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__1_6:
63127786266dSMatt Arsenault; GFX900:       ; %bb.0:
63137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6315585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
6316585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6317585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
63187786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
63197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6320585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
6321585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
63227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6323585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
63247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
63267786266dSMatt Arsenault;
63277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__1_6:
63287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
63297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6331585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
6332585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6333585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
63347786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
63357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6336585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
6337585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
63387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6339585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
63407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63417786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
63427786266dSMatt Arsenault;
63437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__1_6:
63447786266dSMatt Arsenault; GFX940:       ; %bb.0:
63457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
63477786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
63487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
63507786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
63517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6352585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
6353585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s6
63547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6355585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
63567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63577786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
63587786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
63597786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
63607786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 1, i32 6>
6361585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
63627786266dSMatt Arsenault  ret void
63637786266dSMatt Arsenault}
63647786266dSMatt Arsenault
63657786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_6() {
63667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_6:
63677786266dSMatt Arsenault; GFX900:       ; %bb.0:
63687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
63707786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
63717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6373585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
6374585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6375585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s10
6376585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
6377585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6378585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
63797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
63817786266dSMatt Arsenault;
63827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_6:
63837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
63847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
63867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
63877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6389585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
6390585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6391585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s10
6392585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
6393585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6394585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
63957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
63977786266dSMatt Arsenault;
63987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_6:
63997786266dSMatt Arsenault; GFX940:       ; %bb.0:
64007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
64037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6405585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
6406585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6407585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s6
6408585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
6409585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6410585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
64117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
64137786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
64147786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
64157786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 2, i32 6>
6416585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
64177786266dSMatt Arsenault  ret void
64187786266dSMatt Arsenault}
64197786266dSMatt Arsenault
64207786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_6() {
64217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__3_6:
64227786266dSMatt Arsenault; GFX900:       ; %bb.0:
64237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6425585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
6426585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6427585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64287786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
64297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6430585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
6431585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
64327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6433585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
64347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
64367786266dSMatt Arsenault;
64377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__3_6:
64387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
64397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6441585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
6442585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6443585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
64457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6446585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
6447585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
64487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6449585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
64507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
64527786266dSMatt Arsenault;
64537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__3_6:
64547786266dSMatt Arsenault; GFX940:       ; %bb.0:
64557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
64587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64607786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
64617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6462585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
6463585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s6
64647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6465585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
64667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
64687786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
64697786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
64707786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 3, i32 6>
6471585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
64727786266dSMatt Arsenault  ret void
64737786266dSMatt Arsenault}
64747786266dSMatt Arsenault
64757786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_6() {
6476585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__4_6:
6477585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6478585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6479585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6480585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
6481585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6482585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
6483585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6484585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
6485585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6486585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
64877786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
64887786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
64897786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 4, i32 6>
6490585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
64917786266dSMatt Arsenault  ret void
64927786266dSMatt Arsenault}
64937786266dSMatt Arsenault
64947786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_6() {
64957786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__5_6:
64967786266dSMatt Arsenault; GFX900:       ; %bb.0:
64977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64997786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
65007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6501585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
6502585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
65037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6504585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
65057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
65077786266dSMatt Arsenault;
65087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__5_6:
65097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
65107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65127786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
65137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6514585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
6515585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
65167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6517585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
65187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
65207786266dSMatt Arsenault;
65217786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__5_6:
65227786266dSMatt Arsenault; GFX940:       ; %bb.0:
65237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
65257786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
65267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6527585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
6528585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
65297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6530585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
65317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
65337786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
65347786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
65357786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 6>
6536585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
65377786266dSMatt Arsenault  ret void
65387786266dSMatt Arsenault}
65397786266dSMatt Arsenault
65407786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_6() {
6541585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_6:
6542585858aeSMatt Arsenault; GFX900:       ; %bb.0:
6543585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6544585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6545585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
6546585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6547585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s6
6548585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
6549585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6550585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
6551585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6552585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6553585858aeSMatt Arsenault;
6554585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_6:
6555585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
6556585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6557585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6558585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
6559585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6560585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s6
6561585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
6562585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6563585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
6564585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6565585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6566585858aeSMatt Arsenault;
6567585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_6:
6568585858aeSMatt Arsenault; GFX940:       ; %bb.0:
6569585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6570585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6571585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
6572585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6573585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s2
6574585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
6575585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6576585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
6577585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6578585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
65797786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
65807786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
65817786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 6>
6582585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
65837786266dSMatt Arsenault  ret void
65847786266dSMatt Arsenault}
65857786266dSMatt Arsenault
65867786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__u_7() {
65877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__u_7:
65887786266dSMatt Arsenault; GFX900:       ; %bb.0:
65897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6591585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
65927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6593585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
65947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6595585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
65967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
65987786266dSMatt Arsenault;
65997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__u_7:
66007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
66017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6603585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
66047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6605585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
66067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6607585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
66087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
66107786266dSMatt Arsenault;
66117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__u_7:
66127786266dSMatt Arsenault; GFX940:       ; %bb.0:
66137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6615585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
66167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6617585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
66187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6619585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
66207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
66227786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
66237786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
66247786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 poison, i32 7>
6625585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
66267786266dSMatt Arsenault  ret void
66277786266dSMatt Arsenault}
66287786266dSMatt Arsenault
66297786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__0_7() {
66307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__0_7:
66317786266dSMatt Arsenault; GFX900:       ; %bb.0:
66327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66347786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
66357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6637585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
6638585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6639585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
6640585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6641585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
66427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
66447786266dSMatt Arsenault;
66457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__0_7:
66467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
66477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66497786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
66507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6652585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
6653585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6654585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
6655585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6656585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
66577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
66597786266dSMatt Arsenault;
66607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__0_7:
66617786266dSMatt Arsenault; GFX940:       ; %bb.0:
66627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6664585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
6665585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6666585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
66677786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
66687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6669585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
66707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6671585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
66727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
66747786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
66757786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
66767786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 0, i32 7>
6677585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
66787786266dSMatt Arsenault  ret void
66797786266dSMatt Arsenault}
66807786266dSMatt Arsenault
66817786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__1_7() {
66827786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__1_7:
66837786266dSMatt Arsenault; GFX900:       ; %bb.0:
66847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66867786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
66877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66897786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
66907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66917786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
6692585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[10:11]
66937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6694585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
66957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
66977786266dSMatt Arsenault;
66987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__1_7:
66997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
67007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
67037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67057786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
67067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67077786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
6708585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[10:11]
67097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6710585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
67117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
67137786266dSMatt Arsenault;
67147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__1_7:
67157786266dSMatt Arsenault; GFX940:       ; %bb.0:
67167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6718585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
67197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67217786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
67227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6723585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s6, s1
6724585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[6:7]
67257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6726585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
67277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
67297786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
67307786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
67317786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 1, i32 7>
6732585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
67337786266dSMatt Arsenault  ret void
67347786266dSMatt Arsenault}
67357786266dSMatt Arsenault
67367786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__2_7() {
67377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__2_7:
67387786266dSMatt Arsenault; GFX900:       ; %bb.0:
67397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67417786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
67427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6744585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
6745585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6746585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s7, s11
6747585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
6748585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6749585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
67507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
67527786266dSMatt Arsenault;
67537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__2_7:
67547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
67557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67577786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
67587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6760585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
6761585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6762585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s7, s11
6763585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
6764585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6765585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
67667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
67687786266dSMatt Arsenault;
67697786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__2_7:
67707786266dSMatt Arsenault; GFX940:       ; %bb.0:
67717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67737786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
67747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6776585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
6777585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6778585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s3, s7
6779585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
6780585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6781585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
67827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
67847786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
67857786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
67867786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 2, i32 7>
6787585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
67887786266dSMatt Arsenault  ret void
67897786266dSMatt Arsenault}
67907786266dSMatt Arsenault
67917786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__3_7() {
67927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__3_7:
67937786266dSMatt Arsenault; GFX900:       ; %bb.0:
67947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67967786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
67977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67997786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
68007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68017786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s7
6802585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[10:11]
68037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6804585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
68057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
68077786266dSMatt Arsenault;
68087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__3_7:
68097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68127786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
68137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68157786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
68167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68177786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s7
6818585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[10:11]
68197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6820585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
68217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
68237786266dSMatt Arsenault;
68247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__3_7:
68257786266dSMatt Arsenault; GFX940:       ; %bb.0:
68267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6828585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
68297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
68307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
68317786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
68327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6833585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s6, s3
6834585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[6:7]
68357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6836585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
68377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
68387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
68397786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
68407786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
68417786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 3, i32 7>
6842585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
68437786266dSMatt Arsenault  ret void
68447786266dSMatt Arsenault}
68457786266dSMatt Arsenault
68467786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__4_7() {
6847585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2f32_v4f32__4_7:
68487786266dSMatt Arsenault; GFX9:       ; %bb.0:
68497786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68507786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
68517786266dSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
68527786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6853585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
68547786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6855585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
68567786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
68577786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
68587786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
68597786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
6860585858aeSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 4, i32 7>
6861585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
6862585858aeSMatt Arsenault  ret void
6863585858aeSMatt Arsenault}
6864585858aeSMatt Arsenault
6865585858aeSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__5_7() {
6866585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__5_7:
6867585858aeSMatt Arsenault; GFX900:       ; %bb.0:
6868585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6869585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6870585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
6871585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6872585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s6, s5
6873585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
6874585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6875585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
6876585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6877585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6878585858aeSMatt Arsenault;
6879585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__5_7:
6880585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
6881585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6882585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6883585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
6884585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6885585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s6, s5
6886585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
6887585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6888585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
6889585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6890585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6891585858aeSMatt Arsenault;
6892585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__5_7:
6893585858aeSMatt Arsenault; GFX940:       ; %bb.0:
6894585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6895585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6896585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
6897585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6898585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, s1
6899585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
6900585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6901585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
6902585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6903585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6904585858aeSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
6905585858aeSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
69067786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 5, i32 7>
6907585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
69087786266dSMatt Arsenault  ret void
69097786266dSMatt Arsenault}
69107786266dSMatt Arsenault
69117786266dSMatt Arsenaultdefine void @s_shuffle_v2f32_v4f32__6_7() {
69127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2f32_v4f32__6_7:
69137786266dSMatt Arsenault; GFX900:       ; %bb.0:
69147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6916585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
69177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6918585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b64 s[8:9], s[6:7]
69197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6920585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
69217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69227786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
69237786266dSMatt Arsenault;
69247786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2f32_v4f32__6_7:
69257786266dSMatt Arsenault; GFX90A:       ; %bb.0:
69267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6928585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
69297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6930585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b64 s[8:9], s[6:7]
69317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6932585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
69337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69347786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
69357786266dSMatt Arsenault;
69367786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2f32_v4f32__6_7:
69377786266dSMatt Arsenault; GFX940:       ; %bb.0:
69387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6940585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
69417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6942585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b64 s[8:9], s[2:3]
69437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6944585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
69457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
69477786266dSMatt Arsenault  %vec0 = call <4 x float> asm "; def $0", "=s"()
69487786266dSMatt Arsenault  %vec1 = call <4 x float> asm "; def $0", "=s"()
69497786266dSMatt Arsenault  %shuf = shufflevector <4 x float> %vec0, <4 x float> %vec1, <2 x i32> <i32 6, i32 7>
6950585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x float> %shuf)
69517786266dSMatt Arsenault  ret void
69527786266dSMatt Arsenault}
69537786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
69547786266dSMatt Arsenault; GFX90APLUS: {{.*}}
6955