xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v2i16.v4i16.ll (revision 585858aeb6247b3892218edb9d353c63f1c33186)
17786266dSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
27786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s
37786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s
47786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s
57786266dSMatt Arsenault
67786266dSMatt Arsenault
77786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v4i16__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 i16> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> poison
147786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__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 v2, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, 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_v2i16_v4i16__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 v2, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, 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_v2i16_v4i16__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 v2, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, 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 i16> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 poison>
537786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16
667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
697786266dSMatt Arsenault;
707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_u:
717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
777786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16
787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
817786266dSMatt Arsenault;
827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_u:
837786266dSMatt Arsenault; GFX940:       ; %bb.0:
847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
897786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, s0, v0, 16
907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
937786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
947786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 poison>
957786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
967786266dSMatt Arsenault  ret void
977786266dSMatt Arsenault}
987786266dSMatt Arsenault
997786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_u(ptr addrspace(1) inreg %ptr) {
1007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_u:
1017786266dSMatt Arsenault; GFX900:       ; %bb.0:
1027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
1067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1077786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]
1087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1097786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1107786266dSMatt Arsenault;
1117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_u:
1127786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
1157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]
1197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1217786266dSMatt Arsenault;
1227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_u:
1237786266dSMatt Arsenault; GFX940:       ; %bb.0:
1247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
1267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1297786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v1, s[0:1] sc0 sc1
1307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1327786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
1337786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 poison>
1347786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
1357786266dSMatt Arsenault  ret void
1367786266dSMatt Arsenault}
1377786266dSMatt Arsenault
1387786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_u(ptr addrspace(1) inreg %ptr) {
1397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_u:
1407786266dSMatt Arsenault; GFX900:       ; %bb.0:
1417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1437786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
1447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1467786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16
1477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
1487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1507786266dSMatt Arsenault;
1517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_u:
1527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
1587786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16
1597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
1607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1627786266dSMatt Arsenault;
1637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_u:
1647786266dSMatt Arsenault; GFX940:       ; %bb.0:
1657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1677786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
1707786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, s0, v1, 16
1717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
1727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1747786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
1757786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 poison>
1767786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
1777786266dSMatt Arsenault  ret void
1787786266dSMatt Arsenault}
1797786266dSMatt Arsenault
1807786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_u(ptr addrspace(1) inreg %ptr) {
1817786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v4i16__4_u:
1827786266dSMatt Arsenault; GFX9:       ; %bb.0:
1837786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1847786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1857786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
1867786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 poison>
1877786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
1887786266dSMatt Arsenault  ret void
1897786266dSMatt Arsenault}
1907786266dSMatt Arsenault
1917786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_u(ptr addrspace(1) inreg %ptr) {
1927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_u:
1937786266dSMatt Arsenault; GFX900:       ; %bb.0:
1947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
1977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1997786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16
2007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
2017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2037786266dSMatt Arsenault;
2047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_u:
2057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
2097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
2117786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16
2127786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
2137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2157786266dSMatt Arsenault;
2167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_u:
2177786266dSMatt Arsenault; GFX940:       ; %bb.0:
2187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2207786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
2217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
2237786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, s0, v0, 16
2247786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
2257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2277786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
2287786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
2297786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 poison>
2307786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
2317786266dSMatt Arsenault  ret void
2327786266dSMatt Arsenault}
2337786266dSMatt Arsenault
2347786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_u(ptr addrspace(1) inreg %ptr) {
2357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_u:
2367786266dSMatt Arsenault; GFX900:       ; %bb.0:
2377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
2397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2407786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
2417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]
2437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2457786266dSMatt Arsenault;
2467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_u:
2477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
2507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
2527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2537786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]
2547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2567786266dSMatt Arsenault;
2577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_u:
2587786266dSMatt Arsenault; GFX940:       ; %bb.0:
2597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
2617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
2637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v1, s[0:1] sc0 sc1
2657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2677786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
2687786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
2697786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 poison>
2707786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
2717786266dSMatt Arsenault  ret void
2727786266dSMatt Arsenault}
2737786266dSMatt Arsenault
2747786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_u(ptr addrspace(1) inreg %ptr) {
2757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_u:
2767786266dSMatt Arsenault; GFX900:       ; %bb.0:
2777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
2807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
2827786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16
2837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
2847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2867786266dSMatt Arsenault;
2877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_u:
2887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
2927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
2947786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16
2957786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
2967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2987786266dSMatt Arsenault;
2997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_u:
3007786266dSMatt Arsenault; GFX940:       ; %bb.0:
3017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3037786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
3067786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, s0, v1, 16
3077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
3087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3107786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
3117786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
3127786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 poison>
3137786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
3147786266dSMatt Arsenault  ret void
3157786266dSMatt Arsenault}
3167786266dSMatt Arsenault
3177786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_0(ptr addrspace(1) inreg %ptr) {
3187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_0:
3197786266dSMatt Arsenault; GFX900:       ; %bb.0:
3207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
3257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3267786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
3277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3287786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 16
3297786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
3307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3327786266dSMatt Arsenault;
3337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_0:
3347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3417786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
3427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3437786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 16
3447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
3457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3477786266dSMatt Arsenault;
3487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_0:
3497786266dSMatt Arsenault; GFX940:       ; %bb.0:
3507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
3577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3587786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
3597786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v0, v3, 16
3607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
3617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3637786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
3647786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
3657786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 0>
3667786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
3677786266dSMatt Arsenault  ret void
3687786266dSMatt Arsenault}
3697786266dSMatt Arsenault
3707786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_1(ptr addrspace(1) inreg %ptr) {
3717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_1:
3727786266dSMatt Arsenault; GFX900:       ; %bb.0:
3737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3777786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
3787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
3797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
3817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3827786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s4
3837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
3847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3867786266dSMatt Arsenault;
3877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_1:
3887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3937786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
3947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
3977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3987786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s4
3997786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
4007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4027786266dSMatt Arsenault;
4037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_1:
4047786266dSMatt Arsenault; GFX940:       ; %bb.0:
4057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4077786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
4087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4097786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
4107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4127786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
4137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4147786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4157786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v3, s2
4167786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
4177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4197786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
4207786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
4217786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 1>
4227786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
4237786266dSMatt Arsenault  ret void
4247786266dSMatt Arsenault}
4257786266dSMatt Arsenault
4267786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_2(ptr addrspace(1) inreg %ptr) {
4277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_2:
4287786266dSMatt Arsenault; GFX900:       ; %bb.0:
4297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4317786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
4327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4357786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
4367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4377786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 16
4387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
4397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4417786266dSMatt Arsenault;
4427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_2:
4437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
4477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4507786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
4517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4527786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 16
4537786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
4547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4567786266dSMatt Arsenault;
4577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_2:
4587786266dSMatt Arsenault; GFX940:       ; %bb.0:
4597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4617786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
4627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4657786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
4667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4677786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4687786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v1, v3, 16
4697786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
4707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4727786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
4737786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
4747786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 2>
4757786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
4767786266dSMatt Arsenault  ret void
4777786266dSMatt Arsenault}
4787786266dSMatt Arsenault
4797786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_3(ptr addrspace(1) inreg %ptr) {
4807786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_3:
4817786266dSMatt Arsenault; GFX900:       ; %bb.0:
4827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4847786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
4857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4867786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
4877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4897786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
4907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4917786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s4
4927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
4937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4957786266dSMatt Arsenault;
4967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_3:
4977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5027786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
5037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5057786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
5067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5077786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s4
5087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
5097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5117786266dSMatt Arsenault;
5127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_3:
5137786266dSMatt Arsenault; GFX940:       ; %bb.0:
5147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5187786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
5197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
5227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5237786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
5247786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v3, s2
5257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
5267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5287786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
5297786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
5307786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 3>
5317786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
5327786266dSMatt Arsenault  ret void
5337786266dSMatt Arsenault}
5347786266dSMatt Arsenault
5357786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_4(ptr addrspace(1) inreg %ptr) {
5367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_4:
5377786266dSMatt Arsenault; GFX900:       ; %bb.0:
5387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5407786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
5437786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16
5447786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
5457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5477786266dSMatt Arsenault;
5487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_4:
5497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5527786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
5557786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 16
5567786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
5577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5597786266dSMatt Arsenault;
5607786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_4:
5617786266dSMatt Arsenault; GFX940:       ; %bb.0:
5627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5647786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
5677786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v0, v1, 16
5687786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
5697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5717786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
5727786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
5737786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 4>
5747786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
5757786266dSMatt Arsenault  ret void
5767786266dSMatt Arsenault}
5777786266dSMatt Arsenault
5787786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_5(ptr addrspace(1) inreg %ptr) {
5797786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_5:
5807786266dSMatt Arsenault; GFX900:       ; %bb.0:
5817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5857786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
5867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
5877786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4
5887786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
5897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5907786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5917786266dSMatt Arsenault;
5927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_5:
5937786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5987786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
5997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
6007786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4
6017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
6027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6047786266dSMatt Arsenault;
6057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_5:
6067786266dSMatt Arsenault; GFX940:       ; %bb.0:
6077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
6107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6117786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
6127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
6137786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v1, s2
6147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
6157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6177786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
6187786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
6197786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 5>
6207786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
6217786266dSMatt Arsenault  ret void
6227786266dSMatt Arsenault}
6237786266dSMatt Arsenault
6247786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_6(ptr addrspace(1) inreg %ptr) {
6257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_6:
6267786266dSMatt Arsenault; GFX900:       ; %bb.0:
6277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
6307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
6327786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 16
6337786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
6347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6367786266dSMatt Arsenault;
6377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_6:
6387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6417786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
6427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
6447786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 16
6457786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
6467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6487786266dSMatt Arsenault;
6497786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_6:
6507786266dSMatt Arsenault; GFX940:       ; %bb.0:
6517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6537786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
6547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
6567786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v1, v1, 16
6577786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
6587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6597786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6607786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
6617786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
6627786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 6>
6637786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
6647786266dSMatt Arsenault  ret void
6657786266dSMatt Arsenault}
6667786266dSMatt Arsenault
6677786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__7_7(ptr addrspace(1) inreg %ptr) {
6687786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_7:
6697786266dSMatt Arsenault; GFX900:       ; %bb.0:
6707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6727786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
6737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6747786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
6757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
6767786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4
6777786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
6787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6797786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6807786266dSMatt Arsenault;
6817786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_7:
6827786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
6867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6877786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
6887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
6897786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4
6907786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
6917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6937786266dSMatt Arsenault;
6947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__7_7:
6957786266dSMatt Arsenault; GFX940:       ; %bb.0:
6967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
6997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7007786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
7017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
7027786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v1, s2
7037786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
7047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7067786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
7077786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
7087786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 7>
7097786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
7107786266dSMatt Arsenault  ret void
7117786266dSMatt Arsenault}
7127786266dSMatt Arsenault
7137786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_0(ptr addrspace(1) inreg %ptr) {
7147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_0:
7157786266dSMatt Arsenault; GFX900:       ; %bb.0:
7167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
7197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
7217786266dSMatt Arsenault; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
7227786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
7237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7247786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7257786266dSMatt Arsenault;
7267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_0:
7277786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7307786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
7337786266dSMatt Arsenault; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
7347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
7357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7377786266dSMatt Arsenault;
7387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_0:
7397786266dSMatt Arsenault; GFX940:       ; %bb.0:
7407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
7457786266dSMatt Arsenault; GFX940-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
7467786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
7477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7497786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
7507786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 0>
7517786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
7527786266dSMatt Arsenault  ret void
7537786266dSMatt Arsenault}
7547786266dSMatt Arsenault
7557786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_0(ptr addrspace(1) inreg %ptr) {
7567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_0:
7577786266dSMatt Arsenault; GFX900:       ; %bb.0:
7587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7607786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
7617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7627786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
7637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
7647786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4
7657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
7667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7687786266dSMatt Arsenault;
7697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_0:
7707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7757786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
7767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
7777786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4
7787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
7797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7817786266dSMatt Arsenault;
7827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_0:
7837786266dSMatt Arsenault; GFX940:       ; %bb.0:
7847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7887786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
7897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
7907786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v0, s2
7917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
7927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7947786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
7957786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> zeroinitializer
7967786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
7977786266dSMatt Arsenault  ret void
7987786266dSMatt Arsenault}
7997786266dSMatt Arsenault
8007786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_0(ptr addrspace(1) inreg %ptr) {
8017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_0:
8027786266dSMatt Arsenault; GFX900:       ; %bb.0:
8037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
8067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
8087786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 16
8097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
8107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8127786266dSMatt Arsenault;
8137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_0:
8147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
8187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
8207786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 16
8217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
8227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8247786266dSMatt Arsenault;
8257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_0:
8267786266dSMatt Arsenault; GFX940:       ; %bb.0:
8277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
8307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
8327786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v0, v0, 16
8337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
8347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8367786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
8377786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 0>
8387786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
8397786266dSMatt Arsenault  ret void
8407786266dSMatt Arsenault}
8417786266dSMatt Arsenault
8427786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_0(ptr addrspace(1) inreg %ptr) {
8437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_0:
8447786266dSMatt Arsenault; GFX900:       ; %bb.0:
8457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
8487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8497786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
8507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
8517786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4
8527786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
8537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8547786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8557786266dSMatt Arsenault;
8567786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_0:
8577786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8587786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
8617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8627786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
8637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
8647786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4
8657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
8667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8687786266dSMatt Arsenault;
8697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_0:
8707786266dSMatt Arsenault; GFX940:       ; %bb.0:
8717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
8747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8757786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
8767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
8777786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v1, s2
8787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
8797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8817786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
8827786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 0>
8837786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
8847786266dSMatt Arsenault  ret void
8857786266dSMatt Arsenault}
8867786266dSMatt Arsenault
8877786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_0(ptr addrspace(1) inreg %ptr) {
8887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_0:
8897786266dSMatt Arsenault; GFX900:       ; %bb.0:
8907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
8937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
8957786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16
8967786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
8977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8997786266dSMatt Arsenault;
9007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_0:
9017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
9057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
9077786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 16
9087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
9097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9117786266dSMatt Arsenault;
9127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_0:
9137786266dSMatt Arsenault; GFX940:       ; %bb.0:
9147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
9177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
9197786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v0, v1, 16
9207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
9217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9237786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
9247786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 0>
9257786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
9267786266dSMatt Arsenault  ret void
9277786266dSMatt Arsenault}
9287786266dSMatt Arsenault
9297786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_0(ptr addrspace(1) inreg %ptr) {
9307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_0:
9317786266dSMatt Arsenault; GFX900:       ; %bb.0:
9327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
9357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
9377786266dSMatt Arsenault; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
9387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
9397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9417786266dSMatt Arsenault;
9427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_0:
9437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
9477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
9497786266dSMatt Arsenault; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
9507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
9517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9537786266dSMatt Arsenault;
9547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_0:
9557786266dSMatt Arsenault; GFX940:       ; %bb.0:
9567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
9597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
9617786266dSMatt Arsenault; GFX940-NEXT:    v_lshlrev_b32_e32 v0, 16, v0
9627786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
9637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9657786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
9667786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 0>
9677786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
9687786266dSMatt Arsenault  ret void
9697786266dSMatt Arsenault}
9707786266dSMatt Arsenault
9717786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_0(ptr addrspace(1) inreg %ptr) {
9727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_0:
9737786266dSMatt Arsenault; GFX900:       ; %bb.0:
9747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9767786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
9777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
9797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
9817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9827786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16
9837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
9847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9867786266dSMatt Arsenault;
9877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_0:
9887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
9927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
9947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
9967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9977786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v2, 16
9987786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
9997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10017786266dSMatt Arsenault;
10027786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_0:
10037786266dSMatt Arsenault; GFX940:       ; %bb.0:
10047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10067786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
10077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
10097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
10117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10127786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10137786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v0, v2, 16
10147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
10157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10177786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
10187786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
10197786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 0>
10207786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
10217786266dSMatt Arsenault  ret void
10227786266dSMatt Arsenault}
10237786266dSMatt Arsenault
10247786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_0(ptr addrspace(1) inreg %ptr) {
10257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_0:
10267786266dSMatt Arsenault; GFX900:       ; %bb.0:
10277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
10307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10317786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
10327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
10337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
10357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10367786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s4
10377786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
10387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10407786266dSMatt Arsenault;
10417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_0:
10427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
10467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10477786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
10487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10507786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
10517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10527786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s4
10537786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
10547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10567786266dSMatt Arsenault;
10577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_0:
10587786266dSMatt Arsenault; GFX940:       ; %bb.0:
10597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10617786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
10627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10637786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
10647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
10657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
10677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10687786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10697786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v3, s2
10707786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
10717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10737786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
10747786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
10757786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 0>
10767786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
10777786266dSMatt Arsenault  ret void
10787786266dSMatt Arsenault}
10797786266dSMatt Arsenault
10807786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_1(ptr addrspace(1) inreg %ptr) {
10817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_1:
10827786266dSMatt Arsenault; GFX900:       ; %bb.0:
10837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
10857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
10877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10887786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
10897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10907786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10917786266dSMatt Arsenault;
10927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_1:
10937786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
10967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10977786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
10987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10997786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
11007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11027786266dSMatt Arsenault;
11037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_1:
11047786266dSMatt Arsenault; GFX940:       ; %bb.0:
11057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
11077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11087786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
11097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11107786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
11117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11137786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
11147786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 1>
11157786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
11167786266dSMatt Arsenault  ret void
11177786266dSMatt Arsenault}
11187786266dSMatt Arsenault
11197786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_1(ptr addrspace(1) inreg %ptr) {
11207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_1:
11217786266dSMatt Arsenault; GFX900:       ; %bb.0:
11227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
11247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
11267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
11287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11307786266dSMatt Arsenault;
11317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_1:
11327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
11357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11367786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
11377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
11397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11417786266dSMatt Arsenault;
11427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_1:
11437786266dSMatt Arsenault; GFX940:       ; %bb.0:
11447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
11467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
11487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
11507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11527786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
11537786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 1>
11547786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
11557786266dSMatt Arsenault  ret void
11567786266dSMatt Arsenault}
11577786266dSMatt Arsenault
11587786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_1(ptr addrspace(1) inreg %ptr) {
11597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_1:
11607786266dSMatt Arsenault; GFX900:       ; %bb.0:
11617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
11647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11657786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
11667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
11677786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4
11687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
11697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11717786266dSMatt Arsenault;
11727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_1:
11737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11767786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
11777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11787786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
11797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
11807786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4
11817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
11827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11847786266dSMatt Arsenault;
11857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_1:
11867786266dSMatt Arsenault; GFX940:       ; %bb.0:
11877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
11907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11917786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
11927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
11937786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v0, s2
11947786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
11957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11977786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
11987786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 1>
11997786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
12007786266dSMatt Arsenault  ret void
12017786266dSMatt Arsenault}
12027786266dSMatt Arsenault
12037786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_1(ptr addrspace(1) inreg %ptr) {
12047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_1:
12057786266dSMatt Arsenault; GFX900:       ; %bb.0:
12067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
12097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12107786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
12117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
12127786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v0
12137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
12147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12167786266dSMatt Arsenault;
12177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_1:
12187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
12227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12237786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
12247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
12257786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v0
12267786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
12277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12297786266dSMatt Arsenault;
12307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_1:
12317786266dSMatt Arsenault; GFX940:       ; %bb.0:
12327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
12357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12367786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
12377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
12387786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v1, v0
12397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
12407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12427786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
12437786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 1>
12447786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
12457786266dSMatt Arsenault  ret void
12467786266dSMatt Arsenault}
12477786266dSMatt Arsenault
12487786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_1(ptr addrspace(1) inreg %ptr) {
12497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_1:
12507786266dSMatt Arsenault; GFX900:       ; %bb.0:
12517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
12547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12557786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
12567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
12577786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4
12587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
12597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12617786266dSMatt Arsenault;
12627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_1:
12637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
12677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12687786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
12697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
12707786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4
12717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
12727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12747786266dSMatt Arsenault;
12757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_1:
12767786266dSMatt Arsenault; GFX940:       ; %bb.0:
12777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
12807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12817786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
12827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
12837786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v1, s2
12847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
12857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12877786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
12887786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 1>
12897786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
12907786266dSMatt Arsenault  ret void
12917786266dSMatt Arsenault}
12927786266dSMatt Arsenault
12937786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_1(ptr addrspace(1) inreg %ptr) {
12947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_1:
12957786266dSMatt Arsenault; GFX900:       ; %bb.0:
12967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
12987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
13007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
13027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13047786266dSMatt Arsenault;
13057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_1:
13067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
13097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
13117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13127786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
13137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13157786266dSMatt Arsenault;
13167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_1:
13177786266dSMatt Arsenault; GFX940:       ; %bb.0:
13187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
13207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
13227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13237786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
13247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13267786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
13277786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 1>
13287786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
13297786266dSMatt Arsenault  ret void
13307786266dSMatt Arsenault}
13317786266dSMatt Arsenault
13327786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_1(ptr addrspace(1) inreg %ptr) {
13337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_1:
13347786266dSMatt Arsenault; GFX900:       ; %bb.0:
13357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13377786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
13387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13397786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
13407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
13417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
13437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13447786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4
13457786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
13467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13487786266dSMatt Arsenault;
13497786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_1:
13507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13537786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
13547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13557786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
13567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
13577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
13597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13607786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v2, s4
13617786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
13627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13647786266dSMatt Arsenault;
13657786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_1:
13667786266dSMatt Arsenault; GFX940:       ; %bb.0:
13677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13697786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
13707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13717786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
13727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
13737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
13757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13767786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
13777786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v2, s2
13787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
13797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13817786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
13827786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
13837786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 1>
13847786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
13857786266dSMatt Arsenault  ret void
13867786266dSMatt Arsenault}
13877786266dSMatt Arsenault
13887786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_1(ptr addrspace(1) inreg %ptr) {
13897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_1:
13907786266dSMatt Arsenault; GFX900:       ; %bb.0:
13917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
13947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13957786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
13967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
13977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
13997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14007786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v2, v0
14017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
14027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14047786266dSMatt Arsenault;
14057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_1:
14067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
14107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14117786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
14127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
14157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14167786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v0
14177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
14187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14207786266dSMatt Arsenault;
14217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_1:
14227786266dSMatt Arsenault; GFX940:       ; %bb.0:
14237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
14267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14277786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
14287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
14317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14327786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14337786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v3, v0
14347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
14357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14377786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
14387786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
14397786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 1>
14407786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
14417786266dSMatt Arsenault  ret void
14427786266dSMatt Arsenault}
14437786266dSMatt Arsenault
14447786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_2(ptr addrspace(1) inreg %ptr) {
14457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_2:
14467786266dSMatt Arsenault; GFX900:       ; %bb.0:
14477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
14507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
14527786266dSMatt Arsenault; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
14537786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
14547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14567786266dSMatt Arsenault;
14577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_2:
14587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
14627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
14647786266dSMatt Arsenault; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
14657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
14667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14687786266dSMatt Arsenault;
14697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_2:
14707786266dSMatt Arsenault; GFX940:       ; %bb.0:
14717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
14747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
14767786266dSMatt Arsenault; GFX940-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
14777786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
14787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14807786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
14817786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 2>
14827786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
14837786266dSMatt Arsenault  ret void
14847786266dSMatt Arsenault}
14857786266dSMatt Arsenault
14867786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_2(ptr addrspace(1) inreg %ptr) {
14877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_2:
14887786266dSMatt Arsenault; GFX900:       ; %bb.0:
14897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14917786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
14927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14937786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
14947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
14957786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s4
14967786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
14977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14997786266dSMatt Arsenault;
15007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_2:
15017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
15057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15067786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
15077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
15087786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s4
15097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
15107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15127786266dSMatt Arsenault;
15137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_2:
15147786266dSMatt Arsenault; GFX940:       ; %bb.0:
15157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
15187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15197786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
15207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
15217786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v0, s2
15227786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
15237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15247786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15257786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
15267786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 2>
15277786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
15287786266dSMatt Arsenault  ret void
15297786266dSMatt Arsenault}
15307786266dSMatt Arsenault
15317786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_2(ptr addrspace(1) inreg %ptr) {
15327786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_2:
15337786266dSMatt Arsenault; GFX900:       ; %bb.0:
15347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
15377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
15397786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 16
15407786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
15417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15437786266dSMatt Arsenault;
15447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_2:
15457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15487786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
15497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
15517786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 16
15527786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
15537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15557786266dSMatt Arsenault;
15567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_2:
15577786266dSMatt Arsenault; GFX940:       ; %bb.0:
15587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
15617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
15637786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v1, v0, 16
15647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
15657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15677786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
15687786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 2>
15697786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
15707786266dSMatt Arsenault  ret void
15717786266dSMatt Arsenault}
15727786266dSMatt Arsenault
15737786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_2(ptr addrspace(1) inreg %ptr) {
15747786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_2:
15757786266dSMatt Arsenault; GFX900:       ; %bb.0:
15767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15787786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
15797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15807786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
15817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
15827786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4
15837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
15847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15867786266dSMatt Arsenault;
15877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_2:
15887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
15927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15937786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
15947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
15957786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4
15967786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
15977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15997786266dSMatt Arsenault;
16007786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_2:
16017786266dSMatt Arsenault; GFX940:       ; %bb.0:
16027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
16057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16067786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
16077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
16087786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v1, s2
16097786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
16107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16127786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
16137786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 2>
16147786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
16157786266dSMatt Arsenault  ret void
16167786266dSMatt Arsenault}
16177786266dSMatt Arsenault
16187786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_2(ptr addrspace(1) inreg %ptr) {
16197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_2:
16207786266dSMatt Arsenault; GFX900:       ; %bb.0:
16217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16237786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
16247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
16267786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 16
16277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
16287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16307786266dSMatt Arsenault;
16317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_2:
16327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
16367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
16387786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 16
16397786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
16407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16417786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16427786266dSMatt Arsenault;
16437786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_2:
16447786266dSMatt Arsenault; GFX940:       ; %bb.0:
16457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16477786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
16487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
16507786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v1, v1, 16
16517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
16527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16547786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
16557786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 2>
16567786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
16577786266dSMatt Arsenault  ret void
16587786266dSMatt Arsenault}
16597786266dSMatt Arsenault
16607786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_2(ptr addrspace(1) inreg %ptr) {
16617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_2:
16627786266dSMatt Arsenault; GFX900:       ; %bb.0:
16637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
16667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
16687786266dSMatt Arsenault; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
16697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
16707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16727786266dSMatt Arsenault;
16737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_2:
16747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
16787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
16807786266dSMatt Arsenault; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
16817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
16827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16847786266dSMatt Arsenault;
16857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_2:
16867786266dSMatt Arsenault; GFX940:       ; %bb.0:
16877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
16907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
16927786266dSMatt Arsenault; GFX940-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
16937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
16947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16967786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
16977786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 2>
16987786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
16997786266dSMatt Arsenault  ret void
17007786266dSMatt Arsenault}
17017786266dSMatt Arsenault
17027786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_2(ptr addrspace(1) inreg %ptr) {
17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_2:
17047786266dSMatt Arsenault; GFX900:       ; %bb.0:
17057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
17087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
17107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
17127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17137786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v1, v2, 16
17147786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
17157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17177786266dSMatt Arsenault;
17187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_2:
17197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
17237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
17277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17287786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v2, 16
17297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
17307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17327786266dSMatt Arsenault;
17337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_2:
17347786266dSMatt Arsenault; GFX940:       ; %bb.0:
17357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
17387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
17427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17437786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17447786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v1, v2, 16
17457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
17467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17487786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
17497786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
17507786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 2>
17517786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
17527786266dSMatt Arsenault  ret void
17537786266dSMatt Arsenault}
17547786266dSMatt Arsenault
17557786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_2(ptr addrspace(1) inreg %ptr) {
17567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_2:
17577786266dSMatt Arsenault; GFX900:       ; %bb.0:
17587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17607786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
17617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17627786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
17637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
17647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
17667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17677786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s4
17687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
17697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17717786266dSMatt Arsenault;
17727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_2:
17737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17767786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
17777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17787786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
17797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
17827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17837786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s4
17847786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
17857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17877786266dSMatt Arsenault;
17887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_2:
17897786266dSMatt Arsenault; GFX940:       ; %bb.0:
17907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17927786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
17937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17947786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
17957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
17987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17997786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18007786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v3, s2
18017786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
18027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18047786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
18057786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
18067786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 2>
18077786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
18087786266dSMatt Arsenault  ret void
18097786266dSMatt Arsenault}
18107786266dSMatt Arsenault
18117786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_3(ptr addrspace(1) inreg %ptr) {
18127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_3:
18137786266dSMatt Arsenault; GFX900:       ; %bb.0:
18147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
18167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18177786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
18187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]
18207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18227786266dSMatt Arsenault;
18237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_3:
18247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
18277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
18297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v1, 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_v2i16_v4i16__u_3:
18357786266dSMatt Arsenault; GFX940:       ; %bb.0:
18367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
18387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
18407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18417786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v1, s[0:1] sc0 sc1
18427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18447786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
18457786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 3>
18467786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
18477786266dSMatt Arsenault  ret void
18487786266dSMatt Arsenault}
18497786266dSMatt Arsenault
18507786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_3(ptr addrspace(1) inreg %ptr) {
18517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_3:
18527786266dSMatt Arsenault; GFX900:       ; %bb.0:
18537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
18567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18577786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
18587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
18597786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v1
18607786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, 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_v2i16_v4i16__0_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:1]
18697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18707786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
18717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
18727786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v1
18737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
18747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18767786266dSMatt Arsenault;
18777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_3:
18787786266dSMatt Arsenault; GFX940:       ; %bb.0:
18797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
18827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18837786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
18847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
18857786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v0, v1
18867786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
18877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18897786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
18907786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 3>
18917786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
18927786266dSMatt Arsenault  ret void
18937786266dSMatt Arsenault}
18947786266dSMatt Arsenault
18957786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_3(ptr addrspace(1) inreg %ptr) {
18967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_3:
18977786266dSMatt Arsenault; GFX900:       ; %bb.0:
18987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
19017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19027786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
19037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
19047786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s4
19057786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
19067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19087786266dSMatt Arsenault;
19097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_3:
19107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
19147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19157786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
19167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
19177786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s4
19187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
19197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19217786266dSMatt Arsenault;
19227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_3:
19237786266dSMatt Arsenault; GFX940:       ; %bb.0:
19247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
19277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19287786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
19297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
19307786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v0, s2
19317786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
19327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19347786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
19357786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 3>
19367786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
19377786266dSMatt Arsenault  ret void
19387786266dSMatt Arsenault}
19397786266dSMatt Arsenault
19407786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_3(ptr addrspace(1) inreg %ptr) {
19417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_3:
19427786266dSMatt Arsenault; GFX900:       ; %bb.0:
19437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
19457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
19477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19487786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]
19497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19507786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19517786266dSMatt Arsenault;
19527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_3:
19537786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
19567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
19587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]
19607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19627786266dSMatt Arsenault;
19637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_3:
19647786266dSMatt Arsenault; GFX940:       ; %bb.0:
19657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
19677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
19697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19707786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v1, s[0:1] sc0 sc1
19717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19737786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
19747786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 3>
19757786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
19767786266dSMatt Arsenault  ret void
19777786266dSMatt Arsenault}
19787786266dSMatt Arsenault
19797786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_3(ptr addrspace(1) inreg %ptr) {
19807786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_3:
19817786266dSMatt Arsenault; GFX900:       ; %bb.0:
19827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19847786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
19857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19867786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
19877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
19887786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4
19897786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
19907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19927786266dSMatt Arsenault;
19937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_3:
19947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19977786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
19987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19997786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
20007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
20017786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4
20027786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
20037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20057786266dSMatt Arsenault;
20067786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_3:
20077786266dSMatt Arsenault; GFX940:       ; %bb.0:
20087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20107786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
20117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20127786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
20137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
20147786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v1, s2
20157786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
20167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20187786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
20197786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 3>
20207786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
20217786266dSMatt Arsenault  ret void
20227786266dSMatt Arsenault}
20237786266dSMatt Arsenault
20247786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_3(ptr addrspace(1) inreg %ptr) {
20257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_3:
20267786266dSMatt Arsenault; GFX900:       ; %bb.0:
20277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
20297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
20317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20327786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]
20337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20357786266dSMatt Arsenault;
20367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_3:
20377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
20407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20417786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
20427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20437786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]
20447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20467786266dSMatt Arsenault;
20477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_3:
20487786266dSMatt Arsenault; GFX940:       ; %bb.0:
20497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
20517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
20537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20547786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v1, s[0:1] sc0 sc1
20557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20577786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
20587786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 3>
20597786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
20607786266dSMatt Arsenault  ret void
20617786266dSMatt Arsenault}
20627786266dSMatt Arsenault
20637786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_3(ptr addrspace(1) inreg %ptr) {
20647786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_3:
20657786266dSMatt Arsenault; GFX900:       ; %bb.0:
20667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20687786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
20697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20707786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
20717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
20727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20737786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
20747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20757786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v2, s4
20767786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
20777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20797786266dSMatt Arsenault;
20807786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_3:
20817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20847786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
20857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20867786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
20877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
20887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20897786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
20907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20917786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v2, s4
20927786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
20937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20957786266dSMatt Arsenault;
20967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_3:
20977786266dSMatt Arsenault; GFX940:       ; %bb.0:
20987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
21017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21027786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
21037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
21047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21057786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
21067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21077786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
21087786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v2, s2
21097786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, 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 i16> asm "; def $0", "=v"()
21137786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
21147786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 3>
21157786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
21167786266dSMatt Arsenault  ret void
21177786266dSMatt Arsenault}
21187786266dSMatt Arsenault
21197786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_3(ptr addrspace(1) inreg %ptr) {
21207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_3:
21217786266dSMatt Arsenault; GFX900:       ; %bb.0:
21227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
21257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21267786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
21277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
21287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
21307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21317786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v3, v1
21327786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
21337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21357786266dSMatt Arsenault;
21367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_3:
21377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
21417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21427786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
21437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
21447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
21467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21477786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v1
21487786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
21497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21517786266dSMatt Arsenault;
21527786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_3:
21537786266dSMatt Arsenault; GFX940:       ; %bb.0:
21547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
21577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21587786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
21597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
21607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21617786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
21627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21637786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
21647786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v3, v1
21657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
21667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21687786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
21697786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
21707786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 3>
21717786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
21727786266dSMatt Arsenault  ret void
21737786266dSMatt Arsenault}
21747786266dSMatt Arsenault
21757786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_4(ptr addrspace(1) inreg %ptr) {
21767786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v4i16__u_4:
21777786266dSMatt Arsenault; GFX9:       ; %bb.0:
21787786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21797786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
21807786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
21817786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 4>
21827786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
21837786266dSMatt Arsenault  ret void
21847786266dSMatt Arsenault}
21857786266dSMatt Arsenault
21867786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_4(ptr addrspace(1) inreg %ptr) {
21877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_4:
21887786266dSMatt Arsenault; GFX900:       ; %bb.0:
21897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
21917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
21937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21947786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
21957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21977786266dSMatt Arsenault;
21987786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_4:
21997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22017786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
22027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22037786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
22047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
22067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22087786266dSMatt Arsenault;
22097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_4:
22107786266dSMatt Arsenault; GFX940:       ; %bb.0:
22117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
22137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
22157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22167786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
22177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22197786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
22207786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 4>
22217786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
22227786266dSMatt Arsenault  ret void
22237786266dSMatt Arsenault}
22247786266dSMatt Arsenault
22257786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_4(ptr addrspace(1) inreg %ptr) {
22267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_4:
22277786266dSMatt Arsenault; GFX900:       ; %bb.0:
22287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
22317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
22337786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16
22347786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
22357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22377786266dSMatt Arsenault;
22387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_4:
22397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
22437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
22457786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16
22467786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
22477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22497786266dSMatt Arsenault;
22507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_4:
22517786266dSMatt Arsenault; GFX940:       ; %bb.0:
22527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22547786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
22557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
22577786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, s0, v0, 16
22587786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
22597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22617786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
22627786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 4>
22637786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
22647786266dSMatt Arsenault  ret void
22657786266dSMatt Arsenault}
22667786266dSMatt Arsenault
22677786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_4(ptr addrspace(1) inreg %ptr) {
22687786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_4:
22697786266dSMatt Arsenault; GFX900:       ; %bb.0:
22707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
22727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22737786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
22747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22757786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]
22767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22787786266dSMatt Arsenault;
22797786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_4:
22807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
22837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22847786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
22857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]
22877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22897786266dSMatt Arsenault;
22907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_4:
22917786266dSMatt Arsenault; GFX940:       ; %bb.0:
22927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
22947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
22967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v1, s[0:1] sc0 sc1
22987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23007786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
23017786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 4>
23027786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
23037786266dSMatt Arsenault  ret void
23047786266dSMatt Arsenault}
23057786266dSMatt Arsenault
23067786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_4(ptr addrspace(1) inreg %ptr) {
23077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_4:
23087786266dSMatt Arsenault; GFX900:       ; %bb.0:
23097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
23127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
23147786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16
23157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
23167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23187786266dSMatt Arsenault;
23197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_4:
23207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
23247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
23267786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16
23277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
23287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23307786266dSMatt Arsenault;
23317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_4:
23327786266dSMatt Arsenault; GFX940:       ; %bb.0:
23337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
23367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
23387786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, s0, v1, 16
23397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
23407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23427786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
23437786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 4>
23447786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
23457786266dSMatt Arsenault  ret void
23467786266dSMatt Arsenault}
23477786266dSMatt Arsenault
23487786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_4(ptr addrspace(1) inreg %ptr) {
23497786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v4i16__4_4:
23507786266dSMatt Arsenault; GFX9:       ; %bb.0:
23517786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23527786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
23537786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
23547786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 4>
23557786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
23567786266dSMatt Arsenault  ret void
23577786266dSMatt Arsenault}
23587786266dSMatt Arsenault
23597786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_4(ptr addrspace(1) inreg %ptr) {
23607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_4:
23617786266dSMatt Arsenault; GFX900:       ; %bb.0:
23627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
23657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
23677786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 16
23687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
23697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23717786266dSMatt Arsenault;
23727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_4:
23737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23767786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
23777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
23797786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 16
23807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
23817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23837786266dSMatt Arsenault;
23847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_4:
23857786266dSMatt Arsenault; GFX940:       ; %bb.0:
23867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
23897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
23917786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v0, v0, 16
23927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
23937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23957786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
23967786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
23977786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 4>
23987786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
23997786266dSMatt Arsenault  ret void
24007786266dSMatt Arsenault}
24017786266dSMatt Arsenault
24027786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_4(ptr addrspace(1) inreg %ptr) {
24037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_4:
24047786266dSMatt Arsenault; GFX900:       ; %bb.0:
24057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
24087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24097786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
24107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
24117786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4
24127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
24137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24157786266dSMatt Arsenault;
24167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_4:
24177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
24217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24227786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
24237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
24247786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4
24257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
24267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24287786266dSMatt Arsenault;
24297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_4:
24307786266dSMatt Arsenault; GFX940:       ; %bb.0:
24317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
24347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24357786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
24367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
24377786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v1, s2
24387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
24397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24417786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
24427786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
24437786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 4>
24447786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
24457786266dSMatt Arsenault  ret void
24467786266dSMatt Arsenault}
24477786266dSMatt Arsenault
24487786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_5(ptr addrspace(1) inreg %ptr) {
24497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_5:
24507786266dSMatt Arsenault; GFX900:       ; %bb.0:
24517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
24537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
24557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
24577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24597786266dSMatt Arsenault;
24607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_5:
24617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
24647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
24667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
24687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24707786266dSMatt Arsenault;
24717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_5:
24727786266dSMatt Arsenault; GFX940:       ; %bb.0:
24737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
24757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
24777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
24797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24817786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
24827786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
24837786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 5>
24847786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
24857786266dSMatt Arsenault  ret void
24867786266dSMatt Arsenault}
24877786266dSMatt Arsenault
24887786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_5(ptr addrspace(1) inreg %ptr) {
24897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_5:
24907786266dSMatt Arsenault; GFX900:       ; %bb.0:
24917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
24947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24957786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
24967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
24977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
24997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25007786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v1
25017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
25027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25047786266dSMatt Arsenault;
25057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_5:
25067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
25107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25117786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
25127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
25137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
25157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25167786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v2
25177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
25187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25207786266dSMatt Arsenault;
25217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_5:
25227786266dSMatt Arsenault; GFX940:       ; %bb.0:
25237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
25267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25277786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
25287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
25297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
25317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25327786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
25337786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v0, v2
25347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
25357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25377786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
25387786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
25397786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 5>
25407786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
25417786266dSMatt Arsenault  ret void
25427786266dSMatt Arsenault}
25437786266dSMatt Arsenault
25447786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_5(ptr addrspace(1) inreg %ptr) {
25457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_5:
25467786266dSMatt Arsenault; GFX900:       ; %bb.0:
25477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
25507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25517786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
25527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
25537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
25557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25567786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s4
25577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
25587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25607786266dSMatt Arsenault;
25617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_5:
25627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
25667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25677786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
25687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
25697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
25717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25727786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v2, v0, s4
25737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
25747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25767786266dSMatt Arsenault;
25777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_5:
25787786266dSMatt Arsenault; GFX940:       ; %bb.0:
25797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
25827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25837786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
25847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
25857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
25877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25887786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
25897786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v2, v0, s2
25907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
25917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25937786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
25947786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
25957786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 5>
25967786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
25977786266dSMatt Arsenault  ret void
25987786266dSMatt Arsenault}
25997786266dSMatt Arsenault
26007786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_5(ptr addrspace(1) inreg %ptr) {
26017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_5:
26027786266dSMatt Arsenault; GFX900:       ; %bb.0:
26037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
26067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26077786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
26087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
26097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
26117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26127786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v2
26137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
26147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26167786266dSMatt Arsenault;
26177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_5:
26187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
26227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26237786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
26247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
26257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
26277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26287786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v2
26297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
26307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26327786266dSMatt Arsenault;
26337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_5:
26347786266dSMatt Arsenault; GFX940:       ; %bb.0:
26357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
26387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26397786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
26407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
26417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
26437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26447786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
26457786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v1, v2
26467786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
26477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26487786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26497786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
26507786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
26517786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 5>
26527786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
26537786266dSMatt Arsenault  ret void
26547786266dSMatt Arsenault}
26557786266dSMatt Arsenault
26567786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_5(ptr addrspace(1) inreg %ptr) {
26577786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_5:
26587786266dSMatt Arsenault; GFX900:       ; %bb.0:
26597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
26627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26637786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
26647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
26657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
26677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26687786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v2, v1, s4
26697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
26707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26727786266dSMatt Arsenault;
26737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_5:
26747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
26787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26797786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
26807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
26817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
26837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26847786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v2, v1, s4
26857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
26867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26887786266dSMatt Arsenault;
26897786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_5:
26907786266dSMatt Arsenault; GFX940:       ; %bb.0:
26917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
26947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26957786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
26967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
26977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
26997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27007786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
27017786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v2, v1, s2
27027786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
27037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27057786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
27067786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
27077786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 5>
27087786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
27097786266dSMatt Arsenault  ret void
27107786266dSMatt Arsenault}
27117786266dSMatt Arsenault
27127786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_5(ptr addrspace(1) inreg %ptr) {
27137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_5:
27147786266dSMatt Arsenault; GFX900:       ; %bb.0:
27157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
27177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
27197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27207786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
27217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27227786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27237786266dSMatt Arsenault;
27247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_5:
27257786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
27287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
27307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
27327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27347786266dSMatt Arsenault;
27357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_5:
27367786266dSMatt Arsenault; GFX940:       ; %bb.0:
27377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
27397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27407786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
27417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27427786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
27437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27447786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27457786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
27467786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
27477786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 5>
27487786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
27497786266dSMatt Arsenault  ret void
27507786266dSMatt Arsenault}
27517786266dSMatt Arsenault
27527786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_5(ptr addrspace(1) inreg %ptr) {
27537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_5:
27547786266dSMatt Arsenault; GFX900:       ; %bb.0:
27557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
27587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27597786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
27607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
27617786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4
27627786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
27637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27657786266dSMatt Arsenault;
27667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_5:
27677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
27717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27727786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
27737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
27747786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4
27757786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
27767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27787786266dSMatt Arsenault;
27797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_5:
27807786266dSMatt Arsenault; GFX940:       ; %bb.0:
27817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27837786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
27847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27857786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
27867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
27877786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v0, v0, s2
27887786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
27897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27917786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
27927786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
27937786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 5>
27947786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
27957786266dSMatt Arsenault  ret void
27967786266dSMatt Arsenault}
27977786266dSMatt Arsenault
27987786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_5(ptr addrspace(1) inreg %ptr) {
27997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_5:
28007786266dSMatt Arsenault; GFX900:       ; %bb.0:
28017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
28047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28057786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
28067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
28077786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v0
28087786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
28097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28117786266dSMatt Arsenault;
28127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_5:
28137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
28177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28187786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
28197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
28207786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v0
28217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
28227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28247786266dSMatt Arsenault;
28257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_5:
28267786266dSMatt Arsenault; GFX940:       ; %bb.0:
28277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
28307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28317786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
28327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
28337786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v1, v0
28347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
28357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28377786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
28387786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
28397786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 5>
28407786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
28417786266dSMatt Arsenault  ret void
28427786266dSMatt Arsenault}
28437786266dSMatt Arsenault
28447786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_6(ptr addrspace(1) inreg %ptr) {
28457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_6:
28467786266dSMatt Arsenault; GFX900:       ; %bb.0:
28477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
28507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
28527786266dSMatt Arsenault; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
28537786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
28547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28567786266dSMatt Arsenault;
28577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_6:
28587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
28627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
28647786266dSMatt Arsenault; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
28657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
28667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28687786266dSMatt Arsenault;
28697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_6:
28707786266dSMatt Arsenault; GFX940:       ; %bb.0:
28717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
28747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
28767786266dSMatt Arsenault; GFX940-NEXT:    v_lshlrev_b32_e32 v0, 16, v1
28777786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
28787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28807786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
28817786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
28827786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 6>
28837786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
28847786266dSMatt Arsenault  ret void
28857786266dSMatt Arsenault}
28867786266dSMatt Arsenault
28877786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_6(ptr addrspace(1) inreg %ptr) {
28887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_6:
28897786266dSMatt Arsenault; GFX900:       ; %bb.0:
28907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
28937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28947786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
28957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
28967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
28987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28997786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s4
29007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
29017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29037786266dSMatt Arsenault;
29047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_6:
29057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
29097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29107786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
29117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
29127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
29147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29157786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s4
29167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
29177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29197786266dSMatt Arsenault;
29207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_6:
29217786266dSMatt Arsenault; GFX940:       ; %bb.0:
29227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29247786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
29257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29267786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
29277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
29287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
29307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29317786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
29327786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v3, v0, s2
29337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
29347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29367786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
29377786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
29387786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 6>
29397786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
29407786266dSMatt Arsenault  ret void
29417786266dSMatt Arsenault}
29427786266dSMatt Arsenault
29437786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_6(ptr addrspace(1) inreg %ptr) {
29447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_6:
29457786266dSMatt Arsenault; GFX900:       ; %bb.0:
29467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29487786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
29497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
29517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
29537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29547786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v2, v0, 16
29557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
29567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29587786266dSMatt Arsenault;
29597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_6:
29607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
29647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
29667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
29687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29697786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v0, 16
29707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
29717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29737786266dSMatt Arsenault;
29747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_6:
29757786266dSMatt Arsenault; GFX940:       ; %bb.0:
29767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
29797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
29817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
29837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29847786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
29857786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v3, v0, 16
29867786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
29877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29897786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
29907786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
29917786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 6>
29927786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
29937786266dSMatt Arsenault  ret void
29947786266dSMatt Arsenault}
29957786266dSMatt Arsenault
29967786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_6(ptr addrspace(1) inreg %ptr) {
29977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_6:
29987786266dSMatt Arsenault; GFX900:       ; %bb.0:
29997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30017786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
30027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30037786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
30047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
30057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
30077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30087786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s4
30097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
30107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30127786266dSMatt Arsenault;
30137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_6:
30147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
30187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30197786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
30207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
30217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
30237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30247786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s4
30257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
30267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30287786266dSMatt Arsenault;
30297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_6:
30307786266dSMatt Arsenault; GFX940:       ; %bb.0:
30317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
30347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30357786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
30367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
30377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
30397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30407786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
30417786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v3, v1, s2
30427786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
30437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30447786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30457786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
30467786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
30477786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 6>
30487786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
30497786266dSMatt Arsenault  ret void
30507786266dSMatt Arsenault}
30517786266dSMatt Arsenault
30527786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_6(ptr addrspace(1) inreg %ptr) {
30537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_6:
30547786266dSMatt Arsenault; GFX900:       ; %bb.0:
30557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
30587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
30607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
30627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30637786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v3, v1, 16
30647786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
30657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30667786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30677786266dSMatt Arsenault;
30687786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_6:
30697786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30727786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
30737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
30757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30767786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
30777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30787786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v1, 16
30797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
30807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30827786266dSMatt Arsenault;
30837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_6:
30847786266dSMatt Arsenault; GFX940:       ; %bb.0:
30857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
30887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
30907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
30927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30937786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
30947786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v3, v1, 16
30957786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
30967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30987786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
30997786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
31007786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 6>
31017786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
31027786266dSMatt Arsenault  ret void
31037786266dSMatt Arsenault}
31047786266dSMatt Arsenault
31057786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_6(ptr addrspace(1) inreg %ptr) {
31067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_6:
31077786266dSMatt Arsenault; GFX900:       ; %bb.0:
31087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
31117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31127786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
31137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
31147786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s4
31157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
31167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31187786266dSMatt Arsenault;
31197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_6:
31207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
31247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31257786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
31267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
31277786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s4
31287786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, 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_v2i16_v4i16__4_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:1]
31377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31387786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
31397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
31407786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v0, s2
31417786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
31427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31447786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
31457786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
31467786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 6>
31477786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
31487786266dSMatt Arsenault  ret void
31497786266dSMatt Arsenault}
31507786266dSMatt Arsenault
31517786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_6(ptr addrspace(1) inreg %ptr) {
31527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_6:
31537786266dSMatt Arsenault; GFX900:       ; %bb.0:
31547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31567786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
31577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
31597786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 16
31607786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
31617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31637786266dSMatt Arsenault;
31647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_6:
31657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
31697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
31717786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 16
31727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
31737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31757786266dSMatt Arsenault;
31767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_6:
31777786266dSMatt Arsenault; GFX940:       ; %bb.0:
31787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31807786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
31817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
31837786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v0, v1, v0, 16
31847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
31857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31877786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
31887786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
31897786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 6>
31907786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
31917786266dSMatt Arsenault  ret void
31927786266dSMatt Arsenault}
31937786266dSMatt Arsenault
31947786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_6(ptr addrspace(1) inreg %ptr) {
31957786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_6:
31967786266dSMatt Arsenault; GFX900:       ; %bb.0:
31977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
32007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32017786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
32027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
32037786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4
32047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
32057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32077786266dSMatt Arsenault;
32087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_6:
32097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
32137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32147786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
32157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
32167786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4
32177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, 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_v2i16_v4i16__6_6:
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:1]
32267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32277786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
32287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
32297786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v1, s2
32307786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
32317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32337786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
32347786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
32357786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 6>
32367786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
32377786266dSMatt Arsenault  ret void
32387786266dSMatt Arsenault}
32397786266dSMatt Arsenault
32407786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__u_7(ptr addrspace(1) inreg %ptr) {
32417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_7:
32427786266dSMatt Arsenault; GFX900:       ; %bb.0:
32437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
32457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
32477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32487786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]
32497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32507786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32517786266dSMatt Arsenault;
32527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_7:
32537786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
32567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
32587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]
32607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32627786266dSMatt Arsenault;
32637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__u_7:
32647786266dSMatt Arsenault; GFX940:       ; %bb.0:
32657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
32677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
32697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32707786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v1, s[0:1] sc0 sc1
32717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32737786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
32747786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
32757786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 7>
32767786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
32777786266dSMatt Arsenault  ret void
32787786266dSMatt Arsenault}
32797786266dSMatt Arsenault
32807786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__0_7(ptr addrspace(1) inreg %ptr) {
32817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_7:
32827786266dSMatt Arsenault; GFX900:       ; %bb.0:
32837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32857786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
32867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32877786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
32887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
32897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32907786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
32917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32927786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v2
32937786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
32947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32967786266dSMatt Arsenault;
32977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_7:
32987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
33027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33037786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
33047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
33057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
33077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33087786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v3
33097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
33107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33127786266dSMatt Arsenault;
33137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__0_7:
33147786266dSMatt Arsenault; GFX940:       ; %bb.0:
33157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
33187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33197786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
33207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
33217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
33237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33247786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
33257786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v0, v3
33267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
33277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
33287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33297786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
33307786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
33317786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 7>
33327786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
33337786266dSMatt Arsenault  ret void
33347786266dSMatt Arsenault}
33357786266dSMatt Arsenault
33367786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__1_7(ptr addrspace(1) inreg %ptr) {
33377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_7:
33387786266dSMatt Arsenault; GFX900:       ; %bb.0:
33397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33417786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
33427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33437786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
33447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
33457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
33477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33487786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s4
33497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]
33507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33527786266dSMatt Arsenault;
33537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_7:
33547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
33587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33597786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
33607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
33617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
33637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33647786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s4
33657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
33667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33687786266dSMatt Arsenault;
33697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__1_7:
33707786266dSMatt Arsenault; GFX940:       ; %bb.0:
33717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
33747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33757786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
33767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
33777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
33797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33807786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
33817786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v3, v0, s2
33827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
33837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
33847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33857786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
33867786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
33877786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 7>
33887786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
33897786266dSMatt Arsenault  ret void
33907786266dSMatt Arsenault}
33917786266dSMatt Arsenault
33927786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__2_7(ptr addrspace(1) inreg %ptr) {
33937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_7:
33947786266dSMatt Arsenault; GFX900:       ; %bb.0:
33957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
33987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33997786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
34007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
34017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
34037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34047786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v3
34057786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
34067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34087786266dSMatt Arsenault;
34097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_7:
34107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
34147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34157786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
34167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
34177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
34197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34207786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v3
34217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
34227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34247786266dSMatt Arsenault;
34257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__2_7:
34267786266dSMatt Arsenault; GFX940:       ; %bb.0:
34277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
34307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34317786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
34327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
34337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
34357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34367786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
34377786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v1, v3
34387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
34397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34417786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
34427786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
34437786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 7>
34447786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
34457786266dSMatt Arsenault  ret void
34467786266dSMatt Arsenault}
34477786266dSMatt Arsenault
34487786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__3_7(ptr addrspace(1) inreg %ptr) {
34497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_7:
34507786266dSMatt Arsenault; GFX900:       ; %bb.0:
34517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
34547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34557786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
34567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
34577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
34597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34607786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s4
34617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]
34627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34647786266dSMatt Arsenault;
34657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_7:
34667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
34707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34717786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
34727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
34737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
34757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34767786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s4
34777786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]
34787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34797786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34807786266dSMatt Arsenault;
34817786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__3_7:
34827786266dSMatt Arsenault; GFX940:       ; %bb.0:
34837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
34867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34877786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
34887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
34897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34907786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
34917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34927786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
34937786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v3, v1, s2
34947786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v4, v0, s[0:1] sc0 sc1
34957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34977786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
34987786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
34997786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 7>
35007786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
35017786266dSMatt Arsenault  ret void
35027786266dSMatt Arsenault}
35037786266dSMatt Arsenault
35047786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__4_7(ptr addrspace(1) inreg %ptr) {
35057786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_7:
35067786266dSMatt Arsenault; GFX900:       ; %bb.0:
35077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35097786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
35107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35117786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
35127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
35137786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v1
35147786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
35157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
35167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35177786266dSMatt Arsenault;
35187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_7:
35197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
35237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35247786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
35257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
35267786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v1
35277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
35287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35307786266dSMatt Arsenault;
35317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__4_7:
35327786266dSMatt Arsenault; GFX940:       ; %bb.0:
35337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
35367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35377786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
35387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
35397786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v0, s2, v0, v1
35407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
35417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35437786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
35447786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
35457786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 7>
35467786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
35477786266dSMatt Arsenault  ret void
35487786266dSMatt Arsenault}
35497786266dSMatt Arsenault
35507786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__5_7(ptr addrspace(1) inreg %ptr) {
35517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_7:
35527786266dSMatt Arsenault; GFX900:       ; %bb.0:
35537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
35567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35577786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
35587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
35597786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s4
35607786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]
35617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
35627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35637786266dSMatt Arsenault;
35647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_7:
35657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
35697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35707786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
35717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
35727786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s4
35737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]
35747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35767786266dSMatt Arsenault;
35777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__5_7:
35787786266dSMatt Arsenault; GFX940:       ; %bb.0:
35797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
35827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35837786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
35847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
35857786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v0, v1, v0, s2
35867786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v0, s[0:1] sc0 sc1
35877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35897786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
35907786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
35917786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 7>
35927786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
35937786266dSMatt Arsenault  ret void
35947786266dSMatt Arsenault}
35957786266dSMatt Arsenault
35967786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v4i16__6_7(ptr addrspace(1) inreg %ptr) {
35977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_7:
35987786266dSMatt Arsenault; GFX900:       ; %bb.0:
35997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
36017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
36037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]
36057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
36067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36077786266dSMatt Arsenault;
36087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_7:
36097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
36127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
36147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]
36167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
36177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36187786266dSMatt Arsenault;
36197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v4i16__6_7:
36207786266dSMatt Arsenault; GFX940:       ; %bb.0:
36217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
36237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36247786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
36257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v2, v1, s[0:1] sc0 sc1
36277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
36287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36297786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=v"()
36307786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=v"()
36317786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 7>
36327786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
36337786266dSMatt Arsenault  ret void
36347786266dSMatt Arsenault}
36357786266dSMatt Arsenault
36367786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_u() {
3637*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v4i16__u_u:
3638*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3639*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3640*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3641*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s8
3642*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3643*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36447786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
36457786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> poison
3646*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
36477786266dSMatt Arsenault  ret void
36487786266dSMatt Arsenault}
36497786266dSMatt Arsenault
36507786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_u() {
36517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_u:
36527786266dSMatt Arsenault; GFX900:       ; %bb.0:
36537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3655*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
36567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3658*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
36597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36617786266dSMatt Arsenault;
36627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_u:
36637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3666*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
36677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3669*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
36707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36727786266dSMatt Arsenault;
36737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_u:
36747786266dSMatt Arsenault; GFX940:       ; %bb.0:
36757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3677*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
36787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36797786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
36807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3681*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
36827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36847786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
36857786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 poison>
3686*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
36877786266dSMatt Arsenault  ret void
36887786266dSMatt Arsenault}
36897786266dSMatt Arsenault
36907786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_u() {
36917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_u:
36927786266dSMatt Arsenault; GFX900:       ; %bb.0:
36937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36957786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
36967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3697*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s4, 16
36987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3699*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
37007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37027786266dSMatt Arsenault;
37037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_u:
37047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37077786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
37087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3709*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s4, 16
37107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3711*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
37127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37147786266dSMatt Arsenault;
37157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_u:
37167786266dSMatt Arsenault; GFX940:       ; %bb.0:
37177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37197786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
37207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3721*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s0, 16
37227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3723*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
37247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37267786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
37277786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 poison>
3728*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
37297786266dSMatt Arsenault  ret void
37307786266dSMatt Arsenault}
37317786266dSMatt Arsenault
37327786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_u() {
37337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_u:
37347786266dSMatt Arsenault; GFX900:       ; %bb.0:
37357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37377786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
37387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3739*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
37407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3741*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
37427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37447786266dSMatt Arsenault;
37457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_u:
37467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37497786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
37507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3751*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
37527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3753*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
37547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37567786266dSMatt Arsenault;
37577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_u:
37587786266dSMatt Arsenault; GFX940:       ; %bb.0:
37597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37617786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
37627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3763*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
37647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3765*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
37667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37687786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
37697786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 poison>
3770*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
37717786266dSMatt Arsenault  ret void
37727786266dSMatt Arsenault}
37737786266dSMatt Arsenault
37747786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_u() {
37757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_u:
37767786266dSMatt Arsenault; GFX900:       ; %bb.0:
37777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37797786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
37807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3781*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s5, 16
37827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3783*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
37847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37867786266dSMatt Arsenault;
37877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_u:
37887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37917786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
37927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3793*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s5, 16
37947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3795*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
37967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37987786266dSMatt Arsenault;
37997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_u:
38007786266dSMatt Arsenault; GFX940:       ; %bb.0:
38017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38037786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
38047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3805*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s1, 16
38067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3807*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
38087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38107786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
38117786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 poison>
3812*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
38137786266dSMatt Arsenault  ret void
38147786266dSMatt Arsenault}
38157786266dSMatt Arsenault
38167786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_u() {
3817*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v4i16__4_u:
3818*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3819*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3820*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3821*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s8
3822*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3823*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38247786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
38257786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 poison>
3826*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
38277786266dSMatt Arsenault  ret void
38287786266dSMatt Arsenault}
38297786266dSMatt Arsenault
38307786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_u() {
38317786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_u:
38327786266dSMatt Arsenault; GFX900:       ; %bb.0:
38337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38357786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
38367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3837*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s4, 16
38387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3839*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
38407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38427786266dSMatt Arsenault;
38437786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_u:
38447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38477786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
38487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3849*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s4, 16
38507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3851*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
38527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38547786266dSMatt Arsenault;
38557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_u:
38567786266dSMatt Arsenault; GFX940:       ; %bb.0:
38577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38597786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
38607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3861*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s0, 16
38627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3863*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
38647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38667786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
38677786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
38687786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 poison>
3869*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
38707786266dSMatt Arsenault  ret void
38717786266dSMatt Arsenault}
38727786266dSMatt Arsenault
38737786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_u() {
38747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_u:
38757786266dSMatt Arsenault; GFX900:       ; %bb.0:
38767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
38797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3880*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
38817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3882*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
38837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38857786266dSMatt Arsenault;
38867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_u:
38877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38907786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
38917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3892*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
38937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3894*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
38957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38977786266dSMatt Arsenault;
38987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_u:
38997786266dSMatt Arsenault; GFX940:       ; %bb.0:
39007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
39037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3904*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
39057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3906*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
39077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39097786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
39107786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
39117786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 poison>
3912*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
39137786266dSMatt Arsenault  ret void
39147786266dSMatt Arsenault}
39157786266dSMatt Arsenault
39167786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_u() {
39177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_u:
39187786266dSMatt Arsenault; GFX900:       ; %bb.0:
39197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39217786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
39227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3923*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s5, 16
39247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3925*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
39267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39287786266dSMatt Arsenault;
39297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_u:
39307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39337786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
39347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3935*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s5, 16
39367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3937*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
39387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39407786266dSMatt Arsenault;
39417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_u:
39427786266dSMatt Arsenault; GFX940:       ; %bb.0:
39437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39457786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
39467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3947*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s1, 16
39487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3949*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
39507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39527786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
39537786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
39547786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 poison>
3955*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
39567786266dSMatt Arsenault  ret void
39577786266dSMatt Arsenault}
39587786266dSMatt Arsenault
39597786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_0() {
39607786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_0:
39617786266dSMatt Arsenault; GFX900:       ; %bb.0:
39627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39647786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
39657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39677786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
39687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39697786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s7, 16
3970*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
39717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3972*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
39737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39757786266dSMatt Arsenault;
39767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_0:
39777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
39817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39837786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
39847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39857786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s7, 16
3986*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
39877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3988*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
39897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39917786266dSMatt Arsenault;
39927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_0:
39937786266dSMatt Arsenault; GFX940:       ; %bb.0:
39947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39967786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
39977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39997786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
40007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40017786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s3, 16
4002*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
40037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4004*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
40057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40077786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
40087786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
40097786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 0>
4010*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
40117786266dSMatt Arsenault  ret void
40127786266dSMatt Arsenault}
40137786266dSMatt Arsenault
40147786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_1() {
40157786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_1:
40167786266dSMatt Arsenault; GFX900:       ; %bb.0:
40177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40197786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
40207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40227786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
40237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4024*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s4
40257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4026*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
40277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40297786266dSMatt Arsenault;
40307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_1:
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:5]
40357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40377786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
40387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4039*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s4
40407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4041*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
40427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40447786266dSMatt Arsenault;
40457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_1:
40467786266dSMatt Arsenault; GFX940:       ; %bb.0:
40477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40497786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
40507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40527786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
40537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4054*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s3, s0
40557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4056*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
40577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40597786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
40607786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
40617786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 1>
4062*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
40637786266dSMatt Arsenault  ret void
40647786266dSMatt Arsenault}
40657786266dSMatt Arsenault
40667786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_2() {
40677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_2:
40687786266dSMatt Arsenault; GFX900:       ; %bb.0:
40697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40717786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
40727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40747786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
40757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40767786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s4, s7, 16
4077*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
40787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4079*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
40807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40827786266dSMatt Arsenault;
40837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_2:
40847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
40887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40907786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
40917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40927786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s4, s7, 16
4093*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
40947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4095*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
40967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40987786266dSMatt Arsenault;
40997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_2:
41007786266dSMatt Arsenault; GFX940:       ; %bb.0:
41017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41037786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
41047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41067786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
41077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41087786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s0, s3, 16
4109*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s1
41107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4111*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
41127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41147786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
41157786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
41167786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 2>
4117*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
41187786266dSMatt Arsenault  ret void
41197786266dSMatt Arsenault}
41207786266dSMatt Arsenault
41217786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_3() {
41227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_3:
41237786266dSMatt Arsenault; GFX900:       ; %bb.0:
41247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41267786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
41277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41297786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
41307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4131*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s5
41327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4133*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
41347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41367786266dSMatt Arsenault;
41377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_3:
41387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
41427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
41457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4146*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s5
41477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4148*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
41497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41517786266dSMatt Arsenault;
41527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_3:
41537786266dSMatt Arsenault; GFX940:       ; %bb.0:
41547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
41577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41597786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
41607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4161*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s3, s1
41627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4163*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
41647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41667786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
41677786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
41687786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 3>
4169*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
41707786266dSMatt Arsenault  ret void
41717786266dSMatt Arsenault}
41727786266dSMatt Arsenault
41737786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_4() {
41747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_4:
41757786266dSMatt Arsenault; GFX900:       ; %bb.0:
41767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
41797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41807786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s5, 16
4181*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
41827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4183*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
41847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41867786266dSMatt Arsenault;
41877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_4:
41887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41917786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
41927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41937786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s5, 16
4194*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
41957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4196*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
41977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41997786266dSMatt Arsenault;
42007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_4:
42017786266dSMatt Arsenault; GFX940:       ; %bb.0:
42027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42047786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
42057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42067786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s1, 16
4207*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
42087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4209*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
42107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42127786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
42137786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
42147786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 4>
4215*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
42167786266dSMatt Arsenault  ret void
42177786266dSMatt Arsenault}
42187786266dSMatt Arsenault
42197786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_5() {
42207786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_5:
42217786266dSMatt Arsenault; GFX900:       ; %bb.0:
42227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42247786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
42257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4226*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s4
42277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4228*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
42297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42317786266dSMatt Arsenault;
42327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_5:
42337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42367786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
42377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4238*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s4
42397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4240*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
42417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42437786266dSMatt Arsenault;
42447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_5:
42457786266dSMatt Arsenault; GFX940:       ; %bb.0:
42467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42487786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
42497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4250*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s1, s0
42517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4252*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
42537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42557786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
42567786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
42577786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 5>
4258*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
42597786266dSMatt Arsenault  ret void
42607786266dSMatt Arsenault}
42617786266dSMatt Arsenault
42627786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_6() {
42637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_6:
42647786266dSMatt Arsenault; GFX900:       ; %bb.0:
42657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42677786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
42687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42697786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s4, s5, 16
4270*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
42717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4272*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
42737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42757786266dSMatt Arsenault;
42767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_6:
42777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
42817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42827786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s4, s5, 16
4283*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
42847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4285*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
42867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42877786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42887786266dSMatt Arsenault;
42897786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_6:
42907786266dSMatt Arsenault; GFX940:       ; %bb.0:
42917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42937786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
42947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42957786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s0, s1, 16
4296*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s1
42977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4298*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
42997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43017786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
43027786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
43037786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 6>
4304*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
43057786266dSMatt Arsenault  ret void
43067786266dSMatt Arsenault}
43077786266dSMatt Arsenault
43087786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__7_7() {
43097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_7:
43107786266dSMatt Arsenault; GFX900:       ; %bb.0:
43117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
43147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4315*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s5
43167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4317*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
43187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
43197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
43207786266dSMatt Arsenault;
43217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_7:
43227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
43257786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
43267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4327*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s5
43287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4329*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
43307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
43317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
43327786266dSMatt Arsenault;
43337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__7_7:
43347786266dSMatt Arsenault; GFX940:       ; %bb.0:
43357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43377786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
43387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4339*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s1, s1
43407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4341*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
43427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43447786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
43457786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
43467786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 7>
4347*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
43487786266dSMatt Arsenault  ret void
43497786266dSMatt Arsenault}
43507786266dSMatt Arsenault
43517786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_0() {
43527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_0:
43537786266dSMatt Arsenault; GFX900:       ; %bb.0:
43547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43567786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
43577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4358*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshl_b32 s8, s4, 16
43597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4360*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
43617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
43627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
43637786266dSMatt Arsenault;
43647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_0:
43657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
43687786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
43697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4370*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshl_b32 s8, s4, 16
43717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4372*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
43737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
43747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
43757786266dSMatt Arsenault;
43767786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_0:
43777786266dSMatt Arsenault; GFX940:       ; %bb.0:
43787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43807786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
43817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4382*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshl_b32 s8, s0, 16
43837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4384*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
43857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43877786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
43887786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 0>
4389*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
43907786266dSMatt Arsenault  ret void
43917786266dSMatt Arsenault}
43927786266dSMatt Arsenault
43937786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_0() {
43947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_0:
43957786266dSMatt Arsenault; GFX900:       ; %bb.0:
43967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43987786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
43997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4400*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s4
44017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4402*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
44037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44057786266dSMatt Arsenault;
44067786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_0:
44077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44107786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
44117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4412*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s4
44137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4414*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
44157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44177786266dSMatt Arsenault;
44187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_0:
44197786266dSMatt Arsenault; GFX940:       ; %bb.0:
44207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44227786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
44237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4424*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s0
44257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4426*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
44277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44297786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
44307786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> zeroinitializer
4431*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
44327786266dSMatt Arsenault  ret void
44337786266dSMatt Arsenault}
44347786266dSMatt Arsenault
44357786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_0() {
44367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_0:
44377786266dSMatt Arsenault; GFX900:       ; %bb.0:
44387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44407786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
44417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44427786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s4, 16
4443*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
44447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4445*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
44467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44487786266dSMatt Arsenault;
44497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_0:
44507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
44547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44557786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s4, 16
4456*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
44577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4458*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
44597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44617786266dSMatt Arsenault;
44627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_0:
44637786266dSMatt Arsenault; GFX940:       ; %bb.0:
44647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44667786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
44677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44687786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s0, 16
4469*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
44707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4471*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
44727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44747786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
44757786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 0>
4476*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
44777786266dSMatt Arsenault  ret void
44787786266dSMatt Arsenault}
44797786266dSMatt Arsenault
44807786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_0() {
44817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_0:
44827786266dSMatt Arsenault; GFX900:       ; %bb.0:
44837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44857786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
44867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4487*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
44887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4489*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
44907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44927786266dSMatt Arsenault;
44937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_0:
44947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44977786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
44987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4499*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
45007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4501*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
45027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45047786266dSMatt Arsenault;
45057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_0:
45067786266dSMatt Arsenault; GFX940:       ; %bb.0:
45077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45097786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
45107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4511*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
45127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4513*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
45147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45167786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
45177786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 0>
4518*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
45197786266dSMatt Arsenault  ret void
45207786266dSMatt Arsenault}
45217786266dSMatt Arsenault
45227786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_0() {
45237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_0:
45247786266dSMatt Arsenault; GFX900:       ; %bb.0:
45257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45277786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
45287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45297786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s5, 16
4530*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
45317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4532*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
45337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45357786266dSMatt Arsenault;
45367786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_0:
45377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45407786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
45417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45427786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s5, 16
4543*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
45447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4545*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
45467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45487786266dSMatt Arsenault;
45497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_0:
45507786266dSMatt Arsenault; GFX940:       ; %bb.0:
45517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
45547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45557786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s1, 16
4556*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
45577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4558*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
45597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45617786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
45627786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 0>
4563*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
45647786266dSMatt Arsenault  ret void
45657786266dSMatt Arsenault}
45667786266dSMatt Arsenault
45677786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_0() {
45687786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_0:
45697786266dSMatt Arsenault; GFX900:       ; %bb.0:
45707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45727786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
45737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4574*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshl_b32 s8, s4, 16
45757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4576*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
45777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45797786266dSMatt Arsenault;
45807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_0:
45817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45847786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
45857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4586*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshl_b32 s8, s4, 16
45877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4588*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
45897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45917786266dSMatt Arsenault;
45927786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_0:
45937786266dSMatt Arsenault; GFX940:       ; %bb.0:
45947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45967786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
45977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4598*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshl_b32 s8, s0, 16
45997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4600*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
46017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46037786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
46047786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 0>
4605*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
46067786266dSMatt Arsenault  ret void
46077786266dSMatt Arsenault}
46087786266dSMatt Arsenault
46097786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_0() {
46107786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_0:
46117786266dSMatt Arsenault; GFX900:       ; %bb.0:
46127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46147786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
46157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46177786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
46187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46197786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s6, 16
4620*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
46217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4622*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
46237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46247786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46257786266dSMatt Arsenault;
46267786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_0:
46277786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46307786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
46317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46337786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
46347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46357786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s6, 16
4636*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
46377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4638*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
46397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46417786266dSMatt Arsenault;
46427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_0:
46437786266dSMatt Arsenault; GFX940:       ; %bb.0:
46447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
46467786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
46477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
46497786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
46507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46517786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s2, 16
4652*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
46537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4654*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
46557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46577786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
46587786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
46597786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 0>
4660*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
46617786266dSMatt Arsenault  ret void
46627786266dSMatt Arsenault}
46637786266dSMatt Arsenault
46647786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_0() {
46657786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_0:
46667786266dSMatt Arsenault; GFX900:       ; %bb.0:
46677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46697786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
46707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46727786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
46737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4674*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s4
46757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4676*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
46777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46797786266dSMatt Arsenault;
46807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_0:
46817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46847786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
46857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
46887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4689*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s4
46907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4691*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
46927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46947786266dSMatt Arsenault;
46957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_0:
46967786266dSMatt Arsenault; GFX940:       ; %bb.0:
46977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
46997786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
47007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
47037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4704*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s3, s0
47057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4706*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
47077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47097786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
47107786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
47117786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 0>
4712*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
47137786266dSMatt Arsenault  ret void
47147786266dSMatt Arsenault}
47157786266dSMatt Arsenault
47167786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_1() {
47177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_1:
47187786266dSMatt Arsenault; GFX900:       ; %bb.0:
47197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4721*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
47227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4724*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
47257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47277786266dSMatt Arsenault;
47287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_1:
47297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4732*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
47337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4735*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
47367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47387786266dSMatt Arsenault;
47397786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_1:
47407786266dSMatt Arsenault; GFX940:       ; %bb.0:
47417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4743*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
47447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47457786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
47467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4747*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
47487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47507786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
47517786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 1>
4752*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
47537786266dSMatt Arsenault  ret void
47547786266dSMatt Arsenault}
47557786266dSMatt Arsenault
47567786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_1() {
47577786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_1:
47587786266dSMatt Arsenault; GFX900:       ; %bb.0:
47597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4761*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
47627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4764*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
47657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47667786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47677786266dSMatt Arsenault;
47687786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_1:
47697786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4772*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
47737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4775*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
47767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47787786266dSMatt Arsenault;
47797786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_1:
47807786266dSMatt Arsenault; GFX940:       ; %bb.0:
47817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4783*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
47847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47857786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
47867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4787*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
47887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47907786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
47917786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 1>
4792*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
47937786266dSMatt Arsenault  ret void
47947786266dSMatt Arsenault}
47957786266dSMatt Arsenault
47967786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_1() {
47977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_1:
47987786266dSMatt Arsenault; GFX900:       ; %bb.0:
47997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48017786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
48027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4803*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s4
48047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4805*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
48067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48087786266dSMatt Arsenault;
48097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_1:
48107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48137786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
48147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4815*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s4
48167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4817*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
48187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48207786266dSMatt Arsenault;
48217786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_1:
48227786266dSMatt Arsenault; GFX940:       ; %bb.0:
48237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
48257786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
48267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4827*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s0
48287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4829*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
48307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48327786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
48337786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 1>
4834*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
48357786266dSMatt Arsenault  ret void
48367786266dSMatt Arsenault}
48377786266dSMatt Arsenault
48387786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_1() {
48397786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_1:
48407786266dSMatt Arsenault; GFX900:       ; %bb.0:
48417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48437786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
48447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4845*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s4
48467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4847*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
48487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48507786266dSMatt Arsenault;
48517786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_1:
48527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48557786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
48567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4857*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s4
48587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4859*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
48607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48627786266dSMatt Arsenault;
48637786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_1:
48647786266dSMatt Arsenault; GFX940:       ; %bb.0:
48657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
48677786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
48687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4869*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s1, s0
48707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4871*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
48727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48747786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
48757786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 1>
4876*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
48777786266dSMatt Arsenault  ret void
48787786266dSMatt Arsenault}
48797786266dSMatt Arsenault
48807786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_1() {
48817786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_1:
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:5]
48867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4887*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s4
48887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4889*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
48907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48927786266dSMatt Arsenault;
48937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_1:
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:5]
48987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4899*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s4
49007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4901*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
49027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49047786266dSMatt Arsenault;
49057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_1:
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:1]
49107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4911*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s1, s0
49127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4913*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
49147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49167786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
49177786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 1>
4918*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
49197786266dSMatt Arsenault  ret void
49207786266dSMatt Arsenault}
49217786266dSMatt Arsenault
49227786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_1() {
49237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_1:
49247786266dSMatt Arsenault; GFX900:       ; %bb.0:
49257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4927*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
49287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4930*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
49317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49337786266dSMatt Arsenault;
49347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_1:
49357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4938*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
49397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4941*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
49427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49447786266dSMatt Arsenault;
49457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_1:
49467786266dSMatt Arsenault; GFX940:       ; %bb.0:
49477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4949*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
49507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49517786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
49527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4953*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
49547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49567786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
49577786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 1>
4958*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
49597786266dSMatt Arsenault  ret void
49607786266dSMatt Arsenault}
49617786266dSMatt Arsenault
49627786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_1() {
49637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_1:
49647786266dSMatt Arsenault; GFX900:       ; %bb.0:
49657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49677786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
49687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49707786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
49717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4972*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s6, s4
49737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4974*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
49757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49777786266dSMatt Arsenault;
49787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_1:
49797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49827786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
49837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49857786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
49867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4987*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s6, s4
49887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4989*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
49907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49927786266dSMatt Arsenault;
49937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_1:
49947786266dSMatt Arsenault; GFX940:       ; %bb.0:
49957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
49977786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
49987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50007786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
50017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5002*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s2, s0
50037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5004*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
50057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50077786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
50087786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
50097786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 1>
5010*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
50117786266dSMatt Arsenault  ret void
50127786266dSMatt Arsenault}
50137786266dSMatt Arsenault
50147786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_1() {
50157786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_1:
50167786266dSMatt Arsenault; GFX900:       ; %bb.0:
50177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50197786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
50207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50227786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
50237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5024*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s4
50257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5026*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
50277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50297786266dSMatt Arsenault;
50307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_1:
50317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50347786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
50357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50377786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
50387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5039*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s4
50407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5041*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
50427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50447786266dSMatt Arsenault;
50457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_1:
50467786266dSMatt Arsenault; GFX940:       ; %bb.0:
50477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50497786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
50507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50527786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
50537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5054*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s3, s0
50557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5056*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
50577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50597786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
50607786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
50617786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 1>
5062*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
50637786266dSMatt Arsenault  ret void
50647786266dSMatt Arsenault}
50657786266dSMatt Arsenault
50667786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_2() {
50677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_2:
50687786266dSMatt Arsenault; GFX900:       ; %bb.0:
50697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50717786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
50727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5073*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshl_b32 s8, s5, 16
50747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5075*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
50767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50787786266dSMatt Arsenault;
50797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_2:
50807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50837786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
50847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5085*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshl_b32 s8, s5, 16
50867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5087*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
50887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50907786266dSMatt Arsenault;
50917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_2:
50927786266dSMatt Arsenault; GFX940:       ; %bb.0:
50937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50957786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
50967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5097*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshl_b32 s8, s1, 16
50987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5099*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
51007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51027786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
51037786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 2>
5104*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
51057786266dSMatt Arsenault  ret void
51067786266dSMatt Arsenault}
51077786266dSMatt Arsenault
51087786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_2() {
51097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_2:
51107786266dSMatt Arsenault; GFX900:       ; %bb.0:
51117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
51147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5115*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
51167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5117*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
51187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51207786266dSMatt Arsenault;
51217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_2:
51227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51257786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
51267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5127*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
51287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5129*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
51307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51327786266dSMatt Arsenault;
51337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_2:
51347786266dSMatt Arsenault; GFX940:       ; %bb.0:
51357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51377786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
51387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5139*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s1
51407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5141*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
51427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51447786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
51457786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 2>
5146*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
51477786266dSMatt Arsenault  ret void
51487786266dSMatt Arsenault}
51497786266dSMatt Arsenault
51507786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_2() {
51517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_2:
51527786266dSMatt Arsenault; GFX900:       ; %bb.0:
51537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51557786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
51567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51577786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s4, s4, 16
5158*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
51597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5160*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
51617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51637786266dSMatt Arsenault;
51647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_2:
51657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51687786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
51697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51707786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s4, s4, 16
5171*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
51727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5173*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
51747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51767786266dSMatt Arsenault;
51777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_2:
51787786266dSMatt Arsenault; GFX940:       ; %bb.0:
51797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51817786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
51827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51837786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s0, s0, 16
5184*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s1
51857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5186*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
51877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51897786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
51907786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 2>
5191*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
51927786266dSMatt Arsenault  ret void
51937786266dSMatt Arsenault}
51947786266dSMatt Arsenault
51957786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_2() {
51967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_2:
51977786266dSMatt Arsenault; GFX900:       ; %bb.0:
51987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52007786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
52017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5202*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s5
52037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5204*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
52057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52077786266dSMatt Arsenault;
52087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_2:
52097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
52127786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
52137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5214*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s5
52157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5216*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
52177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52197786266dSMatt Arsenault;
52207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_2:
52217786266dSMatt Arsenault; GFX940:       ; %bb.0:
52227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
52247786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
52257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5226*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s1
52277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5228*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
52297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52317786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
52327786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 2>
5233*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
52347786266dSMatt Arsenault  ret void
52357786266dSMatt Arsenault}
52367786266dSMatt Arsenault
52377786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_2() {
52387786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_2:
52397786266dSMatt Arsenault; GFX900:       ; %bb.0:
52407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52427786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
52437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52447786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s4, s5, 16
5245*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
52467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5247*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
52487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52507786266dSMatt Arsenault;
52517786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_2:
52527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
52557786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
52567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52577786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s4, s5, 16
5258*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
52597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5260*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
52617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52637786266dSMatt Arsenault;
52647786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_2:
52657786266dSMatt Arsenault; GFX940:       ; %bb.0:
52667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
52687786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
52697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52707786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s0, s1, 16
5271*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s1
52727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5273*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
52747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52767786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
52777786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 2>
5278*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
52797786266dSMatt Arsenault  ret void
52807786266dSMatt Arsenault}
52817786266dSMatt Arsenault
52827786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_2() {
52837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_2:
52847786266dSMatt Arsenault; GFX900:       ; %bb.0:
52857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52877786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
52887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5289*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshl_b32 s8, s5, 16
52907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5291*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
52927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52947786266dSMatt Arsenault;
52957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_2:
52967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
52997786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
53007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5301*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshl_b32 s8, s5, 16
53027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5303*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
53047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53057786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53067786266dSMatt Arsenault;
53077786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_2:
53087786266dSMatt Arsenault; GFX940:       ; %bb.0:
53097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
53117786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
53127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5313*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshl_b32 s8, s1, 16
53147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5315*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
53167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53187786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
53197786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 2>
5320*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
53217786266dSMatt Arsenault  ret void
53227786266dSMatt Arsenault}
53237786266dSMatt Arsenault
53247786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_2() {
53257786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_2:
53267786266dSMatt Arsenault; GFX900:       ; %bb.0:
53277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53297786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
53307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53327786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
53337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53347786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s4, s6, 16
5335*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
53367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5337*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
53387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53407786266dSMatt Arsenault;
53417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_2:
53427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53457786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
53467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53487786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
53497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53507786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s4, s6, 16
5351*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
53527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5353*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
53547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53567786266dSMatt Arsenault;
53577786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_2:
53587786266dSMatt Arsenault; GFX940:       ; %bb.0:
53597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
53617786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
53627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
53647786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
53657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53667786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s0, s2, 16
5367*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s1
53687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5369*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
53707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53727786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
53737786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
53747786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 2>
5375*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
53767786266dSMatt Arsenault  ret void
53777786266dSMatt Arsenault}
53787786266dSMatt Arsenault
53797786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_2() {
53807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_2:
53817786266dSMatt Arsenault; GFX900:       ; %bb.0:
53827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53847786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
53857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53877786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
53887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5389*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s5
53907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5391*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
53927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53947786266dSMatt Arsenault;
53957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_2:
53967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53997786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
54007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
54037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5404*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s5
54057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5406*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
54077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54097786266dSMatt Arsenault;
54107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_2:
54117786266dSMatt Arsenault; GFX940:       ; %bb.0:
54127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
54147786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
54157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
54177786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
54187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5419*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s3, s1
54207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5421*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
54227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54247786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
54257786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
54267786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 2>
5427*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
54287786266dSMatt Arsenault  ret void
54297786266dSMatt Arsenault}
54307786266dSMatt Arsenault
54317786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_3() {
54327786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_3:
54337786266dSMatt Arsenault; GFX900:       ; %bb.0:
54347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54367786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
54377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5438*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
54397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5440*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
54417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54437786266dSMatt Arsenault;
54447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_3:
54457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54487786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
54497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5450*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
54517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5452*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
54537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54557786266dSMatt Arsenault;
54567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_3:
54577786266dSMatt Arsenault; GFX940:       ; %bb.0:
54587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
54607786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
54617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5462*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
54637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5464*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
54657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54677786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
54687786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 3>
5469*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
54707786266dSMatt Arsenault  ret void
54717786266dSMatt Arsenault}
54727786266dSMatt Arsenault
54737786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_3() {
54747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_3:
54757786266dSMatt Arsenault; GFX900:       ; %bb.0:
54767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
54797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5480*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s5
54817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5482*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
54837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54857786266dSMatt Arsenault;
54867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_3:
54877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54907786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
54917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5492*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s5
54937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5494*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
54957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54977786266dSMatt Arsenault;
54987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_3:
54997786266dSMatt Arsenault; GFX940:       ; %bb.0:
55007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
55027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
55037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5504*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s0, s1
55057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5506*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
55077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55097786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
55107786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 3>
5511*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
55127786266dSMatt Arsenault  ret void
55137786266dSMatt Arsenault}
55147786266dSMatt Arsenault
55157786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_3() {
55167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_3:
55177786266dSMatt Arsenault; GFX900:       ; %bb.0:
55187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55207786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
55217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5522*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s5
55237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5524*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
55257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
55277786266dSMatt Arsenault;
55287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_3:
55297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
55307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55327786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
55337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5534*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s5
55357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5536*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
55377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55387786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
55397786266dSMatt Arsenault;
55407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_3:
55417786266dSMatt Arsenault; GFX940:       ; %bb.0:
55427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
55447786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
55457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5546*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s1
55477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5548*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
55497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55517786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
55527786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 3>
5553*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
55547786266dSMatt Arsenault  ret void
55557786266dSMatt Arsenault}
55567786266dSMatt Arsenault
55577786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_3() {
55587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_3:
55597786266dSMatt Arsenault; GFX900:       ; %bb.0:
55607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55627786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
55637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5564*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
55657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5566*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
55677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
55697786266dSMatt Arsenault;
55707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_3:
55717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
55727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55747786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
55757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5576*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
55777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5578*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
55797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
55817786266dSMatt Arsenault;
55827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_3:
55837786266dSMatt Arsenault; GFX940:       ; %bb.0:
55847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
55867786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
55877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5588*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
55897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5590*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
55917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55937786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
55947786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 3>
5595*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
55967786266dSMatt Arsenault  ret void
55977786266dSMatt Arsenault}
55987786266dSMatt Arsenault
55997786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_3() {
56007786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_3:
56017786266dSMatt Arsenault; GFX900:       ; %bb.0:
56027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56047786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
56057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5606*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s5
56077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5608*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
56097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56117786266dSMatt Arsenault;
56127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_3:
56137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56167786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
56177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5618*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s5
56197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5620*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
56217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56237786266dSMatt Arsenault;
56247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_3:
56257786266dSMatt Arsenault; GFX940:       ; %bb.0:
56267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
56287786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
56297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5630*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s1, s1
56317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5632*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
56337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
56357786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
56367786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 3>
5637*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
56387786266dSMatt Arsenault  ret void
56397786266dSMatt Arsenault}
56407786266dSMatt Arsenault
56417786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_3() {
56427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_3:
56437786266dSMatt Arsenault; GFX900:       ; %bb.0:
56447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56467786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
56477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5648*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
56497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5650*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
56517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56537786266dSMatt Arsenault;
56547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_3:
56557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
56597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5660*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
56617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5662*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
56637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56657786266dSMatt Arsenault;
56667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_3:
56677786266dSMatt Arsenault; GFX940:       ; %bb.0:
56687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
56707786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
56717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5672*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
56737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5674*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
56757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
56777786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
56787786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 3>
5679*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
56807786266dSMatt Arsenault  ret void
56817786266dSMatt Arsenault}
56827786266dSMatt Arsenault
56837786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_3() {
56847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_3:
56857786266dSMatt Arsenault; GFX900:       ; %bb.0:
56867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56887786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
56897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56917786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
56927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5693*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s6, s5
56947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5695*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
56967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56987786266dSMatt Arsenault;
56997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_3:
57007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57037786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
57047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57067786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
57077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5708*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s6, s5
57097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5710*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
57117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
57137786266dSMatt Arsenault;
57147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_3:
57157786266dSMatt Arsenault; GFX940:       ; %bb.0:
57167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57187786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
57197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57217786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
57227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5723*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s2, s1
57247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5725*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
57267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
57287786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
57297786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
57307786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 3>
5731*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
57327786266dSMatt Arsenault  ret void
57337786266dSMatt Arsenault}
57347786266dSMatt Arsenault
57357786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_3() {
57367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_3:
57377786266dSMatt Arsenault; GFX900:       ; %bb.0:
57387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57407786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
57417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57437786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
57447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5745*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s5
57467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5747*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
57487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
57507786266dSMatt Arsenault;
57517786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_3:
57527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57557786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
57567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
57597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5760*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s5
57617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5762*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
57637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
57657786266dSMatt Arsenault;
57667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_3:
57677786266dSMatt Arsenault; GFX940:       ; %bb.0:
57687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57707786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
57717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57737786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
57747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5775*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s3, s1
57767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5777*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
57787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
57807786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
57817786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
57827786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 3>
5783*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
57847786266dSMatt Arsenault  ret void
57857786266dSMatt Arsenault}
57867786266dSMatt Arsenault
57877786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_4() {
5788*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v4i16__u_4:
5789*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5790*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5791*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5792*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s8
5793*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5794*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
57957786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
57967786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 4>
5797*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
57987786266dSMatt Arsenault  ret void
57997786266dSMatt Arsenault}
58007786266dSMatt Arsenault
58017786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_4() {
58027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_4:
58037786266dSMatt Arsenault; GFX900:       ; %bb.0:
58047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5806*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
58077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5809*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
58107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
58127786266dSMatt Arsenault;
58137786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_4:
58147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
58157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5817*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
58187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5820*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
58217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
58237786266dSMatt Arsenault;
58247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_4:
58257786266dSMatt Arsenault; GFX940:       ; %bb.0:
58267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5828*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
58297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58307786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
58317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5832*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
58337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
58357786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
58367786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 4>
5837*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
58387786266dSMatt Arsenault  ret void
58397786266dSMatt Arsenault}
58407786266dSMatt Arsenault
58417786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_4() {
58427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_4:
58437786266dSMatt Arsenault; GFX900:       ; %bb.0:
58447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
58467786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
58477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5848*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s4, 16
58497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5850*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
58517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
58537786266dSMatt Arsenault;
58547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_4:
58557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
58567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
58587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
58597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5860*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s4, 16
58617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5862*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
58637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
58647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
58657786266dSMatt Arsenault;
58667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_4:
58677786266dSMatt Arsenault; GFX940:       ; %bb.0:
58687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
58707786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
58717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5872*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s0, 16
58737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5874*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
58757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
58777786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
58787786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 4>
5879*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
58807786266dSMatt Arsenault  ret void
58817786266dSMatt Arsenault}
58827786266dSMatt Arsenault
58837786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_4() {
58847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_4:
58857786266dSMatt Arsenault; GFX900:       ; %bb.0:
58867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
58887786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
58897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5890*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
58917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5892*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
58937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
58947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
58957786266dSMatt Arsenault;
58967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_4:
58977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
58987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
58997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59007786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
59017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5902*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
59037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5904*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
59057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
59077786266dSMatt Arsenault;
59087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_4:
59097786266dSMatt Arsenault; GFX940:       ; %bb.0:
59107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
59127786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
59137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5914*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
59157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5916*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
59177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
59197786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
59207786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 4>
5921*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
59227786266dSMatt Arsenault  ret void
59237786266dSMatt Arsenault}
59247786266dSMatt Arsenault
59257786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_4() {
59267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_4:
59277786266dSMatt Arsenault; GFX900:       ; %bb.0:
59287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59307786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
59317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5932*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s5, 16
59337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5934*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
59357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59377786266dSMatt Arsenault;
59387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_4:
59397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
59437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5944*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s5, 16
59457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5946*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
59477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
59497786266dSMatt Arsenault;
59507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_4:
59517786266dSMatt Arsenault; GFX940:       ; %bb.0:
59527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
59547786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
59557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5956*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s1, 16
59577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5958*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
59597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
59617786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
59627786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 4>
5963*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
59647786266dSMatt Arsenault  ret void
59657786266dSMatt Arsenault}
59667786266dSMatt Arsenault
59677786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_4() {
5968*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v4i16__4_4:
5969*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5970*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5971*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5972*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s8
5973*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5974*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
59757786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
59767786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 4>
5977*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
59787786266dSMatt Arsenault  ret void
59797786266dSMatt Arsenault}
59807786266dSMatt Arsenault
59817786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_4() {
59827786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_4:
59837786266dSMatt Arsenault; GFX900:       ; %bb.0:
59847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59867786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
59877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59887786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s4, 16
5989*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
59907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5991*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
59927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59947786266dSMatt Arsenault;
59957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_4:
59967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59997786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
60007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60017786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s4, 16
6002*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
60037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6004*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
60057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
60077786266dSMatt Arsenault;
60087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_4:
60097786266dSMatt Arsenault; GFX940:       ; %bb.0:
60107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
60127786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
60137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60147786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s0, 16
6015*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
60167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6017*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
60187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
60207786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
60217786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
60227786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 4>
6023*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
60247786266dSMatt Arsenault  ret void
60257786266dSMatt Arsenault}
60267786266dSMatt Arsenault
60277786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_4() {
60287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_4:
60297786266dSMatt Arsenault; GFX900:       ; %bb.0:
60307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60327786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
60337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6034*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
60357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6036*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
60377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
60397786266dSMatt Arsenault;
60407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_4:
60417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
60427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
60457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6046*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
60477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6048*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
60497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
60517786266dSMatt Arsenault;
60527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_4:
60537786266dSMatt Arsenault; GFX940:       ; %bb.0:
60547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
60567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
60577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6058*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
60597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6060*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
60617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
60637786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
60647786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
60657786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 4>
6066*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
60677786266dSMatt Arsenault  ret void
60687786266dSMatt Arsenault}
60697786266dSMatt Arsenault
60707786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_5() {
60717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_5:
60727786266dSMatt Arsenault; GFX900:       ; %bb.0:
60737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6075*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
60767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6078*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
60797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
60817786266dSMatt Arsenault;
60827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_5:
60837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
60847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6086*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
60877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6089*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
60907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
60927786266dSMatt Arsenault;
60937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_5:
60947786266dSMatt Arsenault; GFX940:       ; %bb.0:
60957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6097*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
60987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60997786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
61007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6101*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
61027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
61047786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
61057786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
61067786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 5>
6107*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
61087786266dSMatt Arsenault  ret void
61097786266dSMatt Arsenault}
61107786266dSMatt Arsenault
61117786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_5() {
61127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_5:
61137786266dSMatt Arsenault; GFX900:       ; %bb.0:
61147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61167786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
61177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61197786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
61207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6121*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s6
61227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6123*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
61247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
61267786266dSMatt Arsenault;
61277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_5:
61287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
61297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61317786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
61327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61347786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
61357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6136*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s6
61377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6138*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
61397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
61417786266dSMatt Arsenault;
61427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_5:
61437786266dSMatt Arsenault; GFX940:       ; %bb.0:
61447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61467786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
61477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61497786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
61507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6151*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s0, s2
61527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6153*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
61547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
61567786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
61577786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
61587786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 5>
6159*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
61607786266dSMatt Arsenault  ret void
61617786266dSMatt Arsenault}
61627786266dSMatt Arsenault
61637786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_5() {
61647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_5:
61657786266dSMatt Arsenault; GFX900:       ; %bb.0:
61667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
61697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61717786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
61727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6173*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s6
61747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6175*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
61767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
61787786266dSMatt Arsenault;
61797786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_5:
61807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
61817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61837786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
61847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
61877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6188*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s6
61897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6190*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
61917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
61937786266dSMatt Arsenault;
61947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_5:
61957786266dSMatt Arsenault; GFX940:       ; %bb.0:
61967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61987786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
61997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62017786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
62027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6203*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s2
62047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6205*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
62067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
62087786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
62097786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
62107786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 5>
6211*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
62127786266dSMatt Arsenault  ret void
62137786266dSMatt Arsenault}
62147786266dSMatt Arsenault
62157786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_5() {
62167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_5:
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:5]
62217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62237786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
62247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6225*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s6
62267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6227*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
62287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
62307786266dSMatt Arsenault;
62317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_5:
62327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
62337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62357786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
62367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62387786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
62397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6240*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s6
62417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6242*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
62437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
62457786266dSMatt Arsenault;
62467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_5:
62477786266dSMatt Arsenault; GFX940:       ; %bb.0:
62487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62507786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
62517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
62547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6255*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s1, s2
62567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6257*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
62587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62597786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
62607786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
62617786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
62627786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 5>
6263*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
62647786266dSMatt Arsenault  ret void
62657786266dSMatt Arsenault}
62667786266dSMatt Arsenault
62677786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_5() {
62687786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_5:
62697786266dSMatt Arsenault; GFX900:       ; %bb.0:
62707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62727786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
62737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62757786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
62767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6277*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s6
62787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6279*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
62807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
62827786266dSMatt Arsenault;
62837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_5:
62847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
62857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
62887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62907786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
62917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6292*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s6
62937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6294*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
62957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
62977786266dSMatt Arsenault;
62987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_5:
62997786266dSMatt Arsenault; GFX940:       ; %bb.0:
63007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
63027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
63037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
63057786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
63067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6307*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s1, s2
63087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6309*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
63107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
63127786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
63137786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
63147786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 5>
6315*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
63167786266dSMatt Arsenault  ret void
63177786266dSMatt Arsenault}
63187786266dSMatt Arsenault
63197786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_5() {
63207786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_5:
63217786266dSMatt Arsenault; GFX900:       ; %bb.0:
63227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6324*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
63257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6327*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
63287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
63307786266dSMatt Arsenault;
63317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_5:
63327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
63337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6335*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
63367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6338*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
63397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
63417786266dSMatt Arsenault;
63427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_5:
63437786266dSMatt Arsenault; GFX940:       ; %bb.0:
63447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6346*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
63477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63487786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
63497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6350*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
63517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
63537786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
63547786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
63557786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 5>
6356*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
63577786266dSMatt Arsenault  ret void
63587786266dSMatt Arsenault}
63597786266dSMatt Arsenault
63607786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_5() {
63617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_5:
63627786266dSMatt Arsenault; GFX900:       ; %bb.0:
63637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
63657786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
63667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6367*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s4
63687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6369*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
63707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
63727786266dSMatt Arsenault;
63737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_5:
63747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
63757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
63777786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
63787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6379*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s4
63807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6381*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
63827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
63837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
63847786266dSMatt Arsenault;
63857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_5:
63867786266dSMatt Arsenault; GFX940:       ; %bb.0:
63877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
63897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
63907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6391*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s0
63927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6393*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
63947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
63957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
63967786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
63977786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
63987786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 5>
6399*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
64007786266dSMatt Arsenault  ret void
64017786266dSMatt Arsenault}
64027786266dSMatt Arsenault
64037786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_5() {
64047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_5:
64057786266dSMatt Arsenault; GFX900:       ; %bb.0:
64067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64087786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
64097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6410*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s4
64117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6412*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
64137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
64157786266dSMatt Arsenault;
64167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_5:
64177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
64187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64207786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
64217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6422*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s4
64237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6424*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
64257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
64277786266dSMatt Arsenault;
64287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_5:
64297786266dSMatt Arsenault; GFX940:       ; %bb.0:
64307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64327786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
64337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6434*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s1, s0
64357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6436*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
64377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
64397786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
64407786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
64417786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 5>
6442*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
64437786266dSMatt Arsenault  ret void
64447786266dSMatt Arsenault}
64457786266dSMatt Arsenault
64467786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_6() {
64477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_6:
64487786266dSMatt Arsenault; GFX900:       ; %bb.0:
64497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64517786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
64527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6453*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshl_b32 s8, s5, 16
64547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6455*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
64567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
64587786266dSMatt Arsenault;
64597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_6:
64607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
64617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64637786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
64647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6465*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshl_b32 s8, s5, 16
64667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6467*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
64687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
64707786266dSMatt Arsenault;
64717786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_6:
64727786266dSMatt Arsenault; GFX940:       ; %bb.0:
64737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64757786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
64767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6477*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshl_b32 s8, s1, 16
64787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6479*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
64807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
64827786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
64837786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
64847786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 6>
6485*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
64867786266dSMatt Arsenault  ret void
64877786266dSMatt Arsenault}
64887786266dSMatt Arsenault
64897786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_6() {
64907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_6:
64917786266dSMatt Arsenault; GFX900:       ; %bb.0:
64927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64947786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
64957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64977786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
64987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6499*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s7
65007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6501*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
65027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
65047786266dSMatt Arsenault;
65057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_6:
65067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
65077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65097786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
65107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65127786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
65137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6514*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s7
65157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6516*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
65177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
65197786266dSMatt Arsenault;
65207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_6:
65217786266dSMatt Arsenault; GFX940:       ; %bb.0:
65227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
65247786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
65257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
65277786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
65287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6529*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s3
65307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6531*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
65327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
65347786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
65357786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
65367786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 6>
6537*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
65387786266dSMatt Arsenault  ret void
65397786266dSMatt Arsenault}
65407786266dSMatt Arsenault
65417786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_6() {
65427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_6:
65437786266dSMatt Arsenault; GFX900:       ; %bb.0:
65447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
65467786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
65477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65487786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s4, s4, 16
65497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
65507786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
65517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6552*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s7
65537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6554*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
65557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
65577786266dSMatt Arsenault;
65587786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_6:
65597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
65607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65627786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
65637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65647786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s4, s4, 16
65657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65667786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
65677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6568*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s7
65697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6570*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
65717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
65737786266dSMatt Arsenault;
65747786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_6:
65757786266dSMatt Arsenault; GFX940:       ; %bb.0:
65767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
65787786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
65797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65807786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s0, s0, 16
65817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
65827786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
65837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6584*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s3
65857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6586*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
65877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
65897786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
65907786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
65917786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 6>
6592*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
65937786266dSMatt Arsenault  ret void
65947786266dSMatt Arsenault}
65957786266dSMatt Arsenault
65967786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_6() {
65977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_6:
65987786266dSMatt Arsenault; GFX900:       ; %bb.0:
65997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66017786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
66027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66047786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
66057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6606*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s7
66077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6608*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
66097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
66117786266dSMatt Arsenault;
66127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_6:
66137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
66147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66167786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
66177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66197786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
66207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6621*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s7
66227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6623*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
66247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
66267786266dSMatt Arsenault;
66277786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_6:
66287786266dSMatt Arsenault; GFX940:       ; %bb.0:
66297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
66317786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
66327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
66347786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
66357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6636*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s3
66377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6638*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
66397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
66417786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
66427786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
66437786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 6>
6644*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
66457786266dSMatt Arsenault  ret void
66467786266dSMatt Arsenault}
66477786266dSMatt Arsenault
66487786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_6() {
66497786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_6:
66507786266dSMatt Arsenault; GFX900:       ; %bb.0:
66517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66537786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
66547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66557786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s4, s5, 16
66567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66577786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
66587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6659*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s7
66607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6661*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
66627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
66647786266dSMatt Arsenault;
66657786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_6:
66667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
66677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66697786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
66707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66717786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s4, s5, 16
66727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66737786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
66747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6675*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s7
66767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6677*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
66787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66797786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
66807786266dSMatt Arsenault;
66817786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_6:
66827786266dSMatt Arsenault; GFX940:       ; %bb.0:
66837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
66857786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
66867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66877786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s0, s1, 16
66887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
66897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
66907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6691*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s3
66927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6693*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
66947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
66967786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
66977786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
66987786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 6>
6699*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
67007786266dSMatt Arsenault  ret void
67017786266dSMatt Arsenault}
67027786266dSMatt Arsenault
67037786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_6() {
67047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_6:
67057786266dSMatt Arsenault; GFX900:       ; %bb.0:
67067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67087786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
67097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6710*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
67117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6712*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
67137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
67157786266dSMatt Arsenault;
67167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_6:
67177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
67187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67207786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
67217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6722*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
67237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6724*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
67257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
67277786266dSMatt Arsenault;
67287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_6:
67297786266dSMatt Arsenault; GFX940:       ; %bb.0:
67307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67327786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
67337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6734*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s1
67357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6736*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
67377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
67397786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
67407786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
67417786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 6>
6742*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
67437786266dSMatt Arsenault  ret void
67447786266dSMatt Arsenault}
67457786266dSMatt Arsenault
67467786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_6() {
67477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_6:
67487786266dSMatt Arsenault; GFX900:       ; %bb.0:
67497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67517786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
67527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67537786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s4, s4, 16
6754*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
67557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6756*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
67577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
67597786266dSMatt Arsenault;
67607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_6:
67617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
67627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67647786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
67657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67667786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s4, s4, 16
6767*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s5
67687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6769*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
67707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
67727786266dSMatt Arsenault;
67737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_6:
67747786266dSMatt Arsenault; GFX940:       ; %bb.0:
67757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67777786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
67787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67797786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s0, s0, 16
6780*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s1
67817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6782*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
67837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
67857786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
67867786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
67877786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 6>
6788*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
67897786266dSMatt Arsenault  ret void
67907786266dSMatt Arsenault}
67917786266dSMatt Arsenault
67927786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_6() {
67937786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_6:
67947786266dSMatt Arsenault; GFX900:       ; %bb.0:
67957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67977786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
67987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6799*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s5
68007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6801*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
68027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
68047786266dSMatt Arsenault;
68057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_6:
68067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68097786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
68107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6811*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s5
68127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6813*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
68147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
68167786266dSMatt Arsenault;
68177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_6:
68187786266dSMatt Arsenault; GFX940:       ; %bb.0:
68197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
68217786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
68227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6823*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s1
68247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6825*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
68267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
68277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
68287786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
68297786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
68307786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 6>
6831*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
68327786266dSMatt Arsenault  ret void
68337786266dSMatt Arsenault}
68347786266dSMatt Arsenault
68357786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__u_7() {
68367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_7:
68377786266dSMatt Arsenault; GFX900:       ; %bb.0:
68387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68407786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
68417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6842*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
68437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6844*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
68457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
68477786266dSMatt Arsenault;
68487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_7:
68497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68527786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
68537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6854*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
68557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6856*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
68577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
68597786266dSMatt Arsenault;
68607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__u_7:
68617786266dSMatt Arsenault; GFX940:       ; %bb.0:
68627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
68647786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
68657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6866*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
68677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6868*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
68697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
68707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
68717786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
68727786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
68737786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 7>
6874*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
68757786266dSMatt Arsenault  ret void
68767786266dSMatt Arsenault}
68777786266dSMatt Arsenault
68787786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__0_7() {
68797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_7:
68807786266dSMatt Arsenault; GFX900:       ; %bb.0:
68817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68837786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
68847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68867786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
68877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6888*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s7
68897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6890*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
68917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
68937786266dSMatt Arsenault;
68947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_7:
68957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68987786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
68997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69017786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
69027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6903*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s7
69047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6905*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
69067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
69087786266dSMatt Arsenault;
69097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__0_7:
69107786266dSMatt Arsenault; GFX940:       ; %bb.0:
69117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
69137786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
69147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
69167786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
69177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6918*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s0, s3
69197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6920*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
69217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
69237786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
69247786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
69257786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 7>
6926*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
69277786266dSMatt Arsenault  ret void
69287786266dSMatt Arsenault}
69297786266dSMatt Arsenault
69307786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__1_7() {
69317786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_7:
69327786266dSMatt Arsenault; GFX900:       ; %bb.0:
69337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69357786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
69367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69387786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
69397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6940*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s7
69417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6942*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
69437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
69457786266dSMatt Arsenault;
69467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_7:
69477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
69487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
69517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
69547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6955*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s7
69567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6957*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
69587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
69607786266dSMatt Arsenault;
69617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__1_7:
69627786266dSMatt Arsenault; GFX940:       ; %bb.0:
69637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
69657786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
69667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
69687786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
69697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6970*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s3
69717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6972*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
69737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
69757786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
69767786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
69777786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 7>
6978*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
69797786266dSMatt Arsenault  ret void
69807786266dSMatt Arsenault}
69817786266dSMatt Arsenault
69827786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__2_7() {
69837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_7:
69847786266dSMatt Arsenault; GFX900:       ; %bb.0:
69857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69877786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
69887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69907786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
69917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6992*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s7
69937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6994*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
69957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
69977786266dSMatt Arsenault;
69987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_7:
69997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
70007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
70027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
70037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
70047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
70057786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
70067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7007*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s7
70087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7009*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
70107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
70117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
70127786266dSMatt Arsenault;
70137786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__2_7:
70147786266dSMatt Arsenault; GFX940:       ; %bb.0:
70157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
70177786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
70187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
70197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
70207786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
70217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7022*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s1, s3
70237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7024*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
70257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
70267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
70277786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
70287786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
70297786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 7>
7030*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
70317786266dSMatt Arsenault  ret void
70327786266dSMatt Arsenault}
70337786266dSMatt Arsenault
70347786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__3_7() {
70357786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_7:
70367786266dSMatt Arsenault; GFX900:       ; %bb.0:
70377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
70397786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
70407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
70417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
70427786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
70437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7044*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s7
70457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7046*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
70477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
70487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
70497786266dSMatt Arsenault;
70507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_7:
70517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
70527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
70547786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
70557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
70567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
70577786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
70587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7059*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s7
70607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7061*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
70627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
70637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
70647786266dSMatt Arsenault;
70657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__3_7:
70667786266dSMatt Arsenault; GFX940:       ; %bb.0:
70677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
70697786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
70707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
70717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
70727786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
70737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7074*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s1, s3
70757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7076*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
70777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
70787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
70797786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
70807786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
70817786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 7>
7082*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
70837786266dSMatt Arsenault  ret void
70847786266dSMatt Arsenault}
70857786266dSMatt Arsenault
70867786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__4_7() {
70877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_7:
70887786266dSMatt Arsenault; GFX900:       ; %bb.0:
70897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
70917786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
70927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7093*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s5
70947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7095*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
70967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
70977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
70987786266dSMatt Arsenault;
70997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_7:
71007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
71017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
71037786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
71047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7105*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s5
71067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7107*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
71087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
71097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
71107786266dSMatt Arsenault;
71117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__4_7:
71127786266dSMatt Arsenault; GFX940:       ; %bb.0:
71137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
71157786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
71167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7117*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s0, s1
71187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7119*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
71207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
71217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
71227786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
71237786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
71247786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 7>
7125*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
71267786266dSMatt Arsenault  ret void
71277786266dSMatt Arsenault}
71287786266dSMatt Arsenault
71297786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__5_7() {
71307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_7:
71317786266dSMatt Arsenault; GFX900:       ; %bb.0:
71327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
71347786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
71357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7136*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s5
71377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7138*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
71397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
71407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
71417786266dSMatt Arsenault;
71427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_7:
71437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
71447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
71467786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
71477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7148*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s5
71497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7150*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
71517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
71527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
71537786266dSMatt Arsenault;
71547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__5_7:
71557786266dSMatt Arsenault; GFX940:       ; %bb.0:
71567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
71587786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
71597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7160*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s1
71617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7162*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
71637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
71647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
71657786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
71667786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
71677786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 7>
7168*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
71697786266dSMatt Arsenault  ret void
71707786266dSMatt Arsenault}
71717786266dSMatt Arsenault
71727786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v4i16__6_7() {
71737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_7:
71747786266dSMatt Arsenault; GFX900:       ; %bb.0:
71757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
71777786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
71787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7179*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
71807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7181*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
71827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
71837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
71847786266dSMatt Arsenault;
71857786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_7:
71867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
71877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
71897786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
71907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7191*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
71927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7193*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
71947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
71957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
71967786266dSMatt Arsenault;
71977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v4i16__6_7:
71987786266dSMatt Arsenault; GFX940:       ; %bb.0:
71997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
72017786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
72027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7203*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
72047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7205*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
72067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
72077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
72087786266dSMatt Arsenault  %vec0 = call <4 x i16> asm "; def $0", "=s"()
72097786266dSMatt Arsenault  %vec1 = call <4 x i16> asm "; def $0", "=s"()
72107786266dSMatt Arsenault  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 7>
7211*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
72127786266dSMatt Arsenault  ret void
72137786266dSMatt Arsenault}
72147786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
72157786266dSMatt Arsenault; GFX90APLUS: {{.*}}
7216