xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v2i16.v2i16.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_v2i16__u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v2i16__u_u:
97786266dSMatt Arsenault; GFX9:       ; %bb.0:
107786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
117786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
127786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 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_v2i16__0_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__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 v0, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, 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_v2i16__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 v0, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, 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_v2i16__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 v0, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
517786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 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_v2i16__1_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__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 v1
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 16
667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, 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_v2i16__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 v1
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
777786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 16
787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, 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_v2i16__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 v1
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
897786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v1, s0, v1, 16
907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
937786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
947786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 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_v2i16__2_u(ptr addrspace(1) inreg %ptr) {
1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v2i16__2_u:
1017786266dSMatt Arsenault; GFX9:       ; %bb.0:
1027786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1037786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1047786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
1057786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 poison>
1067786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
1077786266dSMatt Arsenault  ret void
1087786266dSMatt Arsenault}
1097786266dSMatt Arsenault
1107786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_u(ptr addrspace(1) inreg %ptr) {
1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_u:
1127786266dSMatt Arsenault; GFX900:       ; %bb.0:
1137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1157786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
1167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
1187786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 16
1197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
1207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1227786266dSMatt Arsenault;
1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__3_u:
1247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
1287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
1307786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 16
1317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
1327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1347786266dSMatt Arsenault;
1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__3_u:
1367786266dSMatt Arsenault; GFX940:       ; %bb.0:
1377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1397786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
1407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
1427786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v1, s0, v1, 16
1437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
1447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1467786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
1477786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
1487786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 poison>
1497786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
1507786266dSMatt Arsenault  ret void
1517786266dSMatt Arsenault}
1527786266dSMatt Arsenault
1537786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_0(ptr addrspace(1) inreg %ptr) {
1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_0:
1557786266dSMatt Arsenault; GFX900:       ; %bb.0:
1567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1587786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
1597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
1617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1627786266dSMatt Arsenault; GFX900-NEXT:    ; def v2
1637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1647786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 16
1657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
1667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1687786266dSMatt Arsenault;
1697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__3_0:
1707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
1747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
1767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v2
1787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1797786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v2, 16
1807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
1817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1837786266dSMatt Arsenault;
1847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__3_0:
1857786266dSMatt Arsenault; GFX940:       ; %bb.0:
1867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1887786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
1897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
1917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1927786266dSMatt Arsenault; GFX940-NEXT:    ; def v2
1937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1947786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
1957786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v1, v1, v2, 16
1967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
1977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1997786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
2007786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
2017786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 0>
2027786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
2037786266dSMatt Arsenault  ret void
2047786266dSMatt Arsenault}
2057786266dSMatt Arsenault
2067786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_1(ptr addrspace(1) inreg %ptr) {
2077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_1:
2087786266dSMatt Arsenault; GFX900:       ; %bb.0:
2097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2117786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
2127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2137786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
2147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
2157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2167786266dSMatt Arsenault; GFX900-NEXT:    ; def v2
2177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2187786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s4
2197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
2207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2227786266dSMatt Arsenault;
2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__3_1:
2247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
2287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2297786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
2307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
2317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2327786266dSMatt Arsenault; GFX90A-NEXT:    ; def v2
2337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2347786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v1, v1, v2, s4
2357786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
2367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2387786266dSMatt Arsenault;
2397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__3_1:
2407786266dSMatt Arsenault; GFX940:       ; %bb.0:
2417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2437786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
2447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2457786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
2467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
2477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2487786266dSMatt Arsenault; GFX940-NEXT:    ; def v2
2497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2507786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2517786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v1, v1, v2, s2
2527786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
2537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2557786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
2567786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
2577786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 1>
2587786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
2597786266dSMatt Arsenault  ret void
2607786266dSMatt Arsenault}
2617786266dSMatt Arsenault
2627786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_2(ptr addrspace(1) inreg %ptr) {
2637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_2:
2647786266dSMatt Arsenault; GFX900:       ; %bb.0:
2657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2677786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
2687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
2707786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 16
2717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
2727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2747786266dSMatt Arsenault;
2757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__3_2:
2767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
2807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
2827786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 16
2837786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
2847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2867786266dSMatt Arsenault;
2877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__3_2:
2887786266dSMatt Arsenault; GFX940:       ; %bb.0:
2897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2917786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
2927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
2947786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v1, v1, v1, 16
2957786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
2967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2987786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
2997786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
3007786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 2>
3017786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
3027786266dSMatt Arsenault  ret void
3037786266dSMatt Arsenault}
3047786266dSMatt Arsenault
3057786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__3_3(ptr addrspace(1) inreg %ptr) {
3067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_3:
3077786266dSMatt Arsenault; GFX900:       ; %bb.0:
3087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3107786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
3117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3127786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
3137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
3147786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4
3157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
3167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3187786266dSMatt Arsenault;
3197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__3_3:
3207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
3247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3257786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
3267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
3277786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s4
3287786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
3297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3317786266dSMatt Arsenault;
3327786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__3_3:
3337786266dSMatt Arsenault; GFX940:       ; %bb.0:
3347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3367786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
3377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3387786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
3397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
3407786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v1, v1, v1, s2
3417786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
3427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3447786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
3457786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
3467786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 3>
3477786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
3487786266dSMatt Arsenault  ret void
3497786266dSMatt Arsenault}
3507786266dSMatt Arsenault
3517786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__u_0(ptr addrspace(1) inreg %ptr) {
3527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_0:
3537786266dSMatt Arsenault; GFX900:       ; %bb.0:
3547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3567786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
3577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
3597786266dSMatt Arsenault; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
3607786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
3617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3637786266dSMatt Arsenault;
3647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_0:
3657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
3697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
3717786266dSMatt Arsenault; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
3727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
3737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3757786266dSMatt Arsenault;
3767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__u_0:
3777786266dSMatt Arsenault; GFX940:       ; %bb.0:
3787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3807786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
3817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
3837786266dSMatt Arsenault; GFX940-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
3847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
3857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3877786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
3887786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 0>
3897786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
3907786266dSMatt Arsenault  ret void
3917786266dSMatt Arsenault}
3927786266dSMatt Arsenault
3937786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_0(ptr addrspace(1) inreg %ptr) {
3947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_0:
3957786266dSMatt Arsenault; GFX900:       ; %bb.0:
3967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3987786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
3997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4007786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x5040100
4017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
4027786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4
4037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
4047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4067786266dSMatt Arsenault;
4077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_0:
4087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
4127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4137786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100
4147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
4157786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s4
4167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
4177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4197786266dSMatt Arsenault;
4207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__0_0:
4217786266dSMatt Arsenault; GFX940:       ; %bb.0:
4227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4247786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
4257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4267786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x5040100
4277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
4287786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v1, v1, v1, s2
4297786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
4307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4327786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
4337786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> zeroinitializer
4347786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
4357786266dSMatt Arsenault  ret void
4367786266dSMatt Arsenault}
4377786266dSMatt Arsenault
4387786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_0(ptr addrspace(1) inreg %ptr) {
4397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_0:
4407786266dSMatt Arsenault; GFX900:       ; %bb.0:
4417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4437786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
4447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
4467786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 16
4477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
4487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4507786266dSMatt Arsenault;
4517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_0:
4527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
4567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
4587786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 16
4597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
4607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4627786266dSMatt Arsenault;
4637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__1_0:
4647786266dSMatt Arsenault; GFX940:       ; %bb.0:
4657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4677786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
4687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
4707786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v1, v1, v1, 16
4717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
4727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4747786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
4757786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 0>
4767786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
4777786266dSMatt Arsenault  ret void
4787786266dSMatt Arsenault}
4797786266dSMatt Arsenault
4807786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_0(ptr addrspace(1) inreg %ptr) {
4817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_0:
4827786266dSMatt Arsenault; GFX900:       ; %bb.0:
4837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4857786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
4867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
4887786266dSMatt Arsenault; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
4897786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
4907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4927786266dSMatt Arsenault;
4937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_0:
4947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4977786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
4987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
5007786266dSMatt Arsenault; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
5017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
5027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5047786266dSMatt Arsenault;
5057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__2_0:
5067786266dSMatt Arsenault; GFX940:       ; %bb.0:
5077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5097786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
5107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
5127786266dSMatt Arsenault; GFX940-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
5137786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
5147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5167786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
5177786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 0>
5187786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
5197786266dSMatt Arsenault  ret void
5207786266dSMatt Arsenault}
5217786266dSMatt Arsenault
5227786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__u_1(ptr addrspace(1) inreg %ptr) {
5237786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_1:
5247786266dSMatt Arsenault; GFX900:       ; %bb.0:
5257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
5277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5287786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
5297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5307786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
5317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5337786266dSMatt Arsenault;
5347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_1:
5357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
5387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
5407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5417786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
5427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5447786266dSMatt Arsenault;
5457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__u_1:
5467786266dSMatt Arsenault; GFX940:       ; %bb.0:
5477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
5497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5507786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
5517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5527786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
5537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5557786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
5567786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 1>
5577786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
5587786266dSMatt Arsenault  ret void
5597786266dSMatt Arsenault}
5607786266dSMatt Arsenault
5617786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_1(ptr addrspace(1) inreg %ptr) {
5627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_1:
5637786266dSMatt Arsenault; GFX900:       ; %bb.0:
5647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
5667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5677786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
5687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
5707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5727786266dSMatt Arsenault;
5737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_1:
5747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
5777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
5797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
5817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5837786266dSMatt Arsenault;
5847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__0_1:
5857786266dSMatt Arsenault; GFX940:       ; %bb.0:
5867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
5887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5897786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
5907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
5927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5947786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
5957786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 1>
5967786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
5977786266dSMatt Arsenault  ret void
5987786266dSMatt Arsenault}
5997786266dSMatt Arsenault
6007786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_1(ptr addrspace(1) inreg %ptr) {
6017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_1:
6027786266dSMatt Arsenault; GFX900:       ; %bb.0:
6037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6057786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
6067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6077786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
6087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
6097786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4
6107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
6117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6137786266dSMatt Arsenault;
6147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_1:
6157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
6197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6207786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
6217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
6227786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s4
6237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
6247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6267786266dSMatt Arsenault;
6277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__1_1:
6287786266dSMatt Arsenault; GFX940:       ; %bb.0:
6297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6317786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
6327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6337786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
6347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
6357786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v1, v1, v1, s2
6367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
6377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6397786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
6407786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 1>
6417786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
6427786266dSMatt Arsenault  ret void
6437786266dSMatt Arsenault}
6447786266dSMatt Arsenault
6457786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_1(ptr addrspace(1) inreg %ptr) {
6467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_1:
6477786266dSMatt Arsenault; GFX900:       ; %bb.0:
6487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
6507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6517786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
6527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6537786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
6547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6567786266dSMatt Arsenault;
6577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_1:
6587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
6617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
6637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
6657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6677786266dSMatt Arsenault;
6687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__2_1:
6697786266dSMatt Arsenault; GFX940:       ; %bb.0:
6707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
6727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6737786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
6747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
6767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6787786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
6797786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 1>
6807786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
6817786266dSMatt Arsenault  ret void
6827786266dSMatt Arsenault}
6837786266dSMatt Arsenault
6847786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__u_2(ptr addrspace(1) inreg %ptr) {
6857786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v2i16__u_2:
6867786266dSMatt Arsenault; GFX9:       ; %bb.0:
6877786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6887786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
6897786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
6907786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 2>
6917786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
6927786266dSMatt Arsenault  ret void
6937786266dSMatt Arsenault}
6947786266dSMatt Arsenault
6957786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_2(ptr addrspace(1) inreg %ptr) {
6967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_2:
6977786266dSMatt Arsenault; GFX900:       ; %bb.0:
6987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
7007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7017786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
7027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
7047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7067786266dSMatt Arsenault;
7077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_2:
7087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
7117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
7137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
7157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7177786266dSMatt Arsenault;
7187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__0_2:
7197786266dSMatt Arsenault; GFX940:       ; %bb.0:
7207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
7227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7237786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
7247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
7267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7287786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
7297786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 2>
7307786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
7317786266dSMatt Arsenault  ret void
7327786266dSMatt Arsenault}
7337786266dSMatt Arsenault
7347786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_2(ptr addrspace(1) inreg %ptr) {
7357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_2:
7367786266dSMatt Arsenault; GFX900:       ; %bb.0:
7377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7397786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
7407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
7427786266dSMatt Arsenault; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 16
7437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
7447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7467786266dSMatt Arsenault;
7477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_2:
7487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
7527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
7547786266dSMatt Arsenault; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 16
7557786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
7567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7587786266dSMatt Arsenault;
7597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__1_2:
7607786266dSMatt Arsenault; GFX940:       ; %bb.0:
7617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7637786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
7647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
7667786266dSMatt Arsenault; GFX940-NEXT:    v_alignbit_b32 v1, s0, v1, 16
7677786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
7687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7707786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
7717786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 2>
7727786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
7737786266dSMatt Arsenault  ret void
7747786266dSMatt Arsenault}
7757786266dSMatt Arsenault
7767786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_2(ptr addrspace(1) inreg %ptr) {
7777786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i16_v2i16__2_2:
7787786266dSMatt Arsenault; GFX9:       ; %bb.0:
7797786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7807786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
7817786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
7827786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 2>
7837786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
7847786266dSMatt Arsenault  ret void
7857786266dSMatt Arsenault}
7867786266dSMatt Arsenault
7877786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__u_3(ptr addrspace(1) inreg %ptr) {
7887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_3:
7897786266dSMatt Arsenault; GFX900:       ; %bb.0:
7907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
7927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7937786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
7947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7957786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
7967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7987786266dSMatt Arsenault;
7997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_3:
8007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
8037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
8057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8067786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
8077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8097786266dSMatt Arsenault;
8107786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__u_3:
8117786266dSMatt Arsenault; GFX940:       ; %bb.0:
8127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
8147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8157786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
8167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8177786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
8187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8207786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
8217786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
8227786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 poison, i32 3>
8237786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
8247786266dSMatt Arsenault  ret void
8257786266dSMatt Arsenault}
8267786266dSMatt Arsenault
8277786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__0_3(ptr addrspace(1) inreg %ptr) {
8287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_3:
8297786266dSMatt Arsenault; GFX900:       ; %bb.0:
8307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8327786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
8337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8347786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0xffff
8357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
8367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8377786266dSMatt Arsenault; GFX900-NEXT:    ; def v2
8387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8397786266dSMatt Arsenault; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v2
8407786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
8417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8437786266dSMatt Arsenault;
8447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_3:
8457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8487786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
8497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8507786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0xffff
8517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
8527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8537786266dSMatt Arsenault; GFX90A-NEXT:    ; def v2
8547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8557786266dSMatt Arsenault; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v2
8567786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
8577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8597786266dSMatt Arsenault;
8607786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__0_3:
8617786266dSMatt Arsenault; GFX940:       ; %bb.0:
8627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8647786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
8657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8667786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0xffff
8677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
8687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8697786266dSMatt Arsenault; GFX940-NEXT:    ; def v2
8707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8717786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
8727786266dSMatt Arsenault; GFX940-NEXT:    v_bfi_b32 v1, s2, v1, v2
8737786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
8747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8767786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
8777786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
8787786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 0, i32 3>
8797786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
8807786266dSMatt Arsenault  ret void
8817786266dSMatt Arsenault}
8827786266dSMatt Arsenault
8837786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__1_3(ptr addrspace(1) inreg %ptr) {
8847786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_3:
8857786266dSMatt Arsenault; GFX900:       ; %bb.0:
8867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8887786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
8897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8907786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s4, 0x7060302
8917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
8927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8937786266dSMatt Arsenault; GFX900-NEXT:    ; def v2
8947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8957786266dSMatt Arsenault; GFX900-NEXT:    v_perm_b32 v1, v2, v1, s4
8967786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, 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_v2i16__1_3:
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 v1
9057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9067786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302
9077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
9087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v2
9107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9117786266dSMatt Arsenault; GFX90A-NEXT:    v_perm_b32 v1, v2, v1, s4
9127786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
9137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9157786266dSMatt Arsenault;
9167786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__1_3:
9177786266dSMatt Arsenault; GFX940:       ; %bb.0:
9187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9207786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
9217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9227786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s2, 0x7060302
9237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
9247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9257786266dSMatt Arsenault; GFX940-NEXT:    ; def v2
9267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9277786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
9287786266dSMatt Arsenault; GFX940-NEXT:    v_perm_b32 v1, v2, v1, s2
9297786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
9307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9327786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
9337786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
9347786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 1, i32 3>
9357786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
9367786266dSMatt Arsenault  ret void
9377786266dSMatt Arsenault}
9387786266dSMatt Arsenault
9397786266dSMatt Arsenaultdefine void @v_shuffle_v2i16_v2i16__2_3(ptr addrspace(1) inreg %ptr) {
9407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_3:
9417786266dSMatt Arsenault; GFX900:       ; %bb.0:
9427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
9447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9457786266dSMatt Arsenault; GFX900-NEXT:    ; def v1
9467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]
9487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9507786266dSMatt Arsenault;
9517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_3:
9527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, 0
9557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9567786266dSMatt Arsenault; GFX90A-NEXT:    ; def v1
9577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]
9597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9617786266dSMatt Arsenault;
9627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i16_v2i16__2_3:
9637786266dSMatt Arsenault; GFX940:       ; %bb.0:
9647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, 0
9667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9677786266dSMatt Arsenault; GFX940-NEXT:    ; def v1
9687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9697786266dSMatt Arsenault; GFX940-NEXT:    global_store_dword v0, v1, s[0:1] sc0 sc1
9707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9727786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=v"()
9737786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=v"()
9747786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 2, i32 3>
9757786266dSMatt Arsenault  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4
9767786266dSMatt Arsenault  ret void
9777786266dSMatt Arsenault}
9787786266dSMatt Arsenault
9797786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_u() {
980*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v2i16__u_u:
981*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
982*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
983*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
984*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s8
985*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
986*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
9877786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
9887786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> poison
989*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
9907786266dSMatt Arsenault  ret void
9917786266dSMatt Arsenault}
9927786266dSMatt Arsenault
9937786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_u() {
9947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_u:
9957786266dSMatt Arsenault; GFX900:       ; %bb.0:
9967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
998*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s8
9997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1001*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
10027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10047786266dSMatt Arsenault;
10057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_u:
10067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1009*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s8
10107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1012*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
10137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10157786266dSMatt Arsenault;
10167786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_u:
10177786266dSMatt Arsenault; GFX940:       ; %bb.0:
10187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1020*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s8
10217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10227786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1024*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
10257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10277786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
10287786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 poison>
1029*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
10307786266dSMatt Arsenault  ret void
10317786266dSMatt Arsenault}
10327786266dSMatt Arsenault
10337786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_u() {
10347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_u:
10357786266dSMatt Arsenault; GFX900:       ; %bb.0:
10367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10387786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
10397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1040*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s4, 16
10417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1042*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
10437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10457786266dSMatt Arsenault;
10467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_u:
10477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
10517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1052*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s4, 16
10537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1054*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
10557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10567786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10577786266dSMatt Arsenault;
10587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_u:
10597786266dSMatt Arsenault; GFX940:       ; %bb.0:
10607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10627786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
10637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1064*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s0, 16
10657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1066*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
10677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10687786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10697786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
10707786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 poison>
1071*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
10727786266dSMatt Arsenault  ret void
10737786266dSMatt Arsenault}
10747786266dSMatt Arsenault
10757786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_u() {
1076*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v2i16__2_u:
1077*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1078*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1079*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1080*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s8
1081*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1082*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
10837786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
10847786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 poison>
1085*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
10867786266dSMatt Arsenault  ret void
10877786266dSMatt Arsenault}
10887786266dSMatt Arsenault
10897786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_u() {
10907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_u:
10917786266dSMatt Arsenault; GFX900:       ; %bb.0:
10927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10947786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
10957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1096*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s4, 16
10977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1098*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
10997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11017786266dSMatt Arsenault;
11027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_u:
11037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11067786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
11077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1108*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s4, 16
11097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1110*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
11117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11137786266dSMatt Arsenault;
11147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_u:
11157786266dSMatt Arsenault; GFX940:       ; %bb.0:
11167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11187786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
11197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1120*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s0, 16
11217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1122*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
11237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11247786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11257786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
11267786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
11277786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 poison>
1128*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
11297786266dSMatt Arsenault  ret void
11307786266dSMatt Arsenault}
11317786266dSMatt Arsenault
11327786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_0() {
11337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_0:
11347786266dSMatt Arsenault; GFX900:       ; %bb.0:
11357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11377786266dSMatt Arsenault; GFX900-NEXT:    ; def s5
11387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1139*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s5, 16
11407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11417786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
11427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1143*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
11447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1145*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
11467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11487786266dSMatt Arsenault;
11497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_0:
11507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s5
11547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1155*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s5, 16
11567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11577786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
11587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1159*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
11607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1161*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
11627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11647786266dSMatt Arsenault;
11657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_0:
11667786266dSMatt Arsenault; GFX940:       ; %bb.0:
11677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11697786266dSMatt Arsenault; GFX940-NEXT:    ; def s1
11707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1171*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s1, 16
11727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11737786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
11747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1175*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
11767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1177*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
11787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11807786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
11817786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
11827786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 0>
1183*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
11847786266dSMatt Arsenault  ret void
11857786266dSMatt Arsenault}
11867786266dSMatt Arsenault
11877786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_1() {
11887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_1:
11897786266dSMatt Arsenault; GFX900:       ; %bb.0:
11907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11927786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
11937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11957786266dSMatt Arsenault; GFX900-NEXT:    ; def s5
11967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1197*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s4
11987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1199*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
12007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12027786266dSMatt Arsenault;
12037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_1:
12047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12077786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
12087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12107786266dSMatt Arsenault; GFX90A-NEXT:    ; def s5
12117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1212*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s4
12137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1214*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
12157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12177786266dSMatt Arsenault;
12187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_1:
12197786266dSMatt Arsenault; GFX940:       ; %bb.0:
12207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12227786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
12237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12257786266dSMatt Arsenault; GFX940-NEXT:    ; def s1
12267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1227*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s1, s0
12287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1229*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
12307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12327786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
12337786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
12347786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 1>
1235*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
12367786266dSMatt Arsenault  ret void
12377786266dSMatt Arsenault}
12387786266dSMatt Arsenault
12397786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_2() {
12407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_2:
12417786266dSMatt Arsenault; GFX900:       ; %bb.0:
12427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12447786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
12457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12467786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s4, 16
1247*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
12487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1249*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
12507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12527786266dSMatt Arsenault;
12537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_2:
12547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12577786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
12587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12597786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s4, 16
1260*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
12617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1262*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
12637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12657786266dSMatt Arsenault;
12667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_2:
12677786266dSMatt Arsenault; GFX940:       ; %bb.0:
12687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12707786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
12717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12727786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s0, 16
1273*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
12747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1275*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
12767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12787786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
12797786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
12807786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 2>
1281*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
12827786266dSMatt Arsenault  ret void
12837786266dSMatt Arsenault}
12847786266dSMatt Arsenault
12857786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__3_3() {
12867786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_3:
12877786266dSMatt Arsenault; GFX900:       ; %bb.0:
12887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12907786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
12917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1292*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s4
12937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1294*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
12957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12977786266dSMatt Arsenault;
12987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_3:
12997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
13037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1304*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s4
13057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1306*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
13077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13097786266dSMatt Arsenault;
13107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__3_3:
13117786266dSMatt Arsenault; GFX940:       ; %bb.0:
13127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13147786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
13157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1316*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s0
13177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1318*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
13197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13217786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
13227786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
13237786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 3>
1324*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
13257786266dSMatt Arsenault  ret void
13267786266dSMatt Arsenault}
13277786266dSMatt Arsenault
13287786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_0() {
13297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_0:
13307786266dSMatt Arsenault; GFX900:       ; %bb.0:
13317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13337786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
13347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1335*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshl_b32 s8, s4, 16
13367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1337*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
13387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13407786266dSMatt Arsenault;
13417786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_0:
13427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13457786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
13467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1347*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshl_b32 s8, s4, 16
13487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1349*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
13507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13527786266dSMatt Arsenault;
13537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__u_0:
13547786266dSMatt Arsenault; GFX940:       ; %bb.0:
13557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13577786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
13587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1359*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshl_b32 s8, s0, 16
13607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1361*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
13627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13647786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
13657786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 0>
1366*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
13677786266dSMatt Arsenault  ret void
13687786266dSMatt Arsenault}
13697786266dSMatt Arsenault
13707786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_0() {
13717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_0:
13727786266dSMatt Arsenault; GFX900:       ; %bb.0:
13737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13757786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
13767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1377*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s4
13787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1379*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
13807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13827786266dSMatt Arsenault;
13837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_0:
13847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
13887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1389*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s4
13907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1391*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
13927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13947786266dSMatt Arsenault;
13957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_0:
13967786266dSMatt Arsenault; GFX940:       ; %bb.0:
13977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13997786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
14007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1401*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s0, s0
14027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1403*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
14047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14067786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
14077786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> zeroinitializer
1408*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
14097786266dSMatt Arsenault  ret void
14107786266dSMatt Arsenault}
14117786266dSMatt Arsenault
14127786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_0() {
14137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_0:
14147786266dSMatt Arsenault; GFX900:       ; %bb.0:
14157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14177786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
14187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14197786266dSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s5, s4, 16
1420*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
14217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1422*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
14237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14247786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14257786266dSMatt Arsenault;
14267786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_0:
14277786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14307786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
14317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14327786266dSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s5, s4, 16
1433*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s4
14347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1435*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
14367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14387786266dSMatt Arsenault;
14397786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_0:
14407786266dSMatt Arsenault; GFX940:       ; %bb.0:
14417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14437786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
14447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14457786266dSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s1, s0, 16
1446*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_ll_b32_b16 s8, s1, s0
14477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1448*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
14497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14517786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
14527786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 0>
1453*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
14547786266dSMatt Arsenault  ret void
14557786266dSMatt Arsenault}
14567786266dSMatt Arsenault
14577786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_0() {
14587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_0:
14597786266dSMatt Arsenault; GFX900:       ; %bb.0:
14607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14627786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
14637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1464*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshl_b32 s8, s4, 16
14657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1466*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
14677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14697786266dSMatt Arsenault;
14707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_0:
14717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14747786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
14757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1476*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshl_b32 s8, s4, 16
14777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1478*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
14797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14817786266dSMatt Arsenault;
14827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__2_0:
14837786266dSMatt Arsenault; GFX940:       ; %bb.0:
14847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14867786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
14877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1488*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshl_b32 s8, s0, 16
14897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1490*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
14917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14937786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
14947786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 0>
1495*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
14967786266dSMatt Arsenault  ret void
14977786266dSMatt Arsenault}
14987786266dSMatt Arsenault
14997786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_1() {
15007786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_1:
15017786266dSMatt Arsenault; GFX900:       ; %bb.0:
15027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1504*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s8
15057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1507*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
15087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15097786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15107786266dSMatt Arsenault;
15117786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_1:
15127786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1515*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s8
15167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1518*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
15197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15217786266dSMatt Arsenault;
15227786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__u_1:
15237786266dSMatt Arsenault; GFX940:       ; %bb.0:
15247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1526*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s8
15277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15287786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1530*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
15317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15337786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
15347786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 1>
1535*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
15367786266dSMatt Arsenault  ret void
15377786266dSMatt Arsenault}
15387786266dSMatt Arsenault
15397786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_1() {
15407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_1:
15417786266dSMatt Arsenault; GFX900:       ; %bb.0:
15427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1544*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s8
15457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1547*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
15487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15507786266dSMatt Arsenault;
15517786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_1:
15527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1555*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s8
15567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1558*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
15597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15617786266dSMatt Arsenault;
15627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_1:
15637786266dSMatt Arsenault; GFX940:       ; %bb.0:
15647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1566*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s8
15677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15687786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1570*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
15717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15737786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
15747786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 1>
1575*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
15767786266dSMatt Arsenault  ret void
15777786266dSMatt Arsenault}
15787786266dSMatt Arsenault
15797786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_1() {
15807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_1:
15817786266dSMatt Arsenault; GFX900:       ; %bb.0:
15827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15847786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
15857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1586*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s4
15877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1588*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
15897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15907786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15917786266dSMatt Arsenault;
15927786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_1:
15937786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15967786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
15977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1598*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s4
15997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1600*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
16017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16037786266dSMatt Arsenault;
16047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_1:
16057786266dSMatt Arsenault; GFX940:       ; %bb.0:
16067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16087786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
16097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1610*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s0
16117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1612*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
16137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16157786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
16167786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 1>
1617*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
16187786266dSMatt Arsenault  ret void
16197786266dSMatt Arsenault}
16207786266dSMatt Arsenault
16217786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_1() {
16227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_1:
16237786266dSMatt Arsenault; GFX900:       ; %bb.0:
16247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1626*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s8
16277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1629*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
16307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16327786266dSMatt Arsenault;
16337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_1:
16347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1637*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s8
16387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1640*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
16417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16437786266dSMatt Arsenault;
16447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__2_1:
16457786266dSMatt Arsenault; GFX940:       ; %bb.0:
16467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1648*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s8
16497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16507786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1652*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
16537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16557786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
16567786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 1>
1657*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
16587786266dSMatt Arsenault  ret void
16597786266dSMatt Arsenault}
16607786266dSMatt Arsenault
16617786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_2() {
1662*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v2i16__u_2:
1663*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1664*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1665*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1666*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s8
1667*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1668*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
16697786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
16707786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 2>
1671*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
16727786266dSMatt Arsenault  ret void
16737786266dSMatt Arsenault}
16747786266dSMatt Arsenault
16757786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_2() {
16767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_2:
16777786266dSMatt Arsenault; GFX900:       ; %bb.0:
16787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1680*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s8
16817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1683*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
16847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16867786266dSMatt Arsenault;
16877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_2:
16887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1691*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s8
16927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1694*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
16957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16977786266dSMatt Arsenault;
16987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_2:
16997786266dSMatt Arsenault; GFX940:       ; %bb.0:
17007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1702*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s8
17037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17047786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1706*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
17077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17097786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
17107786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 2>
1711*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
17127786266dSMatt Arsenault  ret void
17137786266dSMatt Arsenault}
17147786266dSMatt Arsenault
17157786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_2() {
17167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_2:
17177786266dSMatt Arsenault; GFX900:       ; %bb.0:
17187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17207786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
17217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1722*585858aeSMatt Arsenault; GFX900-NEXT:    s_lshr_b32 s8, s4, 16
17237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1724*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
17257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17277786266dSMatt Arsenault;
17287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_2:
17297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17327786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
17337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1734*585858aeSMatt Arsenault; GFX90A-NEXT:    s_lshr_b32 s8, s4, 16
17357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1736*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
17377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17387786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17397786266dSMatt Arsenault;
17407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_2:
17417786266dSMatt Arsenault; GFX940:       ; %bb.0:
17427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17447786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
17457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1746*585858aeSMatt Arsenault; GFX940-NEXT:    s_lshr_b32 s8, s0, 16
17477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1748*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
17497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17517786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
17527786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 2>
1753*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
17547786266dSMatt Arsenault  ret void
17557786266dSMatt Arsenault}
17567786266dSMatt Arsenault
17577786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_2() {
1758*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i16_v2i16__2_2:
1759*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
1760*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1761*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
1762*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s8
1763*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
1764*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
17657786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
17667786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 2>
1767*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
17687786266dSMatt Arsenault  ret void
17697786266dSMatt Arsenault}
17707786266dSMatt Arsenault
17717786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__u_3() {
17727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_3:
17737786266dSMatt Arsenault; GFX900:       ; %bb.0:
17747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1776*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s8
17777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1779*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
17807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17827786266dSMatt Arsenault;
17837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_3:
17847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1787*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s8
17887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1790*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
17917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17937786266dSMatt Arsenault;
17947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__u_3:
17957786266dSMatt Arsenault; GFX940:       ; %bb.0:
17967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1798*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s8
17997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18007786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1802*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
18037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18057786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
18067786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
18077786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 poison, i32 3>
1808*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
18097786266dSMatt Arsenault  ret void
18107786266dSMatt Arsenault}
18117786266dSMatt Arsenault
18127786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__0_3() {
18137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_3:
18147786266dSMatt Arsenault; GFX900:       ; %bb.0:
18157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18177786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
18187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18207786266dSMatt Arsenault; GFX900-NEXT:    ; def s5
18217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1822*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s5
18237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1824*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
18257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18277786266dSMatt Arsenault;
18287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_3:
18297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18327786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
18337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18357786266dSMatt Arsenault; GFX90A-NEXT:    ; def s5
18367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1837*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s5
18387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1839*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
18407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18417786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18427786266dSMatt Arsenault;
18437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__0_3:
18447786266dSMatt Arsenault; GFX940:       ; %bb.0:
18457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18477786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
18487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18507786266dSMatt Arsenault; GFX940-NEXT:    ; def s1
18517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1852*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_lh_b32_b16 s8, s0, s1
18537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1854*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
18557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18577786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
18587786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
18597786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 0, i32 3>
1860*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
18617786266dSMatt Arsenault  ret void
18627786266dSMatt Arsenault}
18637786266dSMatt Arsenault
18647786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__1_3() {
18657786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_3:
18667786266dSMatt Arsenault; GFX900:       ; %bb.0:
18677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18697786266dSMatt Arsenault; GFX900-NEXT:    ; def s4
18707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18727786266dSMatt Arsenault; GFX900-NEXT:    ; def s5
18737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1874*585858aeSMatt Arsenault; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s5
18757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1876*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
18777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18797786266dSMatt Arsenault;
18807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_3:
18817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18847786266dSMatt Arsenault; GFX90A-NEXT:    ; def s4
18857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s5
18887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1889*585858aeSMatt Arsenault; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s5
18907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1891*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
18927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18947786266dSMatt Arsenault;
18957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__1_3:
18967786266dSMatt Arsenault; GFX940:       ; %bb.0:
18977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18997786266dSMatt Arsenault; GFX940-NEXT:    ; def s0
19007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19027786266dSMatt Arsenault; GFX940-NEXT:    ; def s1
19037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1904*585858aeSMatt Arsenault; GFX940-NEXT:    s_pack_hh_b32_b16 s8, s0, s1
19057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1906*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
19077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19097786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
19107786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
19117786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 1, i32 3>
1912*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
19137786266dSMatt Arsenault  ret void
19147786266dSMatt Arsenault}
19157786266dSMatt Arsenault
19167786266dSMatt Arsenaultdefine void @s_shuffle_v2i16_v2i16__2_3() {
19177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_3:
19187786266dSMatt Arsenault; GFX900:       ; %bb.0:
19197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1921*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s8
19227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1924*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s8
19257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19277786266dSMatt Arsenault;
19287786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_3:
19297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1932*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s8
19337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1935*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s8
19367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19387786266dSMatt Arsenault;
19397786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i16_v2i16__2_3:
19407786266dSMatt Arsenault; GFX940:       ; %bb.0:
19417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1943*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s8
19447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19457786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
19467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1947*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s8
19487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19507786266dSMatt Arsenault  %vec0 = call <2 x i16> asm "; def $0", "=s"()
19517786266dSMatt Arsenault  %vec1 = call <2 x i16> asm "; def $0", "=s"()
19527786266dSMatt Arsenault  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 2, i32 3>
1953*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)
19547786266dSMatt Arsenault  ret void
19557786266dSMatt Arsenault}
19567786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
19577786266dSMatt Arsenault; GFX90APLUS: {{.*}}
1958