xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v3i32.v2i32.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_v3i32_v2i32__u_u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v2i32__u_u_u:
97786266dSMatt Arsenault; GFX9:       ; %bb.0:
107786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
117786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
127786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> poison
147786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_u_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_u_u:
207786266dSMatt Arsenault; GFX900:       ; %bb.0:
217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__0_u_u:
317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__0_u_u:
427786266dSMatt Arsenault; GFX940:       ; %bb.0:
437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], 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 i32> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison>
537786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_u_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_u_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__1_u_u:
717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__1_u_u:
837786266dSMatt Arsenault; GFX940:       ; %bb.0:
847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], 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 i32> asm "; def $0", "=v"()
947786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
957786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
967786266dSMatt Arsenault  ret void
977786266dSMatt Arsenault}
987786266dSMatt Arsenault
997786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_u_u(ptr addrspace(1) inreg %ptr) {
1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v2i32__2_u_u:
1017786266dSMatt Arsenault; GFX9:       ; %bb.0:
1027786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1037786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1047786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
1057786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
1067786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
1077786266dSMatt Arsenault  ret void
1087786266dSMatt Arsenault}
1097786266dSMatt Arsenault
1107786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_u(ptr addrspace(1) inreg %ptr) {
1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_u:
1127786266dSMatt Arsenault; GFX900:       ; %bb.0:
1137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
1167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
1197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__3_u_u:
1247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
1307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__3_u_u:
1367786266dSMatt Arsenault; GFX940:       ; %bb.0:
1377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
1427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], 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 i32> asm "; def $0", "=v"()
1477786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
1487786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>
1497786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
1507786266dSMatt Arsenault  ret void
1517786266dSMatt Arsenault}
1527786266dSMatt Arsenault
1537786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_u(ptr addrspace(1) inreg %ptr) {
1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_u:
1557786266dSMatt Arsenault; GFX900:       ; %bb.0:
1567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
1597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
1637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], 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_v3i32_v2i32__3_0_u:
1707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
1787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
1827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1847786266dSMatt Arsenault;
1857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_u:
1867786266dSMatt Arsenault; GFX940:       ; %bb.0:
1877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
1947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
1987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2007786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
2017786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
2027786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>
2037786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
2047786266dSMatt Arsenault  ret void
2057786266dSMatt Arsenault}
2067786266dSMatt Arsenault
2077786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_u(ptr addrspace(1) inreg %ptr) {
2087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_u:
2097786266dSMatt Arsenault; GFX900:       ; %bb.0:
2107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
2137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
2177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
2197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], 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_v3i32_v2i32__3_1_u:
2247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
2287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
2327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
2357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2377786266dSMatt Arsenault;
2387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_u:
2397786266dSMatt Arsenault; GFX940:       ; %bb.0:
2407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
2437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
2477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2537786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
2547786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
2557786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>
2567786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
2577786266dSMatt Arsenault  ret void
2587786266dSMatt Arsenault}
2597786266dSMatt Arsenault
2607786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_u(ptr addrspace(1) inreg %ptr) {
2617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_u:
2627786266dSMatt Arsenault; GFX900:       ; %bb.0:
2637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
2657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
2677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
2707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2727786266dSMatt Arsenault;
2737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_u:
2747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
2797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2827786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
2837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2857786266dSMatt Arsenault;
2867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_u:
2877786266dSMatt Arsenault; GFX940:       ; %bb.0:
2887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
2927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2937786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
2977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2997786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
3007786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
3017786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>
3027786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
3037786266dSMatt Arsenault  ret void
3047786266dSMatt Arsenault}
3057786266dSMatt Arsenault
3067786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_u(ptr addrspace(1) inreg %ptr) {
3077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_u:
3087786266dSMatt Arsenault; GFX900:       ; %bb.0:
3097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
3147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
3157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], 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_v3i32_v2i32__3_3_u:
3207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
3267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
3277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
3287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3307786266dSMatt Arsenault;
3317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_u:
3327786266dSMatt Arsenault; GFX940:       ; %bb.0:
3337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
3387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
3397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1
3407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3427786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
3437786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
3447786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>
3457786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
3467786266dSMatt Arsenault  ret void
3477786266dSMatt Arsenault}
3487786266dSMatt Arsenault
3497786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_0(ptr addrspace(1) inreg %ptr) {
3507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_0:
3517786266dSMatt Arsenault; GFX900:       ; %bb.0:
3527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
3587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
3607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
3627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3647786266dSMatt Arsenault;
3657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_0:
3667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
3737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
3757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
3777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3797786266dSMatt Arsenault;
3807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_0:
3817786266dSMatt Arsenault; GFX940:       ; %bb.0:
3827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
3887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
3907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
3927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3947786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
3957786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
3967786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 0>
3977786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
3987786266dSMatt Arsenault  ret void
3997786266dSMatt Arsenault}
4007786266dSMatt Arsenault
4017786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_1(ptr addrspace(1) inreg %ptr) {
4027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_1:
4037786266dSMatt Arsenault; GFX900:       ; %bb.0:
4047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
4077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4097786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
4107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
4137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
4147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4167786266dSMatt Arsenault;
4177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_1:
4187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
4227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
4257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
4287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
4297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
4307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4327786266dSMatt Arsenault;
4337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_1:
4347786266dSMatt Arsenault; GFX940:       ; %bb.0:
4357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
4387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4407786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
4417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
4447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
4457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
4467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4487786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
4497786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
4507786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 1>
4517786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
4527786266dSMatt Arsenault  ret void
4537786266dSMatt Arsenault}
4547786266dSMatt Arsenault
4557786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_2(ptr addrspace(1) inreg %ptr) {
4567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_2:
4577786266dSMatt Arsenault; GFX900:       ; %bb.0:
4587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
4627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
4647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
4657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
4667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4687786266dSMatt Arsenault;
4697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_2:
4707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
4757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
4777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
4787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
4797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4817786266dSMatt Arsenault;
4827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_2:
4837786266dSMatt Arsenault; GFX940:       ; %bb.0:
4847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
4887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4897786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
4917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
4927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
4937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4957786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
4967786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
4977786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 2>
4987786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
4997786266dSMatt Arsenault  ret void
5007786266dSMatt Arsenault}
5017786266dSMatt Arsenault
5027786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_3_3(ptr addrspace(1) inreg %ptr) {
5037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_3:
5047786266dSMatt Arsenault; GFX900:       ; %bb.0:
5057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
5107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
5117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
5137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5157786266dSMatt Arsenault;
5167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_3:
5177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
5237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
5247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
5267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5287786266dSMatt Arsenault;
5297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_3_3:
5307786266dSMatt Arsenault; GFX940:       ; %bb.0:
5317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
5367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
5377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
5397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5417786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
5427786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
5437786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 3>
5447786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
5457786266dSMatt Arsenault  ret void
5467786266dSMatt Arsenault}
5477786266dSMatt Arsenault
5487786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__u_0_0(ptr addrspace(1) inreg %ptr) {
5497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_0_0:
5507786266dSMatt Arsenault; GFX900:       ; %bb.0:
5517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
5547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
5567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v0, v[0:2], s[16:17]
5587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5607786266dSMatt Arsenault;
5617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_0_0:
5627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
5687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
5697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
5707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
5717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5737786266dSMatt Arsenault;
5747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__u_0_0:
5757786266dSMatt Arsenault; GFX940:       ; %bb.0:
5767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
5817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
5827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
5837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
5847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5867786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
5877786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0>
5887786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
5897786266dSMatt Arsenault  ret void
5907786266dSMatt Arsenault}
5917786266dSMatt Arsenault
5927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_0_0(ptr addrspace(1) inreg %ptr) {
5937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_0_0:
5947786266dSMatt Arsenault; GFX900:       ; %bb.0:
5957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
6007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
6017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
6027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
6037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6057786266dSMatt Arsenault;
6067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_0_0:
6077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
6117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
6137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
6147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
6157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
6167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6187786266dSMatt Arsenault;
6197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__0_0_0:
6207786266dSMatt Arsenault; GFX940:       ; %bb.0:
6217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
6247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
6267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
6277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
6287786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
6297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6317786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
6327786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> zeroinitializer
6337786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
6347786266dSMatt Arsenault  ret void
6357786266dSMatt Arsenault}
6367786266dSMatt Arsenault
6377786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_0_0(ptr addrspace(1) inreg %ptr) {
6387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_0_0:
6397786266dSMatt Arsenault; GFX900:       ; %bb.0:
6407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
6437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
6457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
6467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
6477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
6487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6507786266dSMatt Arsenault;
6517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_0_0:
6527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6567786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
6577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
6597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
6607786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
6617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6637786266dSMatt Arsenault;
6647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_0_0:
6657786266dSMatt Arsenault; GFX940:       ; %bb.0:
6667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6697786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
6707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6717786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
6727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
6737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
6747786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
6757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6777786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
6787786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0>
6797786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
6807786266dSMatt Arsenault  ret void
6817786266dSMatt Arsenault}
6827786266dSMatt Arsenault
6837786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_0_0(ptr addrspace(1) inreg %ptr) {
6847786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_0_0:
6857786266dSMatt Arsenault; GFX900:       ; %bb.0:
6867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6887786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
6897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, 0
6917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
6927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v0, v[0:2], s[16:17]
6937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6957786266dSMatt Arsenault;
6967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_0_0:
6977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
7037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
7047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
7057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
7067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7087786266dSMatt Arsenault;
7097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__2_0_0:
7107786266dSMatt Arsenault; GFX940:       ; %bb.0:
7117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
7167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
7177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
7187786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
7197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7217786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
7227786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0>
7237786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
7247786266dSMatt Arsenault  ret void
7257786266dSMatt Arsenault}
7267786266dSMatt Arsenault
7277786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_0(ptr addrspace(1) inreg %ptr) {
7287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_0:
7297786266dSMatt Arsenault; GFX900:       ; %bb.0:
7307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7327786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
7337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7357786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
7367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
7397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
7407786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
7417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7437786266dSMatt Arsenault;
7447786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_0:
7457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7487786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7527786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
7537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
7557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
7567786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
7577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7597786266dSMatt Arsenault;
7607786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_0:
7617786266dSMatt Arsenault; GFX940:       ; %bb.0:
7627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7647786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
7697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
7717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
7727786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
7737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7757786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
7767786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
7777786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 0>
7787786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
7797786266dSMatt Arsenault  ret void
7807786266dSMatt Arsenault}
7817786266dSMatt Arsenault
7827786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_0(ptr addrspace(1) inreg %ptr) {
7837786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_0:
7847786266dSMatt Arsenault; GFX900:       ; %bb.0:
7857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7877786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
7887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7907786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
7917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
7947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
7957786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], 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_v3i32_v2i32__3_u_0:
8007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8037786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
8047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
8077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
8097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8107786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
8117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8137786266dSMatt Arsenault;
8147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_0:
8157786266dSMatt Arsenault; GFX940:       ; %bb.0:
8167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8187786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
8197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
8227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
8247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
8267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8287786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
8297786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
8307786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>
8317786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
8327786266dSMatt Arsenault  ret void
8337786266dSMatt Arsenault}
8347786266dSMatt Arsenault
8357786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_0(ptr addrspace(1) inreg %ptr) {
8367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_0:
8377786266dSMatt Arsenault; GFX900:       ; %bb.0:
8387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8407786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
8417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
8457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
8477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
8487786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
8497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8507786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8517786266dSMatt Arsenault;
8527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_0:
8537786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8567786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
8577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
8617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
8637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
8647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
8657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8677786266dSMatt Arsenault;
8687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_0:
8697786266dSMatt Arsenault; GFX940:       ; %bb.0:
8707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8727786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
8737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
8777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
8797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
8807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
8817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8837786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
8847786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
8857786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 0>
8867786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
8877786266dSMatt Arsenault  ret void
8887786266dSMatt Arsenault}
8897786266dSMatt Arsenault
8907786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_0(ptr addrspace(1) inreg %ptr) {
8917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_0:
8927786266dSMatt Arsenault; GFX900:       ; %bb.0:
8937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
8967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
8987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
9007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
9027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
9037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
9047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9067786266dSMatt Arsenault;
9077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_0:
9087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
9117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
9137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
9157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
9167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
9187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9197786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
9207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9217786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9227786266dSMatt Arsenault;
9237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_0:
9247786266dSMatt Arsenault; GFX940:       ; %bb.0:
9257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
9277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
9297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
9327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9337786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
9347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
9357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
9367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
9377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9397786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
9407786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
9417786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 0>
9427786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
9437786266dSMatt Arsenault  ret void
9447786266dSMatt Arsenault}
9457786266dSMatt Arsenault
9467786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__u_1_1(ptr addrspace(1) inreg %ptr) {
9477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_1_1:
9487786266dSMatt Arsenault; GFX900:       ; %bb.0:
9497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
9517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
9537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
9557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
9567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9587786266dSMatt Arsenault;
9597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_1_1:
9607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
9637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
9657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
9677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
9687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9707786266dSMatt Arsenault;
9717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__u_1_1:
9727786266dSMatt Arsenault; GFX940:       ; %bb.0:
9737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
9757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
9777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9787786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
9797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
9807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
9817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9837786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
9847786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1>
9857786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
9867786266dSMatt Arsenault  ret void
9877786266dSMatt Arsenault}
9887786266dSMatt Arsenault
9897786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_1_1(ptr addrspace(1) inreg %ptr) {
9907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_1_1:
9917786266dSMatt Arsenault; GFX900:       ; %bb.0:
9927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
9947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
9967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
9987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
9997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10017786266dSMatt Arsenault;
10027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_1_1:
10037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
10067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10077786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
10087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
10107786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
10117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10137786266dSMatt Arsenault;
10147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__0_1_1:
10157786266dSMatt Arsenault; GFX940:       ; %bb.0:
10167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
10187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10197786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
10207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10217786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
10237786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
10247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10267786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
10277786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1>
10287786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
10297786266dSMatt Arsenault  ret void
10307786266dSMatt Arsenault}
10317786266dSMatt Arsenault
10327786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_1_1(ptr addrspace(1) inreg %ptr) {
10337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_1_1:
10347786266dSMatt Arsenault; GFX900:       ; %bb.0:
10357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10377786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
10387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
10407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
10417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
10427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
10437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10457786266dSMatt Arsenault;
10467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_1_1:
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 v[0:1]
10517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
10537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
10547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
10557786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
10567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10587786266dSMatt Arsenault;
10597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_1_1:
10607786266dSMatt Arsenault; GFX940:       ; %bb.0:
10617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10637786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
10647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
10667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
10677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
10687786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
10697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10717786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
10727786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1>
10737786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
10747786266dSMatt Arsenault  ret void
10757786266dSMatt Arsenault}
10767786266dSMatt Arsenault
10777786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_1_1(ptr addrspace(1) inreg %ptr) {
10787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_1_1:
10797786266dSMatt Arsenault; GFX900:       ; %bb.0:
10807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
10827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
10847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
10867786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
10877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10897786266dSMatt Arsenault;
10907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_1_1:
10917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
10947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
10967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
10987786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
10997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11017786266dSMatt Arsenault;
11027786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__2_1_1:
11037786266dSMatt Arsenault; GFX940:       ; %bb.0:
11047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
11067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11077786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
11087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11097786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
11107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
11117786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
11127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11147786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
11157786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1>
11167786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
11177786266dSMatt Arsenault  ret void
11187786266dSMatt Arsenault}
11197786266dSMatt Arsenault
11207786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_1(ptr addrspace(1) inreg %ptr) {
11217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_1:
11227786266dSMatt Arsenault; GFX900:       ; %bb.0:
11237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
11267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11287786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
11297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
11327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
11337786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
11347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11367786266dSMatt Arsenault;
11377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_1:
11387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11417786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
11427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11447786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
11457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
11477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
11487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
11497786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
11507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11527786266dSMatt Arsenault;
11537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_1:
11547786266dSMatt Arsenault; GFX940:       ; %bb.0:
11557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11577786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
11587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
11617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
11637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
11647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
11657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
11667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11687786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
11697786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
11707786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 1>
11717786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
11727786266dSMatt Arsenault  ret void
11737786266dSMatt Arsenault}
11747786266dSMatt Arsenault
11757786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_1(ptr addrspace(1) inreg %ptr) {
11767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_1:
11777786266dSMatt Arsenault; GFX900:       ; %bb.0:
11787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
11817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
11847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
11867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
11877786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
11887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11907786266dSMatt Arsenault;
11917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_1:
11927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
11967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11987786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
11997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12017786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
12027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
12037786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
12047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12057786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12067786266dSMatt Arsenault;
12077786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_1:
12087786266dSMatt Arsenault; GFX940:       ; %bb.0:
12097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12117786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
12127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
12157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
12187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
12197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
12207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12227786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
12237786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
12247786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>
12257786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
12267786266dSMatt Arsenault  ret void
12277786266dSMatt Arsenault}
12287786266dSMatt Arsenault
12297786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_1(ptr addrspace(1) inreg %ptr) {
12307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_1:
12317786266dSMatt Arsenault; GFX900:       ; %bb.0:
12327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
12347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12357786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
12367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
12387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
12407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12417786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
12427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12447786266dSMatt Arsenault;
12457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_1:
12467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
12507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12527786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
12537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
12567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
12577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
12587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
12597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12617786266dSMatt Arsenault;
12627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_1:
12637786266dSMatt Arsenault; GFX940:       ; %bb.0:
12647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
12677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12697786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
12707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
12737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
12747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
12757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
12767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12787786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
12797786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
12807786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 1>
12817786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
12827786266dSMatt Arsenault  ret void
12837786266dSMatt Arsenault}
12847786266dSMatt Arsenault
12857786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_1(ptr addrspace(1) inreg %ptr) {
12867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_1:
12877786266dSMatt Arsenault; GFX900:       ; %bb.0:
12887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12907786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
12917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
12947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
12967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
12977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
12987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
12997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13017786266dSMatt Arsenault;
13027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_1:
13037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
13077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
13117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
13137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
13147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
13157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
13167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13187786266dSMatt Arsenault;
13197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_1:
13207786266dSMatt Arsenault; GFX940:       ; %bb.0:
13217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
13247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
13287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
13307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
13317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
13327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
13337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13357786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
13367786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
13377786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 1>
13387786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
13397786266dSMatt Arsenault  ret void
13407786266dSMatt Arsenault}
13417786266dSMatt Arsenault
13427786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__u_2_2(ptr addrspace(1) inreg %ptr) {
13437786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v2i32__u_2_2:
13447786266dSMatt Arsenault; GFX9:       ; %bb.0:
13457786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13467786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
13477786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
13487786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2>
13497786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
13507786266dSMatt Arsenault  ret void
13517786266dSMatt Arsenault}
13527786266dSMatt Arsenault
13537786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_2_2(ptr addrspace(1) inreg %ptr) {
13547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_2_2:
13557786266dSMatt Arsenault; GFX900:       ; %bb.0:
13567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
13587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
13607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
13627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13647786266dSMatt Arsenault;
13657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_2_2:
13667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
13697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
13717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
13737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13757786266dSMatt Arsenault;
13767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__0_2_2:
13777786266dSMatt Arsenault; GFX940:       ; %bb.0:
13787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
13807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
13827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1
13847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13867786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
13877786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2>
13887786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
13897786266dSMatt Arsenault  ret void
13907786266dSMatt Arsenault}
13917786266dSMatt Arsenault
13927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_2_2(ptr addrspace(1) inreg %ptr) {
13937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_2_2:
13947786266dSMatt Arsenault; GFX900:       ; %bb.0:
13957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
13987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
14007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
14017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
14027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14047786266dSMatt Arsenault;
14057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_2_2:
14067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
14107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
14127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
14137786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]
14147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14167786266dSMatt Arsenault;
14177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_2_2:
14187786266dSMatt Arsenault; GFX940:       ; %bb.0:
14197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
14227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
14247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
14257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1] sc0 sc1
14267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14287786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
14297786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2>
14307786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
14317786266dSMatt Arsenault  ret void
14327786266dSMatt Arsenault}
14337786266dSMatt Arsenault
14347786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_2_2(ptr addrspace(1) inreg %ptr) {
14357786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v2i32__2_2_2:
14367786266dSMatt Arsenault; GFX9:       ; %bb.0:
14377786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14387786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
14397786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
14407786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2>
14417786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
14427786266dSMatt Arsenault  ret void
14437786266dSMatt Arsenault}
14447786266dSMatt Arsenault
14457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_2(ptr addrspace(1) inreg %ptr) {
14467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_2:
14477786266dSMatt Arsenault; GFX900:       ; %bb.0:
14487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
14517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
14537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
14547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
14557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
14567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14587786266dSMatt Arsenault;
14597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_2:
14607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
14657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
14677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
14687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
14697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14717786266dSMatt Arsenault;
14727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_2:
14737786266dSMatt Arsenault; GFX940:       ; %bb.0:
14747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14777786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
14787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14797786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
14817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
14827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
14837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14857786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
14867786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
14877786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 2>
14887786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
14897786266dSMatt Arsenault  ret void
14907786266dSMatt Arsenault}
14917786266dSMatt Arsenault
14927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_2(ptr addrspace(1) inreg %ptr) {
14937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_2:
14947786266dSMatt Arsenault; GFX900:       ; %bb.0:
14957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
14987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
15007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
15017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
15027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
15037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15057786266dSMatt Arsenault;
15067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_2:
15077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
15107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
15127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
15147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v1, v[0:2], s[16:17]
15157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15177786266dSMatt Arsenault;
15187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_2:
15197786266dSMatt Arsenault; GFX940:       ; %bb.0:
15207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, 0
15227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
15247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15257786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
15277786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v1, v[0:2], s[0:1] sc0 sc1
15287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15307786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
15317786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
15327786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>
15337786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
15347786266dSMatt Arsenault  ret void
15357786266dSMatt Arsenault}
15367786266dSMatt Arsenault
15377786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_2(ptr addrspace(1) inreg %ptr) {
15387786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_2:
15397786266dSMatt Arsenault; GFX900:       ; %bb.0:
15407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
15437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
15477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
15497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
15507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15527786266dSMatt Arsenault;
15537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_2:
15547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
15587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
15607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
15627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
15647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
15657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
15667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
15677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15697786266dSMatt Arsenault;
15707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_2:
15717786266dSMatt Arsenault; GFX940:       ; %bb.0:
15727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
15757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
15777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
15797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
15817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
15827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
15837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
15847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15867786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
15877786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
15887786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 2>
15897786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
15907786266dSMatt Arsenault  ret void
15917786266dSMatt Arsenault}
15927786266dSMatt Arsenault
15937786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_2(ptr addrspace(1) inreg %ptr) {
15947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_2:
15957786266dSMatt Arsenault; GFX900:       ; %bb.0:
15967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
15997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
16017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16027786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
16037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
16057786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
16067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16087786266dSMatt Arsenault;
16097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_2:
16107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
16147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
16167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
16187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
16207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
16217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16237786266dSMatt Arsenault;
16247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_2:
16257786266dSMatt Arsenault; GFX940:       ; %bb.0:
16267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
16297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
16317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16327786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
16337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16347786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
16367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
16377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16397786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
16407786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
16417786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 2>
16427786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
16437786266dSMatt Arsenault  ret void
16447786266dSMatt Arsenault}
16457786266dSMatt Arsenault
16467786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__u_3_3(ptr addrspace(1) inreg %ptr) {
16477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_3_3:
16487786266dSMatt Arsenault; GFX900:       ; %bb.0:
16497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
16517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
16537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
16557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
16567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16587786266dSMatt Arsenault;
16597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_3_3:
16607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
16637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
16657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
16677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
16687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16707786266dSMatt Arsenault;
16717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__u_3_3:
16727786266dSMatt Arsenault; GFX940:       ; %bb.0:
16737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
16757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
16777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16787786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
16807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
16817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16837786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
16847786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
16857786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>
16867786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
16877786266dSMatt Arsenault  ret void
16887786266dSMatt Arsenault}
16897786266dSMatt Arsenault
16907786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__0_3_3(ptr addrspace(1) inreg %ptr) {
16917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_3_3:
16927786266dSMatt Arsenault; GFX900:       ; %bb.0:
16937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
16967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
16997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
17017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
17027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
17037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17057786266dSMatt Arsenault;
17067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_3_3:
17077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
17117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
17147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
17177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
17187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
17197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17217786266dSMatt Arsenault;
17227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__0_3_3:
17237786266dSMatt Arsenault; GFX940:       ; %bb.0:
17247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
17277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
17307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
17337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
17347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
17357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17377786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
17387786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
17397786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 0, i32 3, i32 3>
17407786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
17417786266dSMatt Arsenault  ret void
17427786266dSMatt Arsenault}
17437786266dSMatt Arsenault
17447786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__1_3_3(ptr addrspace(1) inreg %ptr) {
17457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_3_3:
17467786266dSMatt Arsenault; GFX900:       ; %bb.0:
17477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
17507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
17537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
17557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
17567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
17577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
17587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17607786266dSMatt Arsenault;
17617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_3_3:
17627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
17667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
17697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
17727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
17737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
17747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17767786266dSMatt Arsenault;
17777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__1_3_3:
17787786266dSMatt Arsenault; GFX940:       ; %bb.0:
17797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
17827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
17857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
17887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
17897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
17907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17927786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
17937786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
17947786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 1, i32 3, i32 3>
17957786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
17967786266dSMatt Arsenault  ret void
17977786266dSMatt Arsenault}
17987786266dSMatt Arsenault
17997786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__2_3_3(ptr addrspace(1) inreg %ptr) {
18007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_3_3:
18017786266dSMatt Arsenault; GFX900:       ; %bb.0:
18027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
18047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
18067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
18087786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
18097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18117786266dSMatt Arsenault;
18127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_3_3:
18137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
18167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
18187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
18207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
18217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18237786266dSMatt Arsenault;
18247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__2_3_3:
18257786266dSMatt Arsenault; GFX940:       ; %bb.0:
18267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
18287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
18307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18317786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
18337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
18347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18367786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
18377786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
18387786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 2, i32 3, i32 3>
18397786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
18407786266dSMatt Arsenault  ret void
18417786266dSMatt Arsenault}
18427786266dSMatt Arsenault
18437786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_u_3(ptr addrspace(1) inreg %ptr) {
18447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_3:
18457786266dSMatt Arsenault; GFX900:       ; %bb.0:
18467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
18487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
18507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
18527786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
18537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18547786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18557786266dSMatt Arsenault;
18567786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_3:
18577786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18587786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
18617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
18637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
18647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
18657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
18667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18687786266dSMatt Arsenault;
18697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_u_3:
18707786266dSMatt Arsenault; GFX940:       ; %bb.0:
18717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
18747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
18767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
18777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
18787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
18797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18817786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
18827786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
18837786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>
18847786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
18857786266dSMatt Arsenault  ret void
18867786266dSMatt Arsenault}
18877786266dSMatt Arsenault
18887786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_0_3(ptr addrspace(1) inreg %ptr) {
18897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_3:
18907786266dSMatt Arsenault; GFX900:       ; %bb.0:
18917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
18947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
18977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
19007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
19017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
19027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19047786266dSMatt Arsenault;
19057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_3:
19067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
19107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
19127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
19147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
19167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
19177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
19187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
19197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19217786266dSMatt Arsenault;
19227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_0_3:
19237786266dSMatt Arsenault; GFX940:       ; %bb.0:
19247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
19277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
19297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
19317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
19337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
19347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v5
19357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1] sc0 sc1
19367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19387786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
19397786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
19407786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 3>
19417786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
19427786266dSMatt Arsenault  ret void
19437786266dSMatt Arsenault}
19447786266dSMatt Arsenault
19457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_1_3(ptr addrspace(1) inreg %ptr) {
19467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_3:
19477786266dSMatt Arsenault; GFX900:       ; %bb.0:
19487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
19517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
19547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
19567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
19577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
19587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
19597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19617786266dSMatt Arsenault;
19627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_3:
19637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
19677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
19707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
19727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
19737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
19747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
19757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19777786266dSMatt Arsenault;
19787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_1_3:
19797786266dSMatt Arsenault; GFX940:       ; %bb.0:
19807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
19837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
19867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
19897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
19907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
19917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19937786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
19947786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
19957786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 3>
19967786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
19977786266dSMatt Arsenault  ret void
19987786266dSMatt Arsenault}
19997786266dSMatt Arsenault
20007786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v2i32__3_2_3(ptr addrspace(1) inreg %ptr) {
20017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_3:
20027786266dSMatt Arsenault; GFX900:       ; %bb.0:
20037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
20057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
20077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
20097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
20107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20127786266dSMatt Arsenault;
20137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_3:
20147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
20187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
20207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
20217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
20227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
20237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
20247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20267786266dSMatt Arsenault;
20277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v2i32__3_2_3:
20287786266dSMatt Arsenault; GFX940:       ; %bb.0:
20297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
20327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
20347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
20357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
20367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
20377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1] sc0 sc1
20387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20407786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
20417786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
20427786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 3>
20437786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
20447786266dSMatt Arsenault  ret void
20457786266dSMatt Arsenault}
20467786266dSMatt Arsenault
20477786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_u_u() {
2048*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_u_u:
2049*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2050*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2051*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2052*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
2053*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2054*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
20557786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
20567786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> poison
2057*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
20587786266dSMatt Arsenault  ret void
20597786266dSMatt Arsenault}
20607786266dSMatt Arsenault
20617786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_u_u() {
20627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_u_u:
20637786266dSMatt Arsenault; GFX900:       ; %bb.0:
20647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2066*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
20677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2069*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
20707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20727786266dSMatt Arsenault;
20737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_u_u:
20747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2077*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
20787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2080*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
20817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20837786266dSMatt Arsenault;
20847786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__0_u_u:
20857786266dSMatt Arsenault; GFX940:       ; %bb.0:
20867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2088*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
20897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20907786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
20917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2092*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
20937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20957786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
20967786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison>
2097*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
20987786266dSMatt Arsenault  ret void
20997786266dSMatt Arsenault}
21007786266dSMatt Arsenault
21017786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_u_u() {
21027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_u_u:
21037786266dSMatt Arsenault; GFX900:       ; %bb.0:
21047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21067786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
21077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2108*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
21097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2110*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
21117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21137786266dSMatt Arsenault;
21147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_u_u:
21157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21187786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
21197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2120*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
21217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2122*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
21237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21257786266dSMatt Arsenault;
21267786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__1_u_u:
21277786266dSMatt Arsenault; GFX940:       ; %bb.0:
21287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21307786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
21317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2132*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
21337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2134*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
21357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21377786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
21387786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
2139*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
21407786266dSMatt Arsenault  ret void
21417786266dSMatt Arsenault}
21427786266dSMatt Arsenault
21437786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_u_u() {
2144*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_u_u:
2145*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2146*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2147*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2148*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
2149*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2150*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
21517786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
21527786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
2153*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
21547786266dSMatt Arsenault  ret void
21557786266dSMatt Arsenault}
21567786266dSMatt Arsenault
21577786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_u() {
21587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_u:
21597786266dSMatt Arsenault; GFX900:       ; %bb.0:
21607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21627786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
21637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2164*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
21657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2166*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
21677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21697786266dSMatt Arsenault;
21707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_u:
21717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21747786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
21757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2176*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
21777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2178*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
21797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21817786266dSMatt Arsenault;
21827786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_u:
21837786266dSMatt Arsenault; GFX940:       ; %bb.0:
21847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21867786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
21877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2188*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
21897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2190*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
21917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21937786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
21947786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
21957786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>
2196*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
21977786266dSMatt Arsenault  ret void
21987786266dSMatt Arsenault}
21997786266dSMatt Arsenault
22007786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_u() {
22017786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_u:
22027786266dSMatt Arsenault; GFX900:       ; %bb.0:
22037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22057786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
22067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22087786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
22097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2210*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
2211*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
22127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2213*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
22147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22167786266dSMatt Arsenault;
22177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_u:
22187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22217786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
22227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22247786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
22257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2226*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
2227*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
22287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2229*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
22307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22327786266dSMatt Arsenault;
22337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_u:
22347786266dSMatt Arsenault; GFX940:       ; %bb.0:
22357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22377786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
22387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22407786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
22417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2242*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
2243*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
22447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2245*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
22467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22487786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
22497786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
22507786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>
2251*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
22527786266dSMatt Arsenault  ret void
22537786266dSMatt Arsenault}
22547786266dSMatt Arsenault
22557786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_u() {
22567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_u:
22577786266dSMatt Arsenault; GFX900:       ; %bb.0:
22587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2260*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
2261*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2262*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
22647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2265*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
22667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2267*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
22687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22707786266dSMatt Arsenault;
22717786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_u:
22727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2275*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
2276*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2277*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22787786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
22797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2280*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
22817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2282*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
22837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22857786266dSMatt Arsenault;
22867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_u:
22877786266dSMatt Arsenault; GFX940:       ; %bb.0:
22887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2290*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
2291*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2292*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22937786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
22947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2295*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
22967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2297*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
22987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23007786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
23017786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
23027786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>
2303*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
23047786266dSMatt Arsenault  ret void
23057786266dSMatt Arsenault}
23067786266dSMatt Arsenault
23077786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_u() {
23087786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_u:
23097786266dSMatt Arsenault; GFX900:       ; %bb.0:
23107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2312*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
23137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2314*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
2315*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
23167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2317*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
23187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23207786266dSMatt Arsenault;
23217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_u:
23227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2325*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
23267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2327*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
2328*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
23297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2330*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
23317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23337786266dSMatt Arsenault;
23347786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_u:
23357786266dSMatt Arsenault; GFX940:       ; %bb.0:
23367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2338*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
23397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2340*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
2341*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
23427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2343*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
23447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23467786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
23477786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
23487786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>
2349*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
23507786266dSMatt Arsenault  ret void
23517786266dSMatt Arsenault}
23527786266dSMatt Arsenault
23537786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_u() {
2354*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_3_u:
2355*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2356*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2357*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2358*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
2359*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2360*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
2361*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2362*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
2363*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2364*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
23657786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
23667786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
23677786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>
2368*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
23697786266dSMatt Arsenault  ret void
23707786266dSMatt Arsenault}
23717786266dSMatt Arsenault
23727786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_0() {
23737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_3_0:
23747786266dSMatt Arsenault; GFX900:       ; %bb.0:
23757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2377*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
2378*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2379*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23807786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
23817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2382*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
2383*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
23847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2385*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
23867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23887786266dSMatt Arsenault;
23897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_3_0:
23907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2393*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
2394*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2395*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23967786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
23977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2398*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
2399*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
24007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2401*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
24027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24047786266dSMatt Arsenault;
24057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_3_0:
24067786266dSMatt Arsenault; GFX940:       ; %bb.0:
24077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2409*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
2410*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2411*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24127786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
24137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2414*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
2415*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
24167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2417*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
24187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24207786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
24217786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
24227786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 0>
2423*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
24247786266dSMatt Arsenault  ret void
24257786266dSMatt Arsenault}
24267786266dSMatt Arsenault
24277786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_1() {
24287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_3_1:
24297786266dSMatt Arsenault; GFX900:       ; %bb.0:
24307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2432*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
24337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24357786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
24367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2437*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
2438*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
24397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2440*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
24417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24437786266dSMatt Arsenault;
24447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_3_1:
24457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2448*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
24497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24517786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
24527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2453*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
2454*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
24557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2456*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
24577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24597786266dSMatt Arsenault;
24607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_3_1:
24617786266dSMatt Arsenault; GFX940:       ; %bb.0:
24627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2464*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
24657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24677786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
24687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2469*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
2470*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
24717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2472*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
24737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24757786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
24767786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
24777786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 1>
2478*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
24797786266dSMatt Arsenault  ret void
24807786266dSMatt Arsenault}
24817786266dSMatt Arsenault
24827786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_2() {
24837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_3_2:
24847786266dSMatt Arsenault; GFX900:       ; %bb.0:
24857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2487*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
24887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2489*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
2490*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
2491*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
24927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2493*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
24947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24967786266dSMatt Arsenault;
24977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_3_2:
24987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2501*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
25027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2503*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
2504*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
2505*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
25067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2507*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
25087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25107786266dSMatt Arsenault;
25117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_3_2:
25127786266dSMatt Arsenault; GFX940:       ; %bb.0:
25137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2515*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
25167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2517*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
2518*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
2519*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
25207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2521*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
25227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25247786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
25257786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
25267786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 2>
2527*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
25287786266dSMatt Arsenault  ret void
25297786266dSMatt Arsenault}
25307786266dSMatt Arsenault
25317786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_3_3() {
2532*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_3_3:
2533*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2534*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2535*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2536*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
2537*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2538*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
2539*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
2540*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2541*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
2542*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2543*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
25447786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
25457786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
25467786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 3>
2547*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
25487786266dSMatt Arsenault  ret void
25497786266dSMatt Arsenault}
25507786266dSMatt Arsenault
25517786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_0_0() {
25527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__u_0_0:
25537786266dSMatt Arsenault; GFX900:       ; %bb.0:
25547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25567786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
25577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2558*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
2559*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
25607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2561*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
25627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25647786266dSMatt Arsenault;
25657786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__u_0_0:
25667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25697786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
25707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2571*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
2572*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
25737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2574*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
25757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25777786266dSMatt Arsenault;
25787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__u_0_0:
25797786266dSMatt Arsenault; GFX940:       ; %bb.0:
25807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25827786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
25837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2584*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
2585*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
25867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2587*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
25887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25907786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
25917786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0>
2592*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
25937786266dSMatt Arsenault  ret void
25947786266dSMatt Arsenault}
25957786266dSMatt Arsenault
25967786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_0_0() {
2597*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__0_0_0:
2598*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2599*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2600*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2601*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
2602*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2603*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
2604*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
2605*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2606*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
2607*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2608*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
26097786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
26107786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> zeroinitializer
2611*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
26127786266dSMatt Arsenault  ret void
26137786266dSMatt Arsenault}
26147786266dSMatt Arsenault
26157786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_0_0() {
26167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_0_0:
26177786266dSMatt Arsenault; GFX900:       ; %bb.0:
26187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2620*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
26217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2622*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
2623*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
2624*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
26257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2626*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
26277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26297786266dSMatt Arsenault;
26307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_0_0:
26317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2634*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
26357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2636*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
2637*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
2638*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
26397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2640*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
26417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26437786266dSMatt Arsenault;
26447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__1_0_0:
26457786266dSMatt Arsenault; GFX940:       ; %bb.0:
26467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2648*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
26497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2650*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
2651*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
2652*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
26537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2654*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
26557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26577786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
26587786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0>
2659*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
26607786266dSMatt Arsenault  ret void
26617786266dSMatt Arsenault}
26627786266dSMatt Arsenault
26637786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_0_0() {
26647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__2_0_0:
26657786266dSMatt Arsenault; GFX900:       ; %bb.0:
26667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
26697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2670*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
2671*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
26727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2673*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
26747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26767786266dSMatt Arsenault;
26777786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__2_0_0:
26787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26817786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
26827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2683*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
2684*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
26857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2686*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
26877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26897786266dSMatt Arsenault;
26907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__2_0_0:
26917786266dSMatt Arsenault; GFX940:       ; %bb.0:
26927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26947786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
26957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2696*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
2697*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
26987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2699*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
27007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27027786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
27037786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0>
2704*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
27057786266dSMatt Arsenault  ret void
27067786266dSMatt Arsenault}
27077786266dSMatt Arsenault
27087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_0() {
27097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_0:
27107786266dSMatt Arsenault; GFX900:       ; %bb.0:
27117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
27147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27167786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
27177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2718*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
2719*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
2720*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
27217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2722*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
27237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27247786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27257786266dSMatt Arsenault;
27267786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_0:
27277786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27307786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
27317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27337786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
27347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2735*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
2736*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
2737*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
27387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2739*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
27407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27417786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27427786266dSMatt Arsenault;
27437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_0:
27447786266dSMatt Arsenault; GFX940:       ; %bb.0:
27457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27477786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
27487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27507786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
27517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2752*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
2753*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
2754*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
27557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2756*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
27577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27597786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
27607786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
27617786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 0>
2762*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
27637786266dSMatt Arsenault  ret void
27647786266dSMatt Arsenault}
27657786266dSMatt Arsenault
27667786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_0() {
27677786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_0:
27687786266dSMatt Arsenault; GFX900:       ; %bb.0:
27697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27717786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
27727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27747786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
27757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2776*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
2777*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
27787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2779*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
27807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27827786266dSMatt Arsenault;
27837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_0:
27847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
27887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27907786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
27917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2792*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
2793*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
27947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2795*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
27967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27987786266dSMatt Arsenault;
27997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_0:
28007786266dSMatt Arsenault; GFX940:       ; %bb.0:
28017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28037786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
28047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28067786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
28077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2808*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
2809*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
28107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2811*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
28127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28147786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
28157786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
28167786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>
2817*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
28187786266dSMatt Arsenault  ret void
28197786266dSMatt Arsenault}
28207786266dSMatt Arsenault
28217786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_0() {
28227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_0:
28237786266dSMatt Arsenault; GFX900:       ; %bb.0:
28247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28267786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
28277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28297786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
28307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2831*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
2832*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
2833*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
28347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2835*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
28367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28387786266dSMatt Arsenault;
28397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_0:
28407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28437786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
28447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28467786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
28477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2848*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
2849*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
2850*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
28517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2852*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
28537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28557786266dSMatt Arsenault;
28567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_0:
28577786266dSMatt Arsenault; GFX940:       ; %bb.0:
28587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28607786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
28617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28637786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
28647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2865*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
2866*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
2867*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
28687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2869*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
28707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28727786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
28737786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
28747786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 0>
2875*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
28767786266dSMatt Arsenault  ret void
28777786266dSMatt Arsenault}
28787786266dSMatt Arsenault
28797786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_0() {
28807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_0:
28817786266dSMatt Arsenault; GFX900:       ; %bb.0:
28827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2884*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
2885*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2886*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28877786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
28887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2889*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
2890*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
2891*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
28927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2893*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
28947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28967786266dSMatt Arsenault;
28977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_0:
28987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2901*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
2902*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2903*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29047786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
29057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2906*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
2907*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
2908*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
29097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2910*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
29117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29137786266dSMatt Arsenault;
29147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_0:
29157786266dSMatt Arsenault; GFX940:       ; %bb.0:
29167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2918*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
2919*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2920*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29217786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
29227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2923*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
2924*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
2925*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
29267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2927*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
29287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29307786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
29317786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
29327786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 0>
2933*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
29347786266dSMatt Arsenault  ret void
29357786266dSMatt Arsenault}
29367786266dSMatt Arsenault
29377786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_1_1() {
2938*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_1_1:
2939*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2940*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2941*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2942*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
2943*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2944*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
2945*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2946*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
2947*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2948*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
29497786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
29507786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1>
2951*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
29527786266dSMatt Arsenault  ret void
29537786266dSMatt Arsenault}
29547786266dSMatt Arsenault
29557786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_1_1() {
2956*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__0_1_1:
2957*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2958*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2959*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2960*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
2961*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2962*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
2963*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2964*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
2965*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2966*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
29677786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
29687786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1>
2969*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
29707786266dSMatt Arsenault  ret void
29717786266dSMatt Arsenault}
29727786266dSMatt Arsenault
29737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_1_1() {
2974*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__1_1_1:
2975*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2976*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2977*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2978*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
2979*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2980*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
2981*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
2982*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2983*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
2984*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2985*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
29867786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
29877786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1>
2988*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
29897786266dSMatt Arsenault  ret void
29907786266dSMatt Arsenault}
29917786266dSMatt Arsenault
29927786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_1_1() {
2993*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_1_1:
2994*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2995*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2996*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2997*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
2998*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2999*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3000*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3001*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
3002*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3003*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
30047786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
30057786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1>
3006*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
30077786266dSMatt Arsenault  ret void
30087786266dSMatt Arsenault}
30097786266dSMatt Arsenault
30107786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_1() {
30117786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_1:
30127786266dSMatt Arsenault; GFX900:       ; %bb.0:
30137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3015*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
3016*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3017*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30187786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
30197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3020*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3021*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
30227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3023*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
30247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30267786266dSMatt Arsenault;
30277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_1:
30287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3031*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
3032*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3033*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30347786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
30357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3036*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3037*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
30387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3039*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
30407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30417786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30427786266dSMatt Arsenault;
30437786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_1:
30447786266dSMatt Arsenault; GFX940:       ; %bb.0:
30457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3047*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
3048*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3049*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30507786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
30517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3052*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3053*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
30547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3055*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
30567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30577786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30587786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
30597786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
30607786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 1>
3061*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
30627786266dSMatt Arsenault  ret void
30637786266dSMatt Arsenault}
30647786266dSMatt Arsenault
30657786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_1() {
30667786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_1:
30677786266dSMatt Arsenault; GFX900:       ; %bb.0:
30687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30707786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
30717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30737786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
30747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3075*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
3076*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
30777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3078*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
30797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30817786266dSMatt Arsenault;
30827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_1:
30837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
30877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30897786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
30907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3091*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
3092*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
30937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3094*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
30957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30977786266dSMatt Arsenault;
30987786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_1:
30997786266dSMatt Arsenault; GFX940:       ; %bb.0:
31007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31027786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
31037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31057786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
31067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3107*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
3108*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
31097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3110*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
31117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31137786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
31147786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
31157786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>
3116*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
31177786266dSMatt Arsenault  ret void
31187786266dSMatt Arsenault}
31197786266dSMatt Arsenault
31207786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_1() {
31217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_1:
31227786266dSMatt Arsenault; GFX900:       ; %bb.0:
31237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
31267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3128*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
3129*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3130*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
3131*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
3132*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
3133*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3134*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
31357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31377786266dSMatt Arsenault;
31387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_1:
31397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
31437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3145*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
3146*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3147*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
3148*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
3149*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
3150*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3151*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
31527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31547786266dSMatt Arsenault;
31557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_1:
31567786266dSMatt Arsenault; GFX940:       ; %bb.0:
31577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31597786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
31607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3162*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
3163*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3164*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
3165*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
3166*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
3167*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3168*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
31697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31717786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
31727786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
31737786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 1>
3174*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
31757786266dSMatt Arsenault  ret void
31767786266dSMatt Arsenault}
31777786266dSMatt Arsenault
31787786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_1() {
31797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_1:
31807786266dSMatt Arsenault; GFX900:       ; %bb.0:
31817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3183*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
3184*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3185*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31867786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
31877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3188*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
3189*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
3190*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
31917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3192*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
31937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31957786266dSMatt Arsenault;
31967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_1:
31977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3200*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
3201*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3202*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32037786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
32047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3205*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
3206*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
3207*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
32087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3209*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
32107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32127786266dSMatt Arsenault;
32137786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_1:
32147786266dSMatt Arsenault; GFX940:       ; %bb.0:
32157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3217*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
3218*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3219*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32207786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
32217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3222*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
3223*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
3224*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
32257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3226*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
32277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32297786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
32307786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
32317786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 1>
3232*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
32337786266dSMatt Arsenault  ret void
32347786266dSMatt Arsenault}
32357786266dSMatt Arsenault
32367786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_2_2() {
3237*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_2_2:
3238*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3239*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3240*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3241*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
3242*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3243*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
32447786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
32457786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2>
3246*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
32477786266dSMatt Arsenault  ret void
32487786266dSMatt Arsenault}
32497786266dSMatt Arsenault
32507786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_2_2() {
32517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_2_2:
32527786266dSMatt Arsenault; GFX900:       ; %bb.0:
32537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3255*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
32567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3258*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
32597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32617786266dSMatt Arsenault;
32627786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_2_2:
32637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3266*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
32677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3269*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
32707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32727786266dSMatt Arsenault;
32737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__0_2_2:
32747786266dSMatt Arsenault; GFX940:       ; %bb.0:
32757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3277*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
32787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32797786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
32807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3281*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
32827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32847786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
32857786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2>
3286*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
32877786266dSMatt Arsenault  ret void
32887786266dSMatt Arsenault}
32897786266dSMatt Arsenault
32907786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_2_2() {
32917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_2_2:
32927786266dSMatt Arsenault; GFX900:       ; %bb.0:
32937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32957786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
32967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3297*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
32987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3299*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
33007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33027786266dSMatt Arsenault;
33037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_2_2:
33047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33077786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
33087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3309*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
33107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3311*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
33127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33147786266dSMatt Arsenault;
33157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__1_2_2:
33167786266dSMatt Arsenault; GFX940:       ; %bb.0:
33177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33197786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
33207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3321*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
33227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3323*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
33247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33267786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
33277786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2>
3328*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
33297786266dSMatt Arsenault  ret void
33307786266dSMatt Arsenault}
33317786266dSMatt Arsenault
33327786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_2_2() {
3333*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_2_2:
3334*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3335*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3336*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3337*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
3338*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3339*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
33407786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
33417786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2>
3342*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
33437786266dSMatt Arsenault  ret void
33447786266dSMatt Arsenault}
33457786266dSMatt Arsenault
33467786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_2() {
33477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_2:
33487786266dSMatt Arsenault; GFX900:       ; %bb.0:
33497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3351*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
33527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3353*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3354*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
3355*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
33567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3357*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
33587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33607786266dSMatt Arsenault;
33617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_2:
33627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3365*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
33667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3367*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3368*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
3369*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
33707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3371*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
33727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33747786266dSMatt Arsenault;
33757786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_2:
33767786266dSMatt Arsenault; GFX940:       ; %bb.0:
33777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3379*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
33807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3381*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3382*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
3383*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
33847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3385*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
33867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33887786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
33897786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
33907786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 2>
3391*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
33927786266dSMatt Arsenault  ret void
33937786266dSMatt Arsenault}
33947786266dSMatt Arsenault
33957786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_2() {
33967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_2:
33977786266dSMatt Arsenault; GFX900:       ; %bb.0:
33987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3400*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
34017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3402*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3403*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
34047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3405*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
34067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34087786266dSMatt Arsenault;
34097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_2:
34107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3413*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
34147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3415*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3416*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
34177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3418*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
34197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34217786266dSMatt Arsenault;
34227786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_2:
34237786266dSMatt Arsenault; GFX940:       ; %bb.0:
34247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3426*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
34277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3428*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3429*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
34307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3431*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
34327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34347786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
34357786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
34367786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>
3437*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
34387786266dSMatt Arsenault  ret void
34397786266dSMatt Arsenault}
34407786266dSMatt Arsenault
34417786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_2() {
34427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_2:
34437786266dSMatt Arsenault; GFX900:       ; %bb.0:
34447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3446*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
3447*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3448*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34497786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
34507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3451*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
3452*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
3453*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
34547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3455*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
34567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34587786266dSMatt Arsenault;
34597786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_2:
34607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3463*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
3464*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3465*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34667786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
34677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3468*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
3469*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
3470*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
34717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3472*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
34737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34757786266dSMatt Arsenault;
34767786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_2:
34777786266dSMatt Arsenault; GFX940:       ; %bb.0:
34787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3480*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
3481*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3482*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34837786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
34847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3485*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
3486*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
3487*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
34887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3489*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
34907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34927786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
34937786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
34947786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 2>
3495*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
34967786266dSMatt Arsenault  ret void
34977786266dSMatt Arsenault}
34987786266dSMatt Arsenault
34997786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_2() {
35007786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_2:
35017786266dSMatt Arsenault; GFX900:       ; %bb.0:
35027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3504*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
3505*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3506*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35077786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
35087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3509*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3510*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
35117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3512*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
35137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35157786266dSMatt Arsenault;
35167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_2:
35177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3520*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
3521*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3522*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35237786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
35247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3525*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3526*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
35277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3528*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
35297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35317786266dSMatt Arsenault;
35327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_2:
35337786266dSMatt Arsenault; GFX940:       ; %bb.0:
35347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3536*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
3537*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3538*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35397786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
35407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3541*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3542*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
35437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3544*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
35457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35477786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
35487786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
35497786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 2>
3550*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
35517786266dSMatt Arsenault  ret void
35527786266dSMatt Arsenault}
35537786266dSMatt Arsenault
35547786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__u_3_3() {
3555*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_3_3:
3556*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3557*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3558*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3559*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3560*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3561*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3562*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3563*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
3564*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3565*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
35667786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
35677786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
35687786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>
3569*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
35707786266dSMatt Arsenault  ret void
35717786266dSMatt Arsenault}
35727786266dSMatt Arsenault
35737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__0_3_3() {
35747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_3_3:
35757786266dSMatt Arsenault; GFX900:       ; %bb.0:
35767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3578*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
3579*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3580*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35817786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
35827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3583*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
3584*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
35857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3586*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
35877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35897786266dSMatt Arsenault;
35907786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_3_3:
35917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3594*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
3595*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3596*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35977786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
35987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3599*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
3600*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
36017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3602*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
36037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36057786266dSMatt Arsenault;
36067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__0_3_3:
36077786266dSMatt Arsenault; GFX940:       ; %bb.0:
36087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3610*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
3611*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3612*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36137786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
36147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3615*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
3616*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
36177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3618*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
36197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36217786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
36227786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
36237786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 0, i32 3, i32 3>
3624*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
36257786266dSMatt Arsenault  ret void
36267786266dSMatt Arsenault}
36277786266dSMatt Arsenault
36287786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__1_3_3() {
36297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_3_3:
36307786266dSMatt Arsenault; GFX900:       ; %bb.0:
36317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3633*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
36347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36367786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
36377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3638*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3639*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
36407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3641*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
36427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36447786266dSMatt Arsenault;
36457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_3_3:
36467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3649*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
36507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36527786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
36537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3654*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3655*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
36567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3657*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
36587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36607786266dSMatt Arsenault;
36617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__1_3_3:
36627786266dSMatt Arsenault; GFX940:       ; %bb.0:
36637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3665*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
36667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36687786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
36697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3670*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3671*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
36727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3673*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
36747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36767786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
36777786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
36787786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 1, i32 3, i32 3>
3679*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
36807786266dSMatt Arsenault  ret void
36817786266dSMatt Arsenault}
36827786266dSMatt Arsenault
36837786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__2_3_3() {
3684*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_3_3:
3685*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3686*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3687*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3688*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3689*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3690*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3691*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3692*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
3693*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3694*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36957786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
36967786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
36977786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 2, i32 3, i32 3>
3698*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
36997786266dSMatt Arsenault  ret void
37007786266dSMatt Arsenault}
37017786266dSMatt Arsenault
37027786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_u_3() {
37037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_3:
37047786266dSMatt Arsenault; GFX900:       ; %bb.0:
37057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37077786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
37087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3709*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3710*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
37117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3712*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
37137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37157786266dSMatt Arsenault;
37167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_3:
37177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37207786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
37217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3722*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3723*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
37247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3725*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
37267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37287786266dSMatt Arsenault;
37297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_u_3:
37307786266dSMatt Arsenault; GFX940:       ; %bb.0:
37317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37337786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
37347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3735*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3736*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
37377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3738*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
37397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37417786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
37427786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
37437786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>
3744*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
37457786266dSMatt Arsenault  ret void
37467786266dSMatt Arsenault}
37477786266dSMatt Arsenault
37487786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_0_3() {
37497786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_3:
37507786266dSMatt Arsenault; GFX900:       ; %bb.0:
37517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37537786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
37547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37567786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
37577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3758*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
3759*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
3760*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s7
37617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3762*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
37637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37657786266dSMatt Arsenault;
3766*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_3:
37677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37707786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
37717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37737786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
37747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3775*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
3776*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
3777*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s7
37787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3779*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
37807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37827786266dSMatt Arsenault;
3783*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_0_3:
37847786266dSMatt Arsenault; GFX940:       ; %bb.0:
37857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37877786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
37887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37907786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
37917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3792*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
3793*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
3794*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s3
37957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3796*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
3797*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3798*585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3799*585858aeSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
3800*585858aeSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
3801*585858aeSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 3>
3802*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
3803*585858aeSMatt Arsenault  ret void
3804*585858aeSMatt Arsenault}
3805*585858aeSMatt Arsenault
3806*585858aeSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_1_3() {
3807*585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_3:
3808*585858aeSMatt Arsenault; GFX900:       ; %bb.0:
3809*585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3810*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3811*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
3812*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3813*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3814*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
3815*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3816*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3817*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
3818*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3819*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
3820*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3821*585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3822*585858aeSMatt Arsenault;
3823*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_3:
3824*585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
3825*585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3826*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3827*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
3828*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3829*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3830*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
3831*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3832*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3833*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
3834*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3835*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
3836*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3837*585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3838*585858aeSMatt Arsenault;
3839*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_1_3:
3840*585858aeSMatt Arsenault; GFX940:       ; %bb.0:
3841*585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3842*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3843*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
3844*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3845*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3846*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
3847*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3848*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3849*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
3850*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3851*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
38527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38547786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
38557786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
38567786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 3>
3857*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
38587786266dSMatt Arsenault  ret void
38597786266dSMatt Arsenault}
38607786266dSMatt Arsenault
38617786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v2i32__3_2_3() {
38627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_3:
38637786266dSMatt Arsenault; GFX900:       ; %bb.0:
38647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3866*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
38677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3868*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3869*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
3870*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
38717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3872*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
38737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38757786266dSMatt Arsenault;
38767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_3:
38777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3880*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
38817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3882*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3883*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
3884*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
38857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3886*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
38877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38897786266dSMatt Arsenault;
38907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v2i32__3_2_3:
38917786266dSMatt Arsenault; GFX940:       ; %bb.0:
38927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3894*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
38957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3896*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3897*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
3898*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
38997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3900*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
39017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39037786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
39047786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
39057786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 3>
3906*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
39077786266dSMatt Arsenault  ret void
39087786266dSMatt Arsenault}
39097786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
39107786266dSMatt Arsenault; GFX90APLUS: {{.*}}
3911