xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v2i32.v3i32.ll (revision e28e93550a74752714db6fffe50233aa96e536a5)
17786266dSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
27786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s
37786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s
47786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s
57786266dSMatt Arsenault
67786266dSMatt Arsenault
77786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i32_v3i32__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 <3 x i32> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> poison
147786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_u:
207786266dSMatt Arsenault; GFX900:       ; %bb.0:
217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
297786266dSMatt Arsenault;
307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_u:
317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
407786266dSMatt Arsenault;
417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_u:
427786266dSMatt Arsenault; GFX940:       ; %bb.0:
437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
517786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 poison>
537786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
687786266dSMatt Arsenault;
697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_u:
707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
777786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
797786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
807786266dSMatt Arsenault;
817786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_u:
827786266dSMatt Arsenault; GFX940:       ; %bb.0:
837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
927786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
937786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 poison>
947786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
957786266dSMatt Arsenault  ret void
967786266dSMatt Arsenault}
977786266dSMatt Arsenault
987786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_u(ptr addrspace(1) inreg %ptr) {
997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_u:
1007786266dSMatt Arsenault; GFX900:       ; %bb.0:
1017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
1047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1077786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1097786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1107786266dSMatt Arsenault;
1117786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_u:
1127786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1137786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1157786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
1167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1197786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1217786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1227786266dSMatt Arsenault;
1237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_u:
1247786266dSMatt Arsenault; GFX940:       ; %bb.0:
1257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
1287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1317786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1347786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
1357786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 poison>
1367786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1377786266dSMatt Arsenault  ret void
1387786266dSMatt Arsenault}
1397786266dSMatt Arsenault
1407786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_u(ptr addrspace(1) inreg %ptr) {
1417786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i32_v3i32__3_u:
1427786266dSMatt Arsenault; GFX9:       ; %bb.0:
1437786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1447786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1457786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
1467786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 poison>
1477786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1487786266dSMatt Arsenault  ret void
1497786266dSMatt Arsenault}
1507786266dSMatt Arsenault
1517786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_u(ptr addrspace(1) inreg %ptr) {
1527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_u:
1537786266dSMatt Arsenault; GFX900:       ; %bb.0:
1547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
1587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1597786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
1607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1627786266dSMatt Arsenault;
1637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_u:
1647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
1687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
1727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1747786266dSMatt Arsenault;
1757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_u:
1767786266dSMatt Arsenault; GFX940:       ; %bb.0:
1777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
1807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
1847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1867786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
1877786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
1887786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 poison>
1897786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
1907786266dSMatt Arsenault  ret void
1917786266dSMatt Arsenault}
1927786266dSMatt Arsenault
1937786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_u(ptr addrspace(1) inreg %ptr) {
1947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_u:
1957786266dSMatt Arsenault; GFX900:       ; %bb.0:
1967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
1997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
2017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
2037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2057786266dSMatt Arsenault;
2067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_u:
2077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
2117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
2137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
2147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
2157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2177786266dSMatt Arsenault;
2187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_u:
2197786266dSMatt Arsenault; GFX940:       ; %bb.0:
2207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2227786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
2237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
2257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
2267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
2277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2297786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
2307786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
2317786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 poison>
2327786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2337786266dSMatt Arsenault  ret void
2347786266dSMatt Arsenault}
2357786266dSMatt Arsenault
2367786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_0(ptr addrspace(1) inreg %ptr) {
2377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_0:
2387786266dSMatt Arsenault; GFX900:       ; %bb.0:
2397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2417786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
2427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
2457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
2487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
2497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]
2507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2527786266dSMatt Arsenault;
2537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_0:
2547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
2587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
2617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
2647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
2657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v5, v[2:3], s[16:17]
2667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2687786266dSMatt Arsenault;
2697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_0:
2707786266dSMatt Arsenault; GFX940:       ; %bb.0:
2717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
2747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2777786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
2787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2797786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
2817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
2827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v5, v[2:3], s[0:1] sc0 sc1
2837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2857786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
2867786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
2877786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 0>
2887786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
2897786266dSMatt Arsenault  ret void
2907786266dSMatt Arsenault}
2917786266dSMatt Arsenault
2927786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_1(ptr addrspace(1) inreg %ptr) {
2937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_1:
2947786266dSMatt Arsenault; GFX900:       ; %bb.0:
2957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
2987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
3007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3017786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
3027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
3047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
3057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3077786266dSMatt Arsenault;
3087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_1:
3097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
3137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
3157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
3177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
3197786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
3207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3217786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3227786266dSMatt Arsenault;
3237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_1:
3247786266dSMatt Arsenault; GFX940:       ; %bb.0:
3257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
3287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
3307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
3327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3337786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
3347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
3357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
3367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3387786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
3397786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
3407786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 1>
3417786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3427786266dSMatt Arsenault  ret void
3437786266dSMatt Arsenault}
3447786266dSMatt Arsenault
3457786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_2(ptr addrspace(1) inreg %ptr) {
3467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_2:
3477786266dSMatt Arsenault; GFX900:       ; %bb.0:
3487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
3517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
3557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
3577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[1:2], s[16:17]
3587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3607786266dSMatt Arsenault;
3617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_2:
3627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
3667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
3687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
3707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
3747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3767786266dSMatt Arsenault;
3777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_2:
3787786266dSMatt Arsenault; GFX940:       ; %bb.0:
3797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
3827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
3847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
3867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
3907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3927786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
3937786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
3947786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 2>
3957786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
3967786266dSMatt Arsenault  ret void
3977786266dSMatt Arsenault}
3987786266dSMatt Arsenault
3997786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_3(ptr addrspace(1) inreg %ptr) {
4007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_3:
4017786266dSMatt Arsenault; GFX900:       ; %bb.0:
4027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
4057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
4087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
4097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
4107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4127786266dSMatt Arsenault;
4137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_3:
4147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
4197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
4217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
4227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4247786266dSMatt Arsenault;
4257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_3:
4267786266dSMatt Arsenault; GFX940:       ; %bb.0:
4277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
4317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4327786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
4347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
4357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4377786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
4387786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
4397786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 3>
4407786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
4417786266dSMatt Arsenault  ret void
4427786266dSMatt Arsenault}
4437786266dSMatt Arsenault
4447786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_4(ptr addrspace(1) inreg %ptr) {
4457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_4:
4467786266dSMatt Arsenault; GFX900:       ; %bb.0:
4477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
4507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
4537786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
4547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4567786266dSMatt Arsenault;
4577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_4:
4587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
4627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
4647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
4657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
4667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4687786266dSMatt Arsenault;
4697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_4:
4707786266dSMatt Arsenault; GFX940:       ; %bb.0:
4717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
4747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
4767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
4777786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
4787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4807786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
4817786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
4827786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 4>
4837786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
4847786266dSMatt Arsenault  ret void
4857786266dSMatt Arsenault}
4867786266dSMatt Arsenault
4877786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__5_5(ptr addrspace(1) inreg %ptr) {
4887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_5:
4897786266dSMatt Arsenault; GFX900:       ; %bb.0:
4907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
4937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
4967786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
4977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4997786266dSMatt Arsenault;
5007786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_5:
5017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
5057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
5077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
5087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
5097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
5107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5127786266dSMatt Arsenault;
5137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__5_5:
5147786266dSMatt Arsenault; GFX940:       ; %bb.0:
5157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
5187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
5207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
5217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
5227786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
5237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5247786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5257786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
5267786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
5277786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 5>
5287786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
5297786266dSMatt Arsenault  ret void
5307786266dSMatt Arsenault}
5317786266dSMatt Arsenault
5327786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_0(ptr addrspace(1) inreg %ptr) {
5337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_0:
5347786266dSMatt Arsenault; GFX900:       ; %bb.0:
5357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5377786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
5387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
5407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
5417786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
5427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5447786266dSMatt Arsenault;
5457786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_0:
5467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
5507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
5527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
5537786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
5547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5567786266dSMatt Arsenault;
5577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_0:
5587786266dSMatt Arsenault; GFX940:       ; %bb.0:
5597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5617786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
5627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
5647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
5657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
5667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5687786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
5697786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 0>
5707786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
5717786266dSMatt Arsenault  ret void
5727786266dSMatt Arsenault}
5737786266dSMatt Arsenault
5747786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_0(ptr addrspace(1) inreg %ptr) {
5757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_0:
5767786266dSMatt Arsenault; GFX900:       ; %bb.0:
5777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
5807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
5827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
5837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
5847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5867786266dSMatt Arsenault;
5877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_0:
5887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
5927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
5947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
5957786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
5967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5987786266dSMatt Arsenault;
5997786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_0:
6007786266dSMatt Arsenault; GFX940:       ; %bb.0:
6017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6037786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
6047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
6067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
6077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
6087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6107786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
6117786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> zeroinitializer
6127786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
6137786266dSMatt Arsenault  ret void
6147786266dSMatt Arsenault}
6157786266dSMatt Arsenault
6167786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_0(ptr addrspace(1) inreg %ptr) {
6177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_0:
6187786266dSMatt Arsenault; GFX900:       ; %bb.0:
6197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
6227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
6247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
6257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
6267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6287786266dSMatt Arsenault;
6297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_0:
6307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6337786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
6347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
635*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
636*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
637*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
6387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6407786266dSMatt Arsenault;
6417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_0:
6427786266dSMatt Arsenault; GFX940:       ; %bb.0:
6437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
6467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
647*e28e9355SMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
648*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
649*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
6507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6527786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
6537786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 0>
6547786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
6557786266dSMatt Arsenault  ret void
6567786266dSMatt Arsenault}
6577786266dSMatt Arsenault
6587786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_0(ptr addrspace(1) inreg %ptr) {
6597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_0:
6607786266dSMatt Arsenault; GFX900:       ; %bb.0:
6617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
6647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
6667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
6677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
6687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
6697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6717786266dSMatt Arsenault;
6727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_0:
6737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
6787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
6807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
6817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6837786266dSMatt Arsenault;
6847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_0:
6857786266dSMatt Arsenault; GFX940:       ; %bb.0:
6867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
6907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6917786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
6927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
6937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] sc0 sc1
6947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6967786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
6977786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 0>
6987786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
6997786266dSMatt Arsenault  ret void
7007786266dSMatt Arsenault}
7017786266dSMatt Arsenault
7027786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_0(ptr addrspace(1) inreg %ptr) {
7037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_0:
7047786266dSMatt Arsenault; GFX900:       ; %bb.0:
7057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
7087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
7107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
7117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
7127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7147786266dSMatt Arsenault;
7157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_0:
7167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
7207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
7227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
7237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
7247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7267786266dSMatt Arsenault;
7277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_0:
7287786266dSMatt Arsenault; GFX940:       ; %bb.0:
7297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
7327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
7347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
7357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
7367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7387786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
7397786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 0>
7407786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
7417786266dSMatt Arsenault  ret void
7427786266dSMatt Arsenault}
7437786266dSMatt Arsenault
7447786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_0(ptr addrspace(1) inreg %ptr) {
7457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_0:
7467786266dSMatt Arsenault; GFX900:       ; %bb.0:
7477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
7507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
7537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
7567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]
7577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7597786266dSMatt Arsenault;
7607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_0:
7617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
7657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
766*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
7677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
7697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
770*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
771*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
7727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7747786266dSMatt Arsenault;
7757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_0:
7767786266dSMatt Arsenault; GFX940:       ; %bb.0:
7777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
7807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
7827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7837786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
7847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7857786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
786*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]
787*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
7887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7897786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7907786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
7917786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
7927786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 0>
7937786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
7947786266dSMatt Arsenault  ret void
7957786266dSMatt Arsenault}
7967786266dSMatt Arsenault
7977786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_1(ptr addrspace(1) inreg %ptr) {
7987786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_1:
7997786266dSMatt Arsenault; GFX900:       ; %bb.0:
8007786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
8027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
8047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8057786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
8067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8087786266dSMatt Arsenault;
8097786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_1:
8107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
8137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
8157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
8177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8197786266dSMatt Arsenault;
8207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_1:
8217786266dSMatt Arsenault; GFX940:       ; %bb.0:
8227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
8247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
8267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8277786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
8287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8307786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
8317786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 1>
8327786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
8337786266dSMatt Arsenault  ret void
8347786266dSMatt Arsenault}
8357786266dSMatt Arsenault
8367786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_1(ptr addrspace(1) inreg %ptr) {
8377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_1:
8387786266dSMatt Arsenault; GFX900:       ; %bb.0:
8397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
8417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
8437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8447786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
8457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8477786266dSMatt Arsenault;
8487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_1:
8497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
8527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8537786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
8547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8557786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
8567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8587786266dSMatt Arsenault;
8597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_1:
8607786266dSMatt Arsenault; GFX940:       ; %bb.0:
8617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
8637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8647786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
8657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8667786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
8677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8687786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8697786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
8707786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 1>
8717786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
8727786266dSMatt Arsenault  ret void
8737786266dSMatt Arsenault}
8747786266dSMatt Arsenault
8757786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_1(ptr addrspace(1) inreg %ptr) {
8767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_1:
8777786266dSMatt Arsenault; GFX900:       ; %bb.0:
8787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
8817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
8837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
8847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
8857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8877786266dSMatt Arsenault;
8887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_1:
8897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8927786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
8937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
8957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
8967786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
8977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8997786266dSMatt Arsenault;
9007786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_1:
9017786266dSMatt Arsenault; GFX940:       ; %bb.0:
9027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
9057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
9077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
9087786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
9097786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9117786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
9127786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 1>
9137786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
9147786266dSMatt Arsenault  ret void
9157786266dSMatt Arsenault}
9167786266dSMatt Arsenault
9177786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_1(ptr addrspace(1) inreg %ptr) {
9187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_1:
9197786266dSMatt Arsenault; GFX900:       ; %bb.0:
9207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
9237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
9257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
9267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
9277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9297786266dSMatt Arsenault;
9307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_1:
9317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
9357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
9377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
9387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
9397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9417786266dSMatt Arsenault;
9427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_1:
9437786266dSMatt Arsenault; GFX940:       ; %bb.0:
9447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
9477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
9497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
9507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
9517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9537786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
9547786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 1>
9557786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
9567786266dSMatt Arsenault  ret void
9577786266dSMatt Arsenault}
9587786266dSMatt Arsenault
9597786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_1(ptr addrspace(1) inreg %ptr) {
9607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_1:
9617786266dSMatt Arsenault; GFX900:       ; %bb.0:
9627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
9647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
9667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
9687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9707786266dSMatt Arsenault;
9717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_1:
9727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
9757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9767786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
9777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
9797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9817786266dSMatt Arsenault;
9827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_1:
9837786266dSMatt Arsenault; GFX940:       ; %bb.0:
9847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
9867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
9887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
9907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9927786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
9937786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 1>
9947786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
9957786266dSMatt Arsenault  ret void
9967786266dSMatt Arsenault}
9977786266dSMatt Arsenault
9987786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_1(ptr addrspace(1) inreg %ptr) {
9997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_1:
10007786266dSMatt Arsenault; GFX900:       ; %bb.0:
10017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
10047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
10077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
10097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v1
10107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[3:4], s[16:17]
10117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10137786266dSMatt Arsenault;
10147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_1:
10157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
10197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
10217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
10237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
10257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
10267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10287786266dSMatt Arsenault;
10297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_1:
10307786266dSMatt Arsenault; GFX940:       ; %bb.0:
10317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
10347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
10367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
10387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10397786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
10417786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
10427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10447786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
10457786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
10467786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 1>
10477786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
10487786266dSMatt Arsenault  ret void
10497786266dSMatt Arsenault}
10507786266dSMatt Arsenault
10517786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_2(ptr addrspace(1) inreg %ptr) {
10527786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_2:
10537786266dSMatt Arsenault; GFX900:       ; %bb.0:
10547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
10567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
10587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10597786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
10607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10627786266dSMatt Arsenault;
10637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_2:
10647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
10687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
10707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
10717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
10727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10747786266dSMatt Arsenault;
10757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_2:
10767786266dSMatt Arsenault; GFX940:       ; %bb.0:
10777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
10807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
10827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
10837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
10847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10867786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
10877786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 2>
10887786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
10897786266dSMatt Arsenault  ret void
10907786266dSMatt Arsenault}
10917786266dSMatt Arsenault
10927786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_2(ptr addrspace(1) inreg %ptr) {
10937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_2:
10947786266dSMatt Arsenault; GFX900:       ; %bb.0:
10957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
10987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
11007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
11017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
11027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11047786266dSMatt Arsenault;
11057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_2:
11067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
11107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
11127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
11137786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
11147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11167786266dSMatt Arsenault;
11177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_2:
11187786266dSMatt Arsenault; GFX940:       ; %bb.0:
11197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
11227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
11247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
11257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
11267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11287786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
11297786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 2>
11307786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
11317786266dSMatt Arsenault  ret void
11327786266dSMatt Arsenault}
11337786266dSMatt Arsenault
11347786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_2(ptr addrspace(1) inreg %ptr) {
11357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_2:
11367786266dSMatt Arsenault; GFX900:       ; %bb.0:
11377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
11397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11407786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
11417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
11437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11457786266dSMatt Arsenault;
11467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_2:
11477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11507786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
11517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
11537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
11547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
11557786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
11567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11587786266dSMatt Arsenault;
11597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_2:
11607786266dSMatt Arsenault; GFX940:       ; %bb.0:
11617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11637786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
11647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
11667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
11677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
11687786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
11697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11717786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
11727786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 2>
11737786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
11747786266dSMatt Arsenault  ret void
11757786266dSMatt Arsenault}
11767786266dSMatt Arsenault
11777786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_2(ptr addrspace(1) inreg %ptr) {
11787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_2:
11797786266dSMatt Arsenault; GFX900:       ; %bb.0:
11807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11827786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
11837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
11857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
11867786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
11877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11897786266dSMatt Arsenault;
11907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_2:
11917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11947786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
11957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
11977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
11987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
11997786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
12007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12027786266dSMatt Arsenault;
12037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_2:
12047786266dSMatt Arsenault; GFX940:       ; %bb.0:
12057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12077786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
12087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
12107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
12117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
12127786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
12137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12147786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12157786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
12167786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 2>
12177786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
12187786266dSMatt Arsenault  ret void
12197786266dSMatt Arsenault}
12207786266dSMatt Arsenault
12217786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_2(ptr addrspace(1) inreg %ptr) {
12227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_2:
12237786266dSMatt Arsenault; GFX900:       ; %bb.0:
12247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
12267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12277786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
12287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12297786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
12307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12327786266dSMatt Arsenault;
12337786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_2:
12347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
12387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
12407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
12417786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
12427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12447786266dSMatt Arsenault;
12457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_2:
12467786266dSMatt Arsenault; GFX940:       ; %bb.0:
12477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12497786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
12507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
12527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
12537786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
12547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12567786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
12577786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 2>
12587786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
12597786266dSMatt Arsenault  ret void
12607786266dSMatt Arsenault}
12617786266dSMatt Arsenault
12627786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_2(ptr addrspace(1) inreg %ptr) {
12637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_2:
12647786266dSMatt Arsenault; GFX900:       ; %bb.0:
12657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
12687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
12707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12717786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
12727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v2
12747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17]
12757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12777786266dSMatt Arsenault;
12787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_2:
12797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
12837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
12857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12867786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
12877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
12897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
12907786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
12917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12937786266dSMatt Arsenault;
12947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_2:
12957786266dSMatt Arsenault; GFX940:       ; %bb.0:
12967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
12997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
13017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
13037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
13057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
13067786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
13077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13097786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
13107786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
13117786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 2>
13127786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
13137786266dSMatt Arsenault  ret void
13147786266dSMatt Arsenault}
13157786266dSMatt Arsenault
13167786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_3(ptr addrspace(1) inreg %ptr) {
13177786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i32_v3i32__u_3:
13187786266dSMatt Arsenault; GFX9:       ; %bb.0:
13197786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13207786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
13217786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
13227786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 3>
13237786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
13247786266dSMatt Arsenault  ret void
13257786266dSMatt Arsenault}
13267786266dSMatt Arsenault
13277786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_3(ptr addrspace(1) inreg %ptr) {
13287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_3:
13297786266dSMatt Arsenault; GFX900:       ; %bb.0:
13307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
13327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
13347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13357786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
13367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13387786266dSMatt Arsenault;
13397786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_3:
13407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
13437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13447786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
13457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13467786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
13477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13497786266dSMatt Arsenault;
13507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_3:
13517786266dSMatt Arsenault; GFX940:       ; %bb.0:
13527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
13547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
13567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13577786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
13587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13597786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13607786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
13617786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 3>
13627786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
13637786266dSMatt Arsenault  ret void
13647786266dSMatt Arsenault}
13657786266dSMatt Arsenault
13667786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_3(ptr addrspace(1) inreg %ptr) {
13677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_3:
13687786266dSMatt Arsenault; GFX900:       ; %bb.0:
13697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
13717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13727786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
13737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
13757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13777786266dSMatt Arsenault;
13787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_3:
13797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
13837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
13857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
13867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
13877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13897786266dSMatt Arsenault;
13907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_3:
13917786266dSMatt Arsenault; GFX940:       ; %bb.0:
13927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13947786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
13957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
13977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
13987786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
13997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14017786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
14027786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 3>
14037786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
14047786266dSMatt Arsenault  ret void
14057786266dSMatt Arsenault}
14067786266dSMatt Arsenault
14077786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_3(ptr addrspace(1) inreg %ptr) {
14087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_3:
14097786266dSMatt Arsenault; GFX900:       ; %bb.0:
14107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
14137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
14157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
14167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
14177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14197786266dSMatt Arsenault;
14207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_3:
14217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
14257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
14277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
14287786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
14297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14317786266dSMatt Arsenault;
14327786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_3:
14337786266dSMatt Arsenault; GFX940:       ; %bb.0:
14347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14367786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
14377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
14397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
14407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
14417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14437786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
14447786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 3>
14457786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
14467786266dSMatt Arsenault  ret void
14477786266dSMatt Arsenault}
14487786266dSMatt Arsenault
14497786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_3(ptr addrspace(1) inreg %ptr) {
14507786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v2i32_v3i32__3_3:
14517786266dSMatt Arsenault; GFX9:       ; %bb.0:
14527786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14537786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
14547786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
14557786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 3>
14567786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
14577786266dSMatt Arsenault  ret void
14587786266dSMatt Arsenault}
14597786266dSMatt Arsenault
14607786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_3(ptr addrspace(1) inreg %ptr) {
14617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_3:
14627786266dSMatt Arsenault; GFX900:       ; %bb.0:
14637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
14667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
14687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
14697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
14707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14727786266dSMatt Arsenault;
14737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_3:
14747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
14787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1479*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1480*e28e9355SMatt Arsenault; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
1481*e28e9355SMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
14827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14847786266dSMatt Arsenault;
14857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_3:
14867786266dSMatt Arsenault; GFX940:       ; %bb.0:
14877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
14907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1491*e28e9355SMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1492*e28e9355SMatt Arsenault; GFX940-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]
1493*e28e9355SMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
14947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14967786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
14977786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
14987786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 3>
14997786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
15007786266dSMatt Arsenault  ret void
15017786266dSMatt Arsenault}
15027786266dSMatt Arsenault
15037786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_4(ptr addrspace(1) inreg %ptr) {
15047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_4:
15057786266dSMatt Arsenault; GFX900:       ; %bb.0:
15067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
15087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15097786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
15107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
15127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15147786266dSMatt Arsenault;
15157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_4:
15167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
15197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
15217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15227786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
15237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15257786266dSMatt Arsenault;
15267786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_4:
15277786266dSMatt Arsenault; GFX940:       ; %bb.0:
15287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
15307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
15327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
15347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15367786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
15377786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
15387786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 4>
15397786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
15407786266dSMatt Arsenault  ret void
15417786266dSMatt Arsenault}
15427786266dSMatt Arsenault
15437786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_4(ptr addrspace(1) inreg %ptr) {
15447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_4:
15457786266dSMatt Arsenault; GFX900:       ; %bb.0:
15467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15487786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
15497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
15527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
15557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
15567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15587786266dSMatt Arsenault;
15597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_4:
15607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
15647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
15667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
15687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
15707786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
15717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15727786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15737786266dSMatt Arsenault;
15747786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_4:
15757786266dSMatt Arsenault; GFX940:       ; %bb.0:
15767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
15797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
15817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
15837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15847786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
15867786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
15877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15897786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
15907786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
15917786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 4>
15927786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
15937786266dSMatt Arsenault  ret void
15947786266dSMatt Arsenault}
15957786266dSMatt Arsenault
15967786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_4(ptr addrspace(1) inreg %ptr) {
15977786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_4:
15987786266dSMatt Arsenault; GFX900:       ; %bb.0:
15997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16017786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
16027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
16057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
16077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
16087786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[1:2], s[16:17]
16097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16117786266dSMatt Arsenault;
16127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_4:
16137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
16177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
16207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
16227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
16237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v5, v[2:3], s[16:17]
16247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16267786266dSMatt Arsenault;
16277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_4:
16287786266dSMatt Arsenault; GFX940:       ; %bb.0:
16297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
16327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
16347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
16367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16377786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
16397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v5, v[2:3], s[0:1] sc0 sc1
16407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16427786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
16437786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
16447786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 4>
16457786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
16467786266dSMatt Arsenault  ret void
16477786266dSMatt Arsenault}
16487786266dSMatt Arsenault
16497786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_4(ptr addrspace(1) inreg %ptr) {
16507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_4:
16517786266dSMatt Arsenault; GFX900:       ; %bb.0:
16527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
16557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
16577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
16597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
16617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[3:4], s[16:17]
16627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16647786266dSMatt Arsenault;
16657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_4:
16667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
16707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
16727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
16747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
16767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[4:5], s[16:17]
16777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16797786266dSMatt Arsenault;
16807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_4:
16817786266dSMatt Arsenault; GFX940:       ; %bb.0:
16827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
16857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
16877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
16897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16907786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
16917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
16927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[4:5], s[0:1] sc0 sc1
16937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16957786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
16967786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
16977786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 4>
16987786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
16997786266dSMatt Arsenault  ret void
17007786266dSMatt Arsenault}
17017786266dSMatt Arsenault
17027786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_4(ptr addrspace(1) inreg %ptr) {
17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_4:
17047786266dSMatt Arsenault; GFX900:       ; %bb.0:
17057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
17077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
17097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
17117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17137786266dSMatt Arsenault;
17147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_4:
17157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
17187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
17207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
17227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17247786266dSMatt Arsenault;
17257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_4:
17267786266dSMatt Arsenault; GFX940:       ; %bb.0:
17277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
17297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
17317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
17337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17357786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
17367786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
17377786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 4>
17387786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
17397786266dSMatt Arsenault  ret void
17407786266dSMatt Arsenault}
17417786266dSMatt Arsenault
17427786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_4(ptr addrspace(1) inreg %ptr) {
17437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_4:
17447786266dSMatt Arsenault; GFX900:       ; %bb.0:
17457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
17487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
17507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
17517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
17527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17547786266dSMatt Arsenault;
17557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_4:
17567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
17607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
17627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
17637786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
17647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17667786266dSMatt Arsenault;
17677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_4:
17687786266dSMatt Arsenault; GFX940:       ; %bb.0:
17697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17717786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
17727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
17747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
17757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
17767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17787786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
17797786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
17807786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 4>
17817786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
17827786266dSMatt Arsenault  ret void
17837786266dSMatt Arsenault}
17847786266dSMatt Arsenault
17857786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__u_5(ptr addrspace(1) inreg %ptr) {
17867786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_5:
17877786266dSMatt Arsenault; GFX900:       ; %bb.0:
17887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
17907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17917786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
17927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17937786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
17947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17967786266dSMatt Arsenault;
17977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_5:
17987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
18027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
18047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
18057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
18067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18087786266dSMatt Arsenault;
18097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__u_5:
18107786266dSMatt Arsenault; GFX940:       ; %bb.0:
18117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
18147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
18167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
18177786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
18187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18207786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
18217786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
18227786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 5>
18237786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
18247786266dSMatt Arsenault  ret void
18257786266dSMatt Arsenault}
18267786266dSMatt Arsenault
18277786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__0_5(ptr addrspace(1) inreg %ptr) {
18287786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_5:
18297786266dSMatt Arsenault; GFX900:       ; %bb.0:
18307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18327786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
18337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18357786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
18367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18387786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
18397786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]
18407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18427786266dSMatt Arsenault;
18437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_5:
18447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18477786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
18487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
18507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
18527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
18547786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
18557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18567786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18577786266dSMatt Arsenault;
18587786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__0_5:
18597786266dSMatt Arsenault; GFX940:       ; %bb.0:
18607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
18637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
18657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
18677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18687786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
18707786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
18717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18727786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18737786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
18747786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
18757786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 5>
18767786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
18777786266dSMatt Arsenault  ret void
18787786266dSMatt Arsenault}
18797786266dSMatt Arsenault
18807786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__1_5(ptr addrspace(1) inreg %ptr) {
18817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_5:
18827786266dSMatt Arsenault; GFX900:       ; %bb.0:
18837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18857786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
18867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18887786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
18897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
18917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
18927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v5, v[1:2], s[16:17]
18937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18957786266dSMatt Arsenault;
18967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_5:
18977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
19017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
19037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
19057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
19077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
19087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v5, v[0:1], s[16:17]
19097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19117786266dSMatt Arsenault;
19127786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__1_5:
19137786266dSMatt Arsenault; GFX940:       ; %bb.0:
19147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
19177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
19197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19207786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
19217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
19237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
19247786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v5, v[0:1], s[0:1] sc0 sc1
19257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19277786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
19287786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
19297786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 5>
19307786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
19317786266dSMatt Arsenault  ret void
19327786266dSMatt Arsenault}
19337786266dSMatt Arsenault
19347786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__2_5(ptr addrspace(1) inreg %ptr) {
19357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_5:
19367786266dSMatt Arsenault; GFX900:       ; %bb.0:
19377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
19407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
19427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19437786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
19447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
19467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17]
19477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19497786266dSMatt Arsenault;
19507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_5:
19517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
19557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
19577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
19597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
19617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
19627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
19637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19657786266dSMatt Arsenault;
19667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__2_5:
19677786266dSMatt Arsenault; GFX940:       ; %bb.0:
19687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
19717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
19737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
19757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
19777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v6
19787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
19797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19817786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
19827786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
19837786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 5>
19847786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
19857786266dSMatt Arsenault  ret void
19867786266dSMatt Arsenault}
19877786266dSMatt Arsenault
19887786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__3_5(ptr addrspace(1) inreg %ptr) {
19897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_5:
19907786266dSMatt Arsenault; GFX900:       ; %bb.0:
19917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
19947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
19967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
19977786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
19987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19997786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20007786266dSMatt Arsenault;
20017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_5:
20027786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20057786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
20067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
20087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
20097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
20107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20127786266dSMatt Arsenault;
20137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__3_5:
20147786266dSMatt Arsenault; GFX940:       ; %bb.0:
20157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
20187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
20207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
20217786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
20227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20247786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
20257786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
20267786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 5>
20277786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
20287786266dSMatt Arsenault  ret void
20297786266dSMatt Arsenault}
20307786266dSMatt Arsenault
20317786266dSMatt Arsenaultdefine void @v_shuffle_v2i32_v3i32__4_5(ptr addrspace(1) inreg %ptr) {
20327786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_5:
20337786266dSMatt Arsenault; GFX900:       ; %bb.0:
20347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
20367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20377786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
20387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20397786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]
20407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20427786266dSMatt Arsenault;
20437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_5:
20447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20477786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
20487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
20507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
20517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
20527786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]
20537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20557786266dSMatt Arsenault;
20567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v2i32_v3i32__4_5:
20577786266dSMatt Arsenault; GFX940:       ; %bb.0:
20587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
20617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
20637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
20647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
20657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v3, v[0:1], s[0:1] sc0 sc1
20667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20687786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
20697786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
20707786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 5>
20717786266dSMatt Arsenault  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8
20727786266dSMatt Arsenault  ret void
20737786266dSMatt Arsenault}
20747786266dSMatt Arsenault
20757786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_u() {
20767786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__u_u:
20777786266dSMatt Arsenault; GFX9:       ; %bb.0:
20787786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20797786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2080585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
20817786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
20827786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
20837786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
20847786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> poison
2085585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
20867786266dSMatt Arsenault  ret void
20877786266dSMatt Arsenault}
20887786266dSMatt Arsenault
20897786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_u() {
20907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_u:
20917786266dSMatt Arsenault; GFX900:       ; %bb.0:
20927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2094585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
20957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2097585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
20987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20997786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21007786266dSMatt Arsenault;
21017786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_u:
21027786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2105585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
21067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2108585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
21097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21117786266dSMatt Arsenault;
21127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_u:
21137786266dSMatt Arsenault; GFX940:       ; %bb.0:
21147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2116585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
21177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2118585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
21197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2120585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
21217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21237786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
21247786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 poison>
2125585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
21267786266dSMatt Arsenault  ret void
21277786266dSMatt Arsenault}
21287786266dSMatt Arsenault
21297786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_u() {
21307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_u:
21317786266dSMatt Arsenault; GFX900:       ; %bb.0:
21327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21347786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
21357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2136585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
21377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2138585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
21397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21417786266dSMatt Arsenault;
21427786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_u:
21437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21467786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
21477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2148585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
21497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2150585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
21517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21537786266dSMatt Arsenault;
21547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_u:
21557786266dSMatt Arsenault; GFX940:       ; %bb.0:
21567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21587786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
21597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2160585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
21617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2162585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
21637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21657786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
21667786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 poison>
2167585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
21687786266dSMatt Arsenault  ret void
21697786266dSMatt Arsenault}
21707786266dSMatt Arsenault
21717786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_u() {
21727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_u:
21737786266dSMatt Arsenault; GFX900:       ; %bb.0:
21747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21767786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
21777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2178585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
21797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2180585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
21817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21837786266dSMatt Arsenault;
21847786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_u:
21857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21887786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
21897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2190585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
21917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2192585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
21937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21957786266dSMatt Arsenault;
21967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_u:
21977786266dSMatt Arsenault; GFX940:       ; %bb.0:
21987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22007786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
22017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2202585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
22037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2204585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
22057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22077786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
22087786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 poison>
2209585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
22107786266dSMatt Arsenault  ret void
22117786266dSMatt Arsenault}
22127786266dSMatt Arsenault
22137786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_u() {
22147786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_u:
22157786266dSMatt Arsenault; GFX9:       ; %bb.0:
22167786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22177786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2218585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
22197786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
22207786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
22217786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
22227786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 poison>
2223585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
22247786266dSMatt Arsenault  ret void
22257786266dSMatt Arsenault}
22267786266dSMatt Arsenault
22277786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_u() {
22287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_u:
22297786266dSMatt Arsenault; GFX900:       ; %bb.0:
22307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22327786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
22337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2234585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
22357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2236585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
22377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22397786266dSMatt Arsenault;
22407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_u:
22417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
22457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2246585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
22477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2248585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
22497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22517786266dSMatt Arsenault;
22527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_u:
22537786266dSMatt Arsenault; GFX940:       ; %bb.0:
22547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
22577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2258585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
22597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2260585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
22617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22637786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
22647786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
22657786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 poison>
2266585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
22677786266dSMatt Arsenault  ret void
22687786266dSMatt Arsenault}
22697786266dSMatt Arsenault
22707786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_u() {
22717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_u:
22727786266dSMatt Arsenault; GFX900:       ; %bb.0:
22737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22757786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
22767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2277585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
22787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2279585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
22807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22817786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22827786266dSMatt Arsenault;
22837786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_u:
22847786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
22887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2289585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
22907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2291585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
22927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22947786266dSMatt Arsenault;
22957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_u:
22967786266dSMatt Arsenault; GFX940:       ; %bb.0:
22977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22997786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
23007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2301585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
23027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2303585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
23047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23067786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
23077786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
23087786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 poison>
2309585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
23107786266dSMatt Arsenault  ret void
23117786266dSMatt Arsenault}
23127786266dSMatt Arsenault
23137786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_0() {
23147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_0:
23157786266dSMatt Arsenault; GFX900:       ; %bb.0:
23167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23187786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
23197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2321585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
2322585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2323585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
2324585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
2325585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2326585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
23277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23297786266dSMatt Arsenault;
23307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_0:
23317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23347786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
23357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2337585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
2338585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2339585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
2340585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
2341585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2342585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
23437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23457786266dSMatt Arsenault;
23467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_0:
23477786266dSMatt Arsenault; GFX940:       ; %bb.0:
23487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23507786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
23517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
23547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2355585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
2356585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
23577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2358585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
23597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23617786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
23627786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
23637786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 0>
2364585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
23657786266dSMatt Arsenault  ret void
23667786266dSMatt Arsenault}
23677786266dSMatt Arsenault
23687786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_1() {
23697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_1:
23707786266dSMatt Arsenault; GFX900:       ; %bb.0:
23717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23737786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
23747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2376585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
2377585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2378585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2379585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2380585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
23817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23837786266dSMatt Arsenault;
23847786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_1:
23857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23887786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
23897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2391585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
2392585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2393585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2394585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2395585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
23967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23977786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23987786266dSMatt Arsenault;
23997786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_1:
24007786266dSMatt Arsenault; GFX940:       ; %bb.0:
24017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2403585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
2404585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2405585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24067786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
24077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2408585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
24097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2410585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
24117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24137786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
24147786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
24157786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 1>
2416585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
24177786266dSMatt Arsenault  ret void
24187786266dSMatt Arsenault}
24197786266dSMatt Arsenault
24207786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_2() {
24217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_2:
24227786266dSMatt Arsenault; GFX900:       ; %bb.0:
24237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
24267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2428585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
2429585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2430585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
2431585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
2432585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2433585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
24347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24367786266dSMatt Arsenault;
24377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_2:
24387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
24427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2444585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
2445585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2446585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
2447585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
2448585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2449585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
24507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24527786266dSMatt Arsenault;
24537786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_2:
24547786266dSMatt Arsenault; GFX940:       ; %bb.0:
24557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
24587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24607786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
24617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2462585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
2463585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
24647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2465585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
24667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24687786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
24697786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
24707786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 2>
2471585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
24727786266dSMatt Arsenault  ret void
24737786266dSMatt Arsenault}
24747786266dSMatt Arsenault
24757786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_3() {
24767786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_3:
24777786266dSMatt Arsenault; GFX900:       ; %bb.0:
24787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24807786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
24817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2482585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2483585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
24847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2485585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
24867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24887786266dSMatt Arsenault;
24897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_3:
24907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
24947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2495585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2496585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
24977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2498585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
24997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25007786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25017786266dSMatt Arsenault;
25027786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_3:
25037786266dSMatt Arsenault; GFX940:       ; %bb.0:
25047786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25067786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
25077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2508585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2509585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
25107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2511585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
25127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25147786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
25157786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
25167786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 3>
2517585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
25187786266dSMatt Arsenault  ret void
25197786266dSMatt Arsenault}
25207786266dSMatt Arsenault
25217786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_4() {
2522585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__5_4:
2523585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2524585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2525585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2526585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
2527585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2528585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
2529585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2530585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
2531585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2532585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
25337786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
25347786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
25357786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 4>
2536585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
25377786266dSMatt Arsenault  ret void
25387786266dSMatt Arsenault}
25397786266dSMatt Arsenault
25407786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__5_5() {
25417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_5:
25427786266dSMatt Arsenault; GFX900:       ; %bb.0:
25437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25457786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
25467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2547585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2548585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
25497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2550585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
25517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25537786266dSMatt Arsenault;
25547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_5:
25557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
25597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2560585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2561585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
25627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2563585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
25647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25667786266dSMatt Arsenault;
25677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__5_5:
25687786266dSMatt Arsenault; GFX940:       ; %bb.0:
25697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25717786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
25727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2573585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2574585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
25757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2576585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
25777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25797786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
25807786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
25817786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 5>
2582585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
25837786266dSMatt Arsenault  ret void
25847786266dSMatt Arsenault}
25857786266dSMatt Arsenault
25867786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_0() {
25877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_0:
25887786266dSMatt Arsenault; GFX900:       ; %bb.0:
25897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25917786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
25927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2593585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
25947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2595585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
25967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25987786266dSMatt Arsenault;
25997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_0:
26007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26037786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
26047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2605585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
26067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2607585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
26087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26107786266dSMatt Arsenault;
26117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_0:
26127786266dSMatt Arsenault; GFX940:       ; %bb.0:
26137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26157786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
26167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2617585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
26187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2619585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
26207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26227786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
26237786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 0>
2624585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
26257786266dSMatt Arsenault  ret void
26267786266dSMatt Arsenault}
26277786266dSMatt Arsenault
26287786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_0() {
2629585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__0_0:
2630585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2631585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2632585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2633585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
2634585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2635585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
2636585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2637585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
2638585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2639585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
26407786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
26417786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> zeroinitializer
2642585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
26437786266dSMatt Arsenault  ret void
26447786266dSMatt Arsenault}
26457786266dSMatt Arsenault
26467786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_0() {
26477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_0:
26487786266dSMatt Arsenault; GFX900:       ; %bb.0:
26497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26517786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
26527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2653585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
2654585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
26557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2656585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
26577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26597786266dSMatt Arsenault;
26607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_0:
26617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26647786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
26657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2666585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
2667585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
26687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2669585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
26707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26727786266dSMatt Arsenault;
26737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_0:
26747786266dSMatt Arsenault; GFX940:       ; %bb.0:
26757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26777786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
26787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2679585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
2680585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
26817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2682585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
26837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26857786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
26867786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 0>
2687585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
26887786266dSMatt Arsenault  ret void
26897786266dSMatt Arsenault}
26907786266dSMatt Arsenault
26917786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_0() {
26927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_0:
26937786266dSMatt Arsenault; GFX900:       ; %bb.0:
26947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26967786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
26977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2698585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2699585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
27007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2701585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
27027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27047786266dSMatt Arsenault;
27057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_0:
27067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27097786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
27107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2711585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2712585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
27137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2714585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
27157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27177786266dSMatt Arsenault;
27187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_0:
27197786266dSMatt Arsenault; GFX940:       ; %bb.0:
27207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27227786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
27237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2724585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2725585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
27267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2727585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
27287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27307786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
27317786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 0>
2732585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
27337786266dSMatt Arsenault  ret void
27347786266dSMatt Arsenault}
27357786266dSMatt Arsenault
27367786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_0() {
27377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_0:
27387786266dSMatt Arsenault; GFX900:       ; %bb.0:
27397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27417786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
27427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2743585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
27447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2745585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
27467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27487786266dSMatt Arsenault;
27497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_0:
27507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
27547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2755585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
27567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2757585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
27587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27607786266dSMatt Arsenault;
27617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_0:
27627786266dSMatt Arsenault; GFX940:       ; %bb.0:
27637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27657786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
27667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2767585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
27687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2769585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
27707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27727786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
27737786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 0>
2774585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
27757786266dSMatt Arsenault  ret void
27767786266dSMatt Arsenault}
27777786266dSMatt Arsenault
27787786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_0() {
27797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_0:
27807786266dSMatt Arsenault; GFX900:       ; %bb.0:
27817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27837786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
27847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27867786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
27877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2788585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
2789585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
27907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2791585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
27927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27947786266dSMatt Arsenault;
27957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_0:
27967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27997786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
28007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
28037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2804585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
2805585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
28067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2807585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
28087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28107786266dSMatt Arsenault;
28117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_0:
28127786266dSMatt Arsenault; GFX940:       ; %bb.0:
28137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28157786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
28167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28187786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
28197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2820585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s5
2821585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
28227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2823585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
28247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28267786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
28277786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
28287786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 0>
2829585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
28307786266dSMatt Arsenault  ret void
28317786266dSMatt Arsenault}
28327786266dSMatt Arsenault
28337786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_1() {
28347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_1:
28357786266dSMatt Arsenault; GFX900:       ; %bb.0:
28367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2838585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
28397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2841585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
28427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28437786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28447786266dSMatt Arsenault;
28457786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_1:
28467786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2849585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
28507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2852585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
28537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28557786266dSMatt Arsenault;
28567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_1:
28577786266dSMatt Arsenault; GFX940:       ; %bb.0:
28587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2860585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
28617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2862585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
28637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2864585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
28657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28677786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
28687786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 1>
2869585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
28707786266dSMatt Arsenault  ret void
28717786266dSMatt Arsenault}
28727786266dSMatt Arsenault
28737786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_1() {
28747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_1:
28757786266dSMatt Arsenault; GFX900:       ; %bb.0:
28767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2878585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
28797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2881585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
28827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28837786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28847786266dSMatt Arsenault;
28857786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_1:
28867786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2889585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
28907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2892585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
28937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28957786266dSMatt Arsenault;
28967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_1:
28977786266dSMatt Arsenault; GFX940:       ; %bb.0:
28987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2900585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
29017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2902585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
29037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2904585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
29057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29077786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
29087786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 1>
2909585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
29107786266dSMatt Arsenault  ret void
29117786266dSMatt Arsenault}
29127786266dSMatt Arsenault
29137786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_1() {
2914585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__1_1:
2915585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2916585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2917585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2918585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
2919585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2920585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
2921585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2922585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
2923585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2924585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
29257786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
29267786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 1>
2927585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
29287786266dSMatt Arsenault  ret void
29297786266dSMatt Arsenault}
29307786266dSMatt Arsenault
29317786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_1() {
2932585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__2_1:
2933585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2934585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2935585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2936585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
2937585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2938585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
2939585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2940585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
2941585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2942585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
29437786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
29447786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 1>
2945585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
29467786266dSMatt Arsenault  ret void
29477786266dSMatt Arsenault}
29487786266dSMatt Arsenault
29497786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_1() {
29507786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_1:
29517786266dSMatt Arsenault; GFX900:       ; %bb.0:
29527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2954585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
29557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2957585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
29587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29607786266dSMatt Arsenault;
29617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_1:
29627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2965585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
29667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2968585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
29697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29717786266dSMatt Arsenault;
29727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_1:
29737786266dSMatt Arsenault; GFX940:       ; %bb.0:
29747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2976585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
29777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2978585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
29797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2980585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
29817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29837786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
29847786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 1>
2985585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
29867786266dSMatt Arsenault  ret void
29877786266dSMatt Arsenault}
29887786266dSMatt Arsenault
29897786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_1() {
29907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_1:
29917786266dSMatt Arsenault; GFX900:       ; %bb.0:
29927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29947786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
29957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2997585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
2998585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2999585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3000585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3001585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
30027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30047786266dSMatt Arsenault;
30057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_1:
30067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30097786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
30107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3012585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
3013585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3014585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3015585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3016585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
30177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30197786266dSMatt Arsenault;
30207786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_1:
30217786266dSMatt Arsenault; GFX940:       ; %bb.0:
30227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3024585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
3025585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3026585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30277786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
30287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3029585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
30307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3031585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
30327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30347786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
30357786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
30367786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 1>
3037585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
30387786266dSMatt Arsenault  ret void
30397786266dSMatt Arsenault}
30407786266dSMatt Arsenault
30417786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_2() {
30427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_2:
30437786266dSMatt Arsenault; GFX900:       ; %bb.0:
30447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30467786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
30477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3048585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
30497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3050585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
30517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30537786266dSMatt Arsenault;
30547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_2:
30557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
30597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3060585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
30617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3062585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
30637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30657786266dSMatt Arsenault;
30667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_2:
30677786266dSMatt Arsenault; GFX940:       ; %bb.0:
30687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30707786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
30717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3072585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
30737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3074585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
30757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30777786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
30787786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 2>
3079585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
30807786266dSMatt Arsenault  ret void
30817786266dSMatt Arsenault}
30827786266dSMatt Arsenault
30837786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_2() {
3084585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__0_2:
3085585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3086585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3087585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3088585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
3089585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3090585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
3091585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3092585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
3093585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3094585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
30957786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
30967786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 2>
3097585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
30987786266dSMatt Arsenault  ret void
30997786266dSMatt Arsenault}
31007786266dSMatt Arsenault
31017786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_2() {
31027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_2:
31037786266dSMatt Arsenault; GFX900:       ; %bb.0:
31047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31067786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
31077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3108585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3109585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
31107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3111585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
31127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31147786266dSMatt Arsenault;
31157786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_2:
31167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31197786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
31207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3121585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3122585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
31237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3124585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
31257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31277786266dSMatt Arsenault;
31287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_2:
31297786266dSMatt Arsenault; GFX940:       ; %bb.0:
31307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31327786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
31337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3134585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3135585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
31367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3137585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
31387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31407786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
31417786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 2>
3142585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
31437786266dSMatt Arsenault  ret void
31447786266dSMatt Arsenault}
31457786266dSMatt Arsenault
31467786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_2() {
31477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_2:
31487786266dSMatt Arsenault; GFX900:       ; %bb.0:
31497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31517786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
31527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3153585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3154585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
31557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3156585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
31577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31597786266dSMatt Arsenault;
31607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_2:
31617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31647786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
31657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3166585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3167585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
31687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3169585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
31707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31727786266dSMatt Arsenault;
31737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_2:
31747786266dSMatt Arsenault; GFX940:       ; %bb.0:
31757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31777786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
31787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3179585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3180585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
31817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3182585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
31837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31847786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31857786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
31867786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 2>
3187585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
31887786266dSMatt Arsenault  ret void
31897786266dSMatt Arsenault}
31907786266dSMatt Arsenault
31917786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_2() {
31927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_2:
31937786266dSMatt Arsenault; GFX900:       ; %bb.0:
31947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31967786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
31977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3198585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
31997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3200585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
32017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32037786266dSMatt Arsenault;
32047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_2:
32057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32087786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
32097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3210585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
32117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3212585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
32137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32157786266dSMatt Arsenault;
32167786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_2:
32177786266dSMatt Arsenault; GFX940:       ; %bb.0:
32187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32207786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
32217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3222585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
32237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3224585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
32257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32277786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
32287786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 2>
3229585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
32307786266dSMatt Arsenault  ret void
32317786266dSMatt Arsenault}
32327786266dSMatt Arsenault
32337786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_2() {
32347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_2:
32357786266dSMatt Arsenault; GFX900:       ; %bb.0:
32367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32387786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
32397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32417786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
32427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3243585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
3244585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
32457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3246585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
32477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32497786266dSMatt Arsenault;
32507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_2:
32517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32547786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
32557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32577786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
32587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3259585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
3260585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
32617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3262585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
32637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32657786266dSMatt Arsenault;
32667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_2:
32677786266dSMatt Arsenault; GFX940:       ; %bb.0:
32687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32707786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
32717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32737786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
32747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3275585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s5
3276585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
32777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3278585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
32797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32817786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
32827786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
32837786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 2>
3284585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
32857786266dSMatt Arsenault  ret void
32867786266dSMatt Arsenault}
32877786266dSMatt Arsenault
32887786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_3() {
32897786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__u_3:
32907786266dSMatt Arsenault; GFX9:       ; %bb.0:
32917786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32927786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3293585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
32947786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
32957786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
32967786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
32977786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 3>
3298585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
32997786266dSMatt Arsenault  ret void
33007786266dSMatt Arsenault}
33017786266dSMatt Arsenault
33027786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_3() {
33037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_3:
33047786266dSMatt Arsenault; GFX900:       ; %bb.0:
33057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3307585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
33087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3310585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
33117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33137786266dSMatt Arsenault;
33147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_3:
33157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3318585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
33197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3321585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
33227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33247786266dSMatt Arsenault;
33257786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_3:
33267786266dSMatt Arsenault; GFX940:       ; %bb.0:
33277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3329585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
33307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3331585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
33327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3333585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
33347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33367786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
33377786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 3>
3338585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
33397786266dSMatt Arsenault  ret void
33407786266dSMatt Arsenault}
33417786266dSMatt Arsenault
33427786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_3() {
33437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_3:
33447786266dSMatt Arsenault; GFX900:       ; %bb.0:
33457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33477786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
33487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3349585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
33507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3351585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
33527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33547786266dSMatt Arsenault;
33557786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_3:
33567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33597786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
33607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3361585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
33627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3363585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
33647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33667786266dSMatt Arsenault;
33677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_3:
33687786266dSMatt Arsenault; GFX940:       ; %bb.0:
33697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33717786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
33727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3373585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
33747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3375585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
33767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33787786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
33797786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 3>
3380585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
33817786266dSMatt Arsenault  ret void
33827786266dSMatt Arsenault}
33837786266dSMatt Arsenault
33847786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_3() {
33857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_3:
33867786266dSMatt Arsenault; GFX900:       ; %bb.0:
33877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33897786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
33907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3391585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
33927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3393585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
33947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33967786266dSMatt Arsenault;
33977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_3:
33987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34017786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
34027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3403585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
34047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3405585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
34067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34087786266dSMatt Arsenault;
34097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_3:
34107786266dSMatt Arsenault; GFX940:       ; %bb.0:
34117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34137786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
34147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3415585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
34167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3417585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
34187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34207786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
34217786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 3>
3422585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
34237786266dSMatt Arsenault  ret void
34247786266dSMatt Arsenault}
34257786266dSMatt Arsenault
34267786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_3() {
34277786266dSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_3:
34287786266dSMatt Arsenault; GFX9:       ; %bb.0:
34297786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34307786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3431585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
34327786266dSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
34337786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
34347786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
34357786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 3>
3436585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
34377786266dSMatt Arsenault  ret void
34387786266dSMatt Arsenault}
34397786266dSMatt Arsenault
34407786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_3() {
34417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_3:
34427786266dSMatt Arsenault; GFX900:       ; %bb.0:
34437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34457786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
34467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3447585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3448585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
34497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3450585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
34517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34537786266dSMatt Arsenault;
34547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_3:
34557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
34597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3460585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3461585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
34627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3463585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
34647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34667786266dSMatt Arsenault;
34677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_3:
34687786266dSMatt Arsenault; GFX940:       ; %bb.0:
34697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34717786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
34727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3473585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3474585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
34757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3476585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
34777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34797786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
34807786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
34817786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 3>
3482585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
34837786266dSMatt Arsenault  ret void
34847786266dSMatt Arsenault}
34857786266dSMatt Arsenault
34867786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_4() {
34877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_4:
34887786266dSMatt Arsenault; GFX900:       ; %bb.0:
34897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3491585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
34927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3494585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
34957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34977786266dSMatt Arsenault;
34987786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_4:
34997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3502585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
35037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3505585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
35067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35087786266dSMatt Arsenault;
35097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_4:
35107786266dSMatt Arsenault; GFX940:       ; %bb.0:
35117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3513585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
35147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3515585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
35167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3517585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
35187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35207786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
35217786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
35227786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 4>
3523585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
35247786266dSMatt Arsenault  ret void
35257786266dSMatt Arsenault}
35267786266dSMatt Arsenault
35277786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_4() {
35287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_4:
35297786266dSMatt Arsenault; GFX900:       ; %bb.0:
35307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35327786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
35337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3535585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
3536585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3537585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
3538585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3539585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
35407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35427786266dSMatt Arsenault;
35437786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_4:
35447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35477786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
35487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3550585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
3551585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3552585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
3553585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3554585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
35557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35567786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35577786266dSMatt Arsenault;
35587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_4:
35597786266dSMatt Arsenault; GFX940:       ; %bb.0:
35607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3562585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
3563585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3564585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35657786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
35667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3567585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
35687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3569585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
35707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35727786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
35737786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
35747786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 4>
3575585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
35767786266dSMatt Arsenault  ret void
35777786266dSMatt Arsenault}
35787786266dSMatt Arsenault
35797786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_4() {
35807786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_4:
35817786266dSMatt Arsenault; GFX900:       ; %bb.0:
35827786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35847786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
35857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35877786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
35887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35897786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
35907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3591585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
35927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35947786266dSMatt Arsenault;
35957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_4:
35967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35997786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
36007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
36037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36047786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
36057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3606585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
36077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36097786266dSMatt Arsenault;
36107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_4:
36117786266dSMatt Arsenault; GFX940:       ; %bb.0:
36127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3614585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
36157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36177786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
36187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3619585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
36207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3621585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
36227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36247786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
36257786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
36267786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 4>
3627585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
36287786266dSMatt Arsenault  ret void
36297786266dSMatt Arsenault}
36307786266dSMatt Arsenault
36317786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_4() {
36327786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_4:
36337786266dSMatt Arsenault; GFX900:       ; %bb.0:
36347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36367786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
36377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36397786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
36407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36417786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
36427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3643585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
36447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36467786266dSMatt Arsenault;
36477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_4:
36487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36517786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
36527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36547786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
36557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36567786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
36577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3658585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
36597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36617786266dSMatt Arsenault;
36627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_4:
36637786266dSMatt Arsenault; GFX940:       ; %bb.0:
36647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3666585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
36677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36697786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
36707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3671585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
36727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3673585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
36747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36767786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
36777786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
36787786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 4>
3679585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
36807786266dSMatt Arsenault  ret void
36817786266dSMatt Arsenault}
36827786266dSMatt Arsenault
36837786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_4() {
36847786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_4:
36857786266dSMatt Arsenault; GFX900:       ; %bb.0:
36867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3688585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
36897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3691585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
36927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36947786266dSMatt Arsenault;
36957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_4:
36967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3699585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
37007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3702585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
37037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37057786266dSMatt Arsenault;
37067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__3_4:
37077786266dSMatt Arsenault; GFX940:       ; %bb.0:
37087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3710585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
37117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3712585858aeSMatt Arsenault; GFX940-NEXT:    s_nop 0
37137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3714585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
37157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37177786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
37187786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
37197786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 4>
3720585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
37217786266dSMatt Arsenault  ret void
37227786266dSMatt Arsenault}
37237786266dSMatt Arsenault
37247786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_4() {
3725585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__4_4:
3726585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3727585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3728585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3729585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
3730585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3731585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3732585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3733585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
3734585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3735585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
37367786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
37377786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
37387786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 4>
3739585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
37407786266dSMatt Arsenault  ret void
37417786266dSMatt Arsenault}
37427786266dSMatt Arsenault
37437786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__u_5() {
37447786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_5:
37457786266dSMatt Arsenault; GFX900:       ; %bb.0:
37467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37487786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
37497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3750585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
37517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3752585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
37537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37547786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37557786266dSMatt Arsenault;
37567786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_5:
37577786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37587786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37607786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
37617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3762585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
37637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3764585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
37657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37677786266dSMatt Arsenault;
37687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__u_5:
37697786266dSMatt Arsenault; GFX940:       ; %bb.0:
37707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37727786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
37737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3774585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
37757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3776585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
37777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37797786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
37807786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
37817786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 5>
3782585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
37837786266dSMatt Arsenault  ret void
37847786266dSMatt Arsenault}
37857786266dSMatt Arsenault
37867786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__0_5() {
37877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_5:
37887786266dSMatt Arsenault; GFX900:       ; %bb.0:
37897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37917786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
37927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3794585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
3795585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3796585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
3797585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3798585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
37997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38017786266dSMatt Arsenault;
38027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_5:
38037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38067786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
38077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3809585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
3810585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3811585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
3812585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3813585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
38147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38167786266dSMatt Arsenault;
38177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__0_5:
38187786266dSMatt Arsenault; GFX940:       ; %bb.0:
38197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3821585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
3822585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3823585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38247786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
38257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3826585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
38277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3828585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
38297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38317786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
38327786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
38337786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 5>
3834585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
38357786266dSMatt Arsenault  ret void
38367786266dSMatt Arsenault}
38377786266dSMatt Arsenault
38387786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__1_5() {
38397786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_5:
38407786266dSMatt Arsenault; GFX900:       ; %bb.0:
38417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3843585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
3844585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3845585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38467786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
38477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3848585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3849585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
38507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3851585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
38527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38547786266dSMatt Arsenault;
38557786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_5:
38567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3859585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
3860585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3861585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38627786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
38637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3864585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3865585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
38667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3867585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
38687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38707786266dSMatt Arsenault;
38717786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__1_5:
38727786266dSMatt Arsenault; GFX940:       ; %bb.0:
38737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38757786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
38767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38787786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
38797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3880585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3881585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s6
38827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3883585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
38847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38867786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
38877786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
38887786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 5>
3889585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
38907786266dSMatt Arsenault  ret void
38917786266dSMatt Arsenault}
38927786266dSMatt Arsenault
38937786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__2_5() {
38947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_5:
38957786266dSMatt Arsenault; GFX900:       ; %bb.0:
38967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3898585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
3899585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3900585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39017786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
39027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3903585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3904585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
39057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3906585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
39077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39097786266dSMatt Arsenault;
39107786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_5:
39117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3914585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
3915585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3916585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39177786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
39187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3919585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3920585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
39217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3922585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
39237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39257786266dSMatt Arsenault;
39267786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__2_5:
39277786266dSMatt Arsenault; GFX940:       ; %bb.0:
39287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39307786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
39317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39337786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
39347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3935585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3936585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s6
39377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3938585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
39397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39417786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
39427786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
39437786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 5>
3944585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
39457786266dSMatt Arsenault  ret void
39467786266dSMatt Arsenault}
39477786266dSMatt Arsenault
39487786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__3_5() {
3949585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_5:
3950585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3951585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3952585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3953585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
3954585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3955585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
3956585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3957585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:9]
3958585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3959585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
39607786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
39617786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
39627786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 5>
3963585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
39647786266dSMatt Arsenault  ret void
39657786266dSMatt Arsenault}
39667786266dSMatt Arsenault
39677786266dSMatt Arsenaultdefine void @s_shuffle_v2i32_v3i32__4_5() {
39687786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_5:
39697786266dSMatt Arsenault; GFX900:       ; %bb.0:
39707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39727786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
39737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3974585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3975585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
39767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3977585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:9]
39787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39797786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39807786266dSMatt Arsenault;
39817786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_5:
39827786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39857786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
39867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3987585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3988585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
39897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3990585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:9]
39917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39937786266dSMatt Arsenault;
39947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v2i32_v3i32__4_5:
39957786266dSMatt Arsenault; GFX940:       ; %bb.0:
39967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39987786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
39997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4000585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4001585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
40027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4003585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:9]
40047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40067786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
40077786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
40087786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 5>
4009585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)
40107786266dSMatt Arsenault  ret void
40117786266dSMatt Arsenault}
40127786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
40137786266dSMatt Arsenault; GFX90APLUS: {{.*}}
4014