xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v4i32.v2i32.ll (revision 585858aeb6247b3892218edb9d353c63f1c33186)
17786266dSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
27786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s
37786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s
47786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s
57786266dSMatt Arsenault
67786266dSMatt Arsenault
77786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_u_u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i32_v2i32__u_u_u_u:
97786266dSMatt Arsenault; GFX9:       ; %bb.0:
107786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
117786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
127786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> poison
147786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_u_u_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_u_u_u:
207786266dSMatt Arsenault; GFX900:       ; %bb.0:
217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], 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_v4i32_v2i32__0_u_u_u:
317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], 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_v4i32_v2i32__0_u_u_u:
427786266dSMatt Arsenault; GFX940:       ; %bb.0:
437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
517786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
537786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_u_u_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_u_u_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
697786266dSMatt Arsenault;
707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_u_u_u:
717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
817786266dSMatt Arsenault;
827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_u_u_u:
837786266dSMatt Arsenault; GFX940:       ; %bb.0:
847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
937786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
947786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
957786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
967786266dSMatt Arsenault  ret void
977786266dSMatt Arsenault}
987786266dSMatt Arsenault
997786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_u_u_u(ptr addrspace(1) inreg %ptr) {
1007786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i32_v2i32__2_u_u_u:
1017786266dSMatt Arsenault; GFX9:       ; %bb.0:
1027786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1037786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1047786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
1057786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
1067786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
1077786266dSMatt Arsenault  ret void
1087786266dSMatt Arsenault}
1097786266dSMatt Arsenault
1107786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_u_u(ptr addrspace(1) inreg %ptr) {
1117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_u_u:
1127786266dSMatt Arsenault; GFX900:       ; %bb.0:
1137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
1167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
1187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
1197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
1207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1227786266dSMatt Arsenault;
1237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_u_u:
1247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
1307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
1327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1347786266dSMatt Arsenault;
1357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_u_u:
1367786266dSMatt Arsenault; GFX940:       ; %bb.0:
1377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
1427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
1447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1467786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
1477786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
1487786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
1497786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
1507786266dSMatt Arsenault  ret void
1517786266dSMatt Arsenault}
1527786266dSMatt Arsenault
1537786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_u_u(ptr addrspace(1) inreg %ptr) {
1547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_u_u:
1557786266dSMatt Arsenault; GFX900:       ; %bb.0:
1567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
1597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
1637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
1657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1687786266dSMatt Arsenault;
1697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_u_u:
1707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
1747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
1787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
1817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1847786266dSMatt Arsenault;
1857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_u_u:
1867786266dSMatt Arsenault; GFX940:       ; %bb.0:
1877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
1907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
1947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
1977786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2007786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
2017786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
2027786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>
2037786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
2047786266dSMatt Arsenault  ret void
2057786266dSMatt Arsenault}
2067786266dSMatt Arsenault
2077786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_u_u(ptr addrspace(1) inreg %ptr) {
2087786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_u_u:
2097786266dSMatt Arsenault; GFX900:       ; %bb.0:
2107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
2137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
2177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
2197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2227786266dSMatt Arsenault;
2237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_u_u:
2247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
2287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
2327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2377786266dSMatt Arsenault;
2387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_u_u:
2397786266dSMatt Arsenault; GFX940:       ; %bb.0:
2407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
2437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
2477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2537786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
2547786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
2557786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>
2567786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
2577786266dSMatt Arsenault  ret void
2587786266dSMatt Arsenault}
2597786266dSMatt Arsenault
2607786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_u_u(ptr addrspace(1) inreg %ptr) {
2617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_u_u:
2627786266dSMatt Arsenault; GFX900:       ; %bb.0:
2637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
2657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
2677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
2707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2727786266dSMatt Arsenault;
2737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_u_u:
2747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
2777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
2797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
2817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
2827786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
2837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2857786266dSMatt Arsenault;
2867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_u_u:
2877786266dSMatt Arsenault; GFX940:       ; %bb.0:
2887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
2907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
2927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2937786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
2957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
2967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
2977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2997786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
3007786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
3017786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>
3027786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
3037786266dSMatt Arsenault  ret void
3047786266dSMatt Arsenault}
3057786266dSMatt Arsenault
3067786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_u(ptr addrspace(1) inreg %ptr) {
3077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_u:
3087786266dSMatt Arsenault; GFX900:       ; %bb.0:
3097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
3147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
3157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
3167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3187786266dSMatt Arsenault;
3197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_u:
3207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
3267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
3277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
3287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3307786266dSMatt Arsenault;
3317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_u:
3327786266dSMatt Arsenault; GFX940:       ; %bb.0:
3337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
3387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
3397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
3407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3427786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
3437786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
3447786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>
3457786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
3467786266dSMatt Arsenault  ret void
3477786266dSMatt Arsenault}
3487786266dSMatt Arsenault
3497786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_u(ptr addrspace(1) inreg %ptr) {
3507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_u:
3517786266dSMatt Arsenault; GFX900:       ; %bb.0:
3527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
3557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
3587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
3607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3647786266dSMatt Arsenault;
3657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_u:
3667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
3707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
3737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
3757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3797786266dSMatt Arsenault;
3807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_u:
3817786266dSMatt Arsenault; GFX940:       ; %bb.0:
3827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
3857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
3887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
3907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3947786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
3957786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
3967786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>
3977786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
3987786266dSMatt Arsenault  ret void
3997786266dSMatt Arsenault}
4007786266dSMatt Arsenault
4017786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_u(ptr addrspace(1) inreg %ptr) {
4027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_u:
4037786266dSMatt Arsenault; GFX900:       ; %bb.0:
4047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
4077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4097786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
4107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
4137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
4147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4167786266dSMatt Arsenault;
4177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_u:
4187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
4227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
4257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
4287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
4297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4327786266dSMatt Arsenault;
4337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_u:
4347786266dSMatt Arsenault; GFX940:       ; %bb.0:
4357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4377786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
4387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4407786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
4417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
4447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
4457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
4467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4487786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
4497786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
4507786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>
4517786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
4527786266dSMatt Arsenault  ret void
4537786266dSMatt Arsenault}
4547786266dSMatt Arsenault
4557786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_u(ptr addrspace(1) inreg %ptr) {
4567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_u:
4577786266dSMatt Arsenault; GFX900:       ; %bb.0:
4587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
4627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
4647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
4657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4687786266dSMatt Arsenault;
4697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_u:
4707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
4757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
4777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
4787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4817786266dSMatt Arsenault;
4827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_u:
4837786266dSMatt Arsenault; GFX940:       ; %bb.0:
4847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
4887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4897786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
4917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
4927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
4937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4957786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
4967786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
4977786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>
4987786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
4997786266dSMatt Arsenault  ret void
5007786266dSMatt Arsenault}
5017786266dSMatt Arsenault
5027786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_u(ptr addrspace(1) inreg %ptr) {
5037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_u:
5047786266dSMatt Arsenault; GFX900:       ; %bb.0:
5057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
5107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
5117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
5137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5157786266dSMatt Arsenault;
5167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_u:
5177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
5237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
5247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]
5267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5287786266dSMatt Arsenault;
5297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_u:
5307786266dSMatt Arsenault; GFX940:       ; %bb.0:
5317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
5367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
5377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1] sc0 sc1
5397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5417786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
5427786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
5437786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>
5447786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
5457786266dSMatt Arsenault  ret void
5467786266dSMatt Arsenault}
5477786266dSMatt Arsenault
5487786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_0(ptr addrspace(1) inreg %ptr) {
5497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_0:
5507786266dSMatt Arsenault; GFX900:       ; %bb.0:
5517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
5547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
5567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
5577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
5587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
5607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
5627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5647786266dSMatt Arsenault;
5657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_0:
5667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
5707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
5727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
5747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
5767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
5777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
5787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
5797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5817786266dSMatt Arsenault;
5827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_0:
5837786266dSMatt Arsenault; GFX940:       ; %bb.0:
5847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
5877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
5897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5907786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
5917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
5937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
5947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
5957786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
5967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5987786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
5997786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
6007786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>
6017786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
6027786266dSMatt Arsenault  ret void
6037786266dSMatt Arsenault}
6047786266dSMatt Arsenault
6057786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_1(ptr addrspace(1) inreg %ptr) {
6067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_1:
6077786266dSMatt Arsenault; GFX900:       ; %bb.0:
6087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
6117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6137786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
6147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
6177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
6187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6217786266dSMatt Arsenault;
6227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_1:
6237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
6277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
6307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
6337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
6347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6377786266dSMatt Arsenault;
6387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_1:
6397786266dSMatt Arsenault; GFX940:       ; %bb.0:
6407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
6437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
6467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
6497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
6507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6537786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
6547786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
6557786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>
6567786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
6577786266dSMatt Arsenault  ret void
6587786266dSMatt Arsenault}
6597786266dSMatt Arsenault
6607786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_2(ptr addrspace(1) inreg %ptr) {
6617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_2:
6627786266dSMatt Arsenault; GFX900:       ; %bb.0:
6637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
6657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
6677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
6697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v4
6707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
6717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
6727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6747786266dSMatt Arsenault;
6757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_2:
6767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
6797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
6817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
6837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
6847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
6857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
6867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
6877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6897786266dSMatt Arsenault;
6907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_2:
6917786266dSMatt Arsenault; GFX940:       ; %bb.0:
6927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
6947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
6967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6977786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
6987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
6997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
7007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v5
7017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
7027786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
7037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7057786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
7067786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
7077786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>
7087786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
7097786266dSMatt Arsenault  ret void
7107786266dSMatt Arsenault}
7117786266dSMatt Arsenault
7127786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_3_3(ptr addrspace(1) inreg %ptr) {
7137786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_3_3:
7147786266dSMatt Arsenault; GFX900:       ; %bb.0:
7157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7177786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
7187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
7217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
7227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
7237786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7267786266dSMatt Arsenault;
7277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_3_3:
7287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
7357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
7367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
7377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7407786266dSMatt Arsenault;
7417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_3_3:
7427786266dSMatt Arsenault; GFX940:       ; %bb.0:
7437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
7497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
7507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
7517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
7527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7547786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
7557786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
7567786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
7577786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
7587786266dSMatt Arsenault  ret void
7597786266dSMatt Arsenault}
7607786266dSMatt Arsenault
7617786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_0_0_0(ptr addrspace(1) inreg %ptr) {
7627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__u_0_0_0:
7637786266dSMatt Arsenault; GFX900:       ; %bb.0:
7647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
7677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
7707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
7717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
7727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7757786266dSMatt Arsenault;
7767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__u_0_0_0:
7777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
7817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
7847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
7857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
7867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7897786266dSMatt Arsenault;
7907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__u_0_0_0:
7917786266dSMatt Arsenault; GFX940:       ; %bb.0:
7927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7947786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
7957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
7987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
7997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
8007786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8037786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
8047786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>
8057786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
8067786266dSMatt Arsenault  ret void
8077786266dSMatt Arsenault}
8087786266dSMatt Arsenault
8097786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_0_0_0(ptr addrspace(1) inreg %ptr) {
8107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_0_0_0:
8117786266dSMatt Arsenault; GFX900:       ; %bb.0:
8127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8147786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
8157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
8187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
8197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
8207786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8227786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8237786266dSMatt Arsenault;
8247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_0_0_0:
8257786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
8297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
8327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
8337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
8347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8377786266dSMatt Arsenault;
8387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_0_0_0:
8397786266dSMatt Arsenault; GFX940:       ; %bb.0:
8407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
8437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
8467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
8477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
8487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8517786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
8527786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> zeroinitializer
8537786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
8547786266dSMatt Arsenault  ret void
8557786266dSMatt Arsenault}
8567786266dSMatt Arsenault
8577786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_0_0_0(ptr addrspace(1) inreg %ptr) {
8587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_0_0_0:
8597786266dSMatt Arsenault; GFX900:       ; %bb.0:
8607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
8637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
8657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
8667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
8677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
8687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8707786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8717786266dSMatt Arsenault;
8727786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_0_0_0:
8737786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8767786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
8777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
8797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
8807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
8817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
8827786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
8837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8857786266dSMatt Arsenault;
8867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_0_0_0:
8877786266dSMatt Arsenault; GFX940:       ; %bb.0:
8887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8907786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
8917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
8937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
8947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
8957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
8967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
8977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8997786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
9007786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9017786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
9027786266dSMatt Arsenault  ret void
9037786266dSMatt Arsenault}
9047786266dSMatt Arsenault
9057786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_0_0_0(ptr addrspace(1) inreg %ptr) {
9067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__2_0_0_0:
9077786266dSMatt Arsenault; GFX900:       ; %bb.0:
9087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
9117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
9137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
9147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
9157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
9167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9197786266dSMatt Arsenault;
9207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__2_0_0_0:
9217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
9257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
9277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
9287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
9297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
9307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9337786266dSMatt Arsenault;
9347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__2_0_0_0:
9357786266dSMatt Arsenault; GFX940:       ; %bb.0:
9367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
9397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
9417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
9427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
9437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
9447786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
9457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9477786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
9487786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
9497786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
9507786266dSMatt Arsenault  ret void
9517786266dSMatt Arsenault}
9527786266dSMatt Arsenault
9537786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_0_0(ptr addrspace(1) inreg %ptr) {
9547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_0_0:
9557786266dSMatt Arsenault; GFX900:       ; %bb.0:
9567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
9597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9617786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
9627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
9647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
9657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
9667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
9677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], 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_v4i32_v2i32__3_0_0_0:
9727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9757786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
9767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
9797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
9817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
9827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
9837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
9847786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
9857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9877786266dSMatt Arsenault;
9887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_0_0:
9897786266dSMatt Arsenault; GFX940:       ; %bb.0:
9907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9927786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
9937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
9967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
9987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
9997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
10007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
10017786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
10027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10047786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
10057786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
10067786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
10077786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
10087786266dSMatt Arsenault  ret void
10097786266dSMatt Arsenault}
10107786266dSMatt Arsenault
10117786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_0_0(ptr addrspace(1) inreg %ptr) {
10127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_0_0:
10137786266dSMatt Arsenault; GFX900:       ; %bb.0:
10147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
10177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10197786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
10207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
10237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
10247786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10267786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10277786266dSMatt Arsenault;
10287786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_0_0:
10297786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10327786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
10337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
10367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
10397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
10407786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10437786266dSMatt Arsenault;
10447786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_0_0:
10457786266dSMatt Arsenault; GFX940:       ; %bb.0:
10467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10487786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
10497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10517786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
10527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
10547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
10557786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
10567786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
10577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10587786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10597786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
10607786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
10617786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>
10627786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
10637786266dSMatt Arsenault  ret void
10647786266dSMatt Arsenault}
10657786266dSMatt Arsenault
10667786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_0_0(ptr addrspace(1) inreg %ptr) {
10677786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_0_0:
10687786266dSMatt Arsenault; GFX900:       ; %bb.0:
10697786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10717786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
10727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
10757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
10787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
10797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
10807786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10837786266dSMatt Arsenault;
10847786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_0_0:
10857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10887786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
10897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
10927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
10957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
10967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
10977786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10997786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11007786266dSMatt Arsenault;
11017786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_0_0:
11027786266dSMatt Arsenault; GFX940:       ; %bb.0:
11037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11057786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
11067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11087786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
11097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
11117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
11127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
11137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
11147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
11157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11177786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
11187786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
11197786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>
11207786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
11217786266dSMatt Arsenault  ret void
11227786266dSMatt Arsenault}
11237786266dSMatt Arsenault
11247786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_0_0(ptr addrspace(1) inreg %ptr) {
11257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_0_0:
11267786266dSMatt Arsenault; GFX900:       ; %bb.0:
11277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
11307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
11327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
11347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
11367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
11377786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
11387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11407786266dSMatt Arsenault;
11417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_0_0:
11427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
11467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
11487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
11507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
11527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
11537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
11547786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
11557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11567786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11577786266dSMatt Arsenault;
11587786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_0_0:
11597786266dSMatt Arsenault; GFX940:       ; %bb.0:
11607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
11637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
11657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
11677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
11697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
11707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
11717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
11727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11747786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
11757786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
11767786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>
11777786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
11787786266dSMatt Arsenault  ret void
11797786266dSMatt Arsenault}
11807786266dSMatt Arsenault
11817786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_0(ptr addrspace(1) inreg %ptr) {
11827786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_0:
11837786266dSMatt Arsenault; GFX900:       ; %bb.0:
11847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
11877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11897786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
11907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
11937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
11947786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
11957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11977786266dSMatt Arsenault;
11987786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_0:
11997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12027786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
12037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12057786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
12067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
12097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
12107786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
12117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12137786266dSMatt Arsenault;
12147786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_0:
12157786266dSMatt Arsenault; GFX940:       ; %bb.0:
12167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12187786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
12197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
12227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
12257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
12267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
12277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12297786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
12307786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
12317786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>
12327786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
12337786266dSMatt Arsenault  ret void
12347786266dSMatt Arsenault}
12357786266dSMatt Arsenault
12367786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_0(ptr addrspace(1) inreg %ptr) {
12377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_0:
12387786266dSMatt Arsenault; GFX900:       ; %bb.0:
12397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12417786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
12427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
12457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
12477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
12487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
12497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
12507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12527786266dSMatt Arsenault;
12537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_0:
12547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
12587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
12617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
12637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
12647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
12657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
12667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12687786266dSMatt Arsenault;
12697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_0:
12707786266dSMatt Arsenault; GFX940:       ; %bb.0:
12717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
12747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
12777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
12797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
12807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
12817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
12827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12847786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
12857786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
12867786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>
12877786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
12887786266dSMatt Arsenault  ret void
12897786266dSMatt Arsenault}
12907786266dSMatt Arsenault
12917786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_0(ptr addrspace(1) inreg %ptr) {
12927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_0:
12937786266dSMatt Arsenault; GFX900:       ; %bb.0:
12947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
12977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
12997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
13017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
13037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
13047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
13057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13077786266dSMatt Arsenault;
13087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_0:
13097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
13137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
13177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
13197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
13207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
13217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
13227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13247786266dSMatt Arsenault;
13257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_0:
13267786266dSMatt Arsenault; GFX940:       ; %bb.0:
13277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
13307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
13347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
13367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v5
13377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
13387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
13397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13417786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
13427786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
13437786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>
13447786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
13457786266dSMatt Arsenault  ret void
13467786266dSMatt Arsenault}
13477786266dSMatt Arsenault
13487786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_0(ptr addrspace(1) inreg %ptr) {
13497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_0:
13507786266dSMatt Arsenault; GFX900:       ; %bb.0:
13517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
13547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
13567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:5]
13587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
13607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
13617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v4
13627786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
13637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13657786266dSMatt Arsenault;
13667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_0:
13677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
13717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
13737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
13757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
13777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
13787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
13797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
13807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13827786266dSMatt Arsenault;
13837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_0:
13847786266dSMatt Arsenault; GFX940:       ; %bb.0:
13857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
13887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
13907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
13927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
13947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
13957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
13967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
13977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13997786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
14007786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
14017786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>
14027786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
14037786266dSMatt Arsenault  ret void
14047786266dSMatt Arsenault}
14057786266dSMatt Arsenault
14067786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_1_1_1(ptr addrspace(1) inreg %ptr) {
14077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__u_1_1_1:
14087786266dSMatt Arsenault; GFX900:       ; %bb.0:
14097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
14137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
14157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
14167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], 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_v4i32_v2i32__u_1_1_1:
14217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14257786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
14267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
14287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
14297786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14307786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14327786266dSMatt Arsenault;
14337786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__u_1_1_1:
14347786266dSMatt Arsenault; GFX940:       ; %bb.0:
14357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
14397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14407786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
14427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
14437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
14447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14467786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
14477786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>
14487786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
14497786266dSMatt Arsenault  ret void
14507786266dSMatt Arsenault}
14517786266dSMatt Arsenault
14527786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_1_1_1(ptr addrspace(1) inreg %ptr) {
14537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_1_1_1:
14547786266dSMatt Arsenault; GFX900:       ; %bb.0:
14557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
14597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
14617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
14627786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14657786266dSMatt Arsenault;
14667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_1_1_1:
14677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14717786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
14727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
14747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
14757786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14787786266dSMatt Arsenault;
14797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_1_1_1:
14807786266dSMatt Arsenault; GFX940:       ; %bb.0:
14817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
14857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14867786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
14887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
14897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
14907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14927786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
14937786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
14947786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
14957786266dSMatt Arsenault  ret void
14967786266dSMatt Arsenault}
14977786266dSMatt Arsenault
14987786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_1_1_1(ptr addrspace(1) inreg %ptr) {
14997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_1_1_1:
15007786266dSMatt Arsenault; GFX900:       ; %bb.0:
15017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
15047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
15077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
15087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
15097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
15107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15127786266dSMatt Arsenault;
15137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_1_1_1:
15147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
15187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
15207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
15217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
15227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
15237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
15247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15267786266dSMatt Arsenault;
15277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_1_1_1:
15287786266dSMatt Arsenault; GFX940:       ; %bb.0:
15297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
15327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
15347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
15357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
15367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
15377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
15387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15407786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
15417786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
15427786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
15437786266dSMatt Arsenault  ret void
15447786266dSMatt Arsenault}
15457786266dSMatt Arsenault
15467786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_1_1_1(ptr addrspace(1) inreg %ptr) {
15477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__2_1_1_1:
15487786266dSMatt Arsenault; GFX900:       ; %bb.0:
15497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
15537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
15557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
15567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
15577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15597786266dSMatt Arsenault;
15607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__2_1_1_1:
15617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
15647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
15667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
15687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
15697786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
15707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15727786266dSMatt Arsenault;
15737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__2_1_1_1:
15747786266dSMatt Arsenault; GFX940:       ; %bb.0:
15757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
15777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
15797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15807786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
15817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
15827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
15837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
15847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15867786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
15877786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>
15887786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
15897786266dSMatt Arsenault  ret void
15907786266dSMatt Arsenault}
15917786266dSMatt Arsenault
15927786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_1_1(ptr addrspace(1) inreg %ptr) {
15937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_1_1:
15947786266dSMatt Arsenault; GFX900:       ; %bb.0:
15957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
15987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
16017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
16037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
16047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
16057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
16067786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16097786266dSMatt Arsenault;
16107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_1_1:
16117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
16157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
16187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
16207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
16217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
16227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
16237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0: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_v4i32_v2i32__3_1_1_1:
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:1]
16327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
16357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
16377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
16387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
16397786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
16407786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
16417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16437786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
16447786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
16457786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>
16467786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
16477786266dSMatt Arsenault  ret void
16487786266dSMatt Arsenault}
16497786266dSMatt Arsenault
16507786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_1_1(ptr addrspace(1) inreg %ptr) {
16517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_1_1:
16527786266dSMatt Arsenault; GFX900:       ; %bb.0:
16537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
16567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16587786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
16597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
16617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
16627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
16637786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16657786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16667786266dSMatt Arsenault;
16677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_1_1:
16687786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16717786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
16727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
16757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
16777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
16787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
16797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16827786266dSMatt Arsenault;
16837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_1_1:
16847786266dSMatt Arsenault; GFX940:       ; %bb.0:
16857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
16887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16907786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
16917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
16937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
16947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
16957786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
16967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16987786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
16997786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
17007786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>
17017786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
17027786266dSMatt Arsenault  ret void
17037786266dSMatt Arsenault}
17047786266dSMatt Arsenault
17057786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_1_1(ptr addrspace(1) inreg %ptr) {
17067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_1_1:
17077786266dSMatt Arsenault; GFX900:       ; %bb.0:
17087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
17117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
17137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17147786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
17157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
17177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
17187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
17197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17217786266dSMatt Arsenault;
17227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_1_1:
17237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
17277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
17307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
17337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
17347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
17357786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17377786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17387786266dSMatt Arsenault;
17397786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_1_1:
17407786266dSMatt Arsenault; GFX940:       ; %bb.0:
17417786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17437786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
17447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
17477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
17507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
17517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
17527786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
17537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17557786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
17567786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
17577786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>
17587786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
17597786266dSMatt Arsenault  ret void
17607786266dSMatt Arsenault}
17617786266dSMatt Arsenault
17627786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_1_1(ptr addrspace(1) inreg %ptr) {
17637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_1_1:
17647786266dSMatt Arsenault; GFX900:       ; %bb.0:
17657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
17687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17707786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
17717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
17737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
17747786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
17757786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17787786266dSMatt Arsenault;
17797786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_1_1:
17807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17837786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
17847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
17867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17877786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
17887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
17907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
17917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
17927786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
17937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17957786266dSMatt Arsenault;
17967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_1_1:
17977786266dSMatt Arsenault; GFX940:       ; %bb.0:
17987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
18017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
18037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
18057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
18077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
18087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
18097786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
18107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18127786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
18137786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
18147786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>
18157786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
18167786266dSMatt Arsenault  ret void
18177786266dSMatt Arsenault}
18187786266dSMatt Arsenault
18197786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_1(ptr addrspace(1) inreg %ptr) {
18207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_1:
18217786266dSMatt Arsenault; GFX900:       ; %bb.0:
18227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
18257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18277786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
18287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
18317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
18327786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
18337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18347786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18357786266dSMatt Arsenault;
18367786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_1:
18377786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
18417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18437786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
18447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
18467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
18477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
18487786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
18497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18517786266dSMatt Arsenault;
18527786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_1:
18537786266dSMatt Arsenault; GFX940:       ; %bb.0:
18547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
18577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18597786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
18607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
18627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
18637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
18647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
18657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18677786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
18687786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
18697786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>
18707786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
18717786266dSMatt Arsenault  ret void
18727786266dSMatt Arsenault}
18737786266dSMatt Arsenault
18747786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_1(ptr addrspace(1) inreg %ptr) {
18757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_1:
18767786266dSMatt Arsenault; GFX900:       ; %bb.0:
18777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
18807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
18827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
18837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18847786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
18857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18867786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
18877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18897786266dSMatt Arsenault;
18907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_1:
18917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18947786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
18957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
18977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
18987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18997786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
19007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19047786266dSMatt Arsenault;
19057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_1:
19067786266dSMatt Arsenault; GFX940:       ; %bb.0:
19077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
19107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
19137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
19157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19167786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
19177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19197786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
19207786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
19217786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>
19227786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
19237786266dSMatt Arsenault  ret void
19247786266dSMatt Arsenault}
19257786266dSMatt Arsenault
19267786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_1(ptr addrspace(1) inreg %ptr) {
19277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_1:
19287786266dSMatt Arsenault; GFX900:       ; %bb.0:
19297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19317786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
19327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
19347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
19357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19367786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
19377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19417786266dSMatt Arsenault;
19427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_1:
19437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
19477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
19497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
19507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
19527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19537786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19567786266dSMatt Arsenault;
19577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_1:
19587786266dSMatt Arsenault; GFX940:       ; %bb.0:
19597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19617786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
19627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
19657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19667786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
19677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19687786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
19697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19717786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
19727786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
19737786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>
19747786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
19757786266dSMatt Arsenault  ret void
19767786266dSMatt Arsenault}
19777786266dSMatt Arsenault
19787786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_1(ptr addrspace(1) inreg %ptr) {
19797786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_1:
19807786266dSMatt Arsenault; GFX900:       ; %bb.0:
19817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
19847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
19877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
19897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
19907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
19917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v4
19927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
19937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19957786266dSMatt Arsenault;
19967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_1:
19977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
20017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
20037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
20057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
20077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
20087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
20097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], 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_v4i32_v2i32__3_3_2_1:
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[2:3]
20187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
20207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
20227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
20247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
20257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
20267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
20277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20297786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
20307786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
20317786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>
20327786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
20337786266dSMatt Arsenault  ret void
20347786266dSMatt Arsenault}
20357786266dSMatt Arsenault
20367786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_2_2_2(ptr addrspace(1) inreg %ptr) {
20377786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i32_v2i32__u_2_2_2:
20387786266dSMatt Arsenault; GFX9:       ; %bb.0:
20397786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20407786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
20417786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
20427786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>
20437786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
20447786266dSMatt Arsenault  ret void
20457786266dSMatt Arsenault}
20467786266dSMatt Arsenault
20477786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_2_2_2(ptr addrspace(1) inreg %ptr) {
20487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_2_2_2:
20497786266dSMatt Arsenault; GFX900:       ; %bb.0:
20507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
20527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
20547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
20567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20587786266dSMatt Arsenault;
20597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_2_2_2:
20607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
20637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
20657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20667786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
20677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20687786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20697786266dSMatt Arsenault;
20707786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_2_2_2:
20717786266dSMatt Arsenault; GFX940:       ; %bb.0:
20727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
20747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
20767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20777786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
20787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20807786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
20817786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>
20827786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
20837786266dSMatt Arsenault  ret void
20847786266dSMatt Arsenault}
20857786266dSMatt Arsenault
20867786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_2_2_2(ptr addrspace(1) inreg %ptr) {
20877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_2_2_2:
20887786266dSMatt Arsenault; GFX900:       ; %bb.0:
20897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20917786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
20927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
20947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
20957786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
20967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20987786266dSMatt Arsenault;
20997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_2_2_2:
21007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21037786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
21047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
21067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
21077786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
21087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21107786266dSMatt Arsenault;
21117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_2_2_2:
21127786266dSMatt Arsenault; GFX940:       ; %bb.0:
21137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21157786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
21167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
21187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
21197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
21207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21227786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
21237786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>
21247786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
21257786266dSMatt Arsenault  ret void
21267786266dSMatt Arsenault}
21277786266dSMatt Arsenault
21287786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_2_2_2(ptr addrspace(1) inreg %ptr) {
21297786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v4i32_v2i32__2_2_2_2:
21307786266dSMatt Arsenault; GFX9:       ; %bb.0:
21317786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21327786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
21337786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
21347786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>
21357786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
21367786266dSMatt Arsenault  ret void
21377786266dSMatt Arsenault}
21387786266dSMatt Arsenault
21397786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_2_2(ptr addrspace(1) inreg %ptr) {
21407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_2_2:
21417786266dSMatt Arsenault; GFX900:       ; %bb.0:
21427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
21457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
21477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
21487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
21497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
21507786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
21517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21537786266dSMatt Arsenault;
21547786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_2_2:
21557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
21597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
21617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
21627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
21637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
21647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
21657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21677786266dSMatt Arsenault;
21687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_2_2:
21697786266dSMatt Arsenault; GFX940:       ; %bb.0:
21707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21727786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
21737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
21757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
21767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
21777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
21787786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
21797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21817786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
21827786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
21837786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>
21847786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
21857786266dSMatt Arsenault  ret void
21867786266dSMatt Arsenault}
21877786266dSMatt Arsenault
21887786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_2_2(ptr addrspace(1) inreg %ptr) {
21897786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_2_2:
21907786266dSMatt Arsenault; GFX900:       ; %bb.0:
21917786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21937786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
21947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, 0
21967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
21977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
21987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]
21997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22017786266dSMatt Arsenault;
22027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_2_2:
22037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
22077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
22097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
22107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
22117786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]
22127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22147786266dSMatt Arsenault;
22157786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_2_2:
22167786266dSMatt Arsenault; GFX940:       ; %bb.0:
22177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22197786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
22207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, 0
22227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
22237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
22247786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1
22257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22277786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
22287786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
22297786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>
22307786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
22317786266dSMatt Arsenault  ret void
22327786266dSMatt Arsenault}
22337786266dSMatt Arsenault
22347786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_2_2(ptr addrspace(1) inreg %ptr) {
22357786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_2_2:
22367786266dSMatt Arsenault; GFX900:       ; %bb.0:
22377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
22407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22427786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
22437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
22457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
22467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
22477786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
22487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22497786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22507786266dSMatt Arsenault;
22517786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_2_2:
22527786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
22567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
22587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
22607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
22627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
22637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
22647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
22657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22677786266dSMatt Arsenault;
22687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_2_2:
22697786266dSMatt Arsenault; GFX940:       ; %bb.0:
22707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22727786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
22737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
22757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
22777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
22797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
22807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
22817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
22827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22847786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
22857786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
22867786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>
22877786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
22887786266dSMatt Arsenault  ret void
22897786266dSMatt Arsenault}
22907786266dSMatt Arsenault
22917786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_2_2(ptr addrspace(1) inreg %ptr) {
22927786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_2_2:
22937786266dSMatt Arsenault; GFX900:       ; %bb.0:
22947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22967786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
22977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
23007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
23037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
23047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23077786266dSMatt Arsenault;
23087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_2_2:
23097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
23137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23157786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
23167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
23187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
23197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
23207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23237786266dSMatt Arsenault;
23247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_2_2:
23257786266dSMatt Arsenault; GFX940:       ; %bb.0:
23267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
23297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
23327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
23347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
23357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
23367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
23377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23397786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
23407786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
23417786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>
23427786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
23437786266dSMatt Arsenault  ret void
23447786266dSMatt Arsenault}
23457786266dSMatt Arsenault
23467786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_2(ptr addrspace(1) inreg %ptr) {
23477786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_2:
23487786266dSMatt Arsenault; GFX900:       ; %bb.0:
23497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
23527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
23547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
23557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
23567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
23577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23607786266dSMatt Arsenault;
23617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_2:
23627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
23667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
23687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
23697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
23707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
23717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
23727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23747786266dSMatt Arsenault;
23757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_2:
23767786266dSMatt Arsenault; GFX940:       ; %bb.0:
23777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
23807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
23827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
23837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
23847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
23857786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
23867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23887786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
23897786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
23907786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>
23917786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
23927786266dSMatt Arsenault  ret void
23937786266dSMatt Arsenault}
23947786266dSMatt Arsenault
23957786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_2(ptr addrspace(1) inreg %ptr) {
23967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_2:
23977786266dSMatt Arsenault; GFX900:       ; %bb.0:
23987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
24017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
24037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
24047786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
24057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
24067786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
24077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24097786266dSMatt Arsenault;
24107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_2:
24117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
24157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
24177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
24187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
24197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v2
24207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
24217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24237786266dSMatt Arsenault;
24247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_2:
24257786266dSMatt Arsenault; GFX940:       ; %bb.0:
24267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
24297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
24317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
24327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
24337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v2
24347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
24357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24377786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
24387786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
24397786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>
24407786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
24417786266dSMatt Arsenault  ret void
24427786266dSMatt Arsenault}
24437786266dSMatt Arsenault
24447786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_2(ptr addrspace(1) inreg %ptr) {
24457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_2:
24467786266dSMatt Arsenault; GFX900:       ; %bb.0:
24477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
24507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
24527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
24547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
24567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v4
24577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
24587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24607786266dSMatt Arsenault;
24617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_2:
24627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
24667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
24687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
24707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
24727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
24737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
24747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
24757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24777786266dSMatt Arsenault;
24787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_2:
24797786266dSMatt Arsenault; GFX940:       ; %bb.0:
24807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
24837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
24857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
24877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24887786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
24897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
24907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
24917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
24927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
24937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24957786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
24967786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
24977786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>
24987786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
24997786266dSMatt Arsenault  ret void
25007786266dSMatt Arsenault}
25017786266dSMatt Arsenault
25027786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_2(ptr addrspace(1) inreg %ptr) {
25037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_2:
25047786266dSMatt Arsenault; GFX900:       ; %bb.0:
25057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
25087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
25107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:4]
25127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
25147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v4
25157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v5, v[0:3], s[16:17]
25167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25187786266dSMatt Arsenault;
25197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_2:
25207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
25247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
25267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
25287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
25307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
25317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
25327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
25337786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
25347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25357786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25367786266dSMatt Arsenault;
25377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_2:
25387786266dSMatt Arsenault; GFX940:       ; %bb.0:
25397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
25427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
25447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
25467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
25487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
25497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
25507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
25517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
25527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25547786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
25557786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
25567786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>
25577786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
25587786266dSMatt Arsenault  ret void
25597786266dSMatt Arsenault}
25607786266dSMatt Arsenault
25617786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__u_3_3_3(ptr addrspace(1) inreg %ptr) {
25627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__u_3_3_3:
25637786266dSMatt Arsenault; GFX900:       ; %bb.0:
25647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
25667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
25687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
25707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
25717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
25727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25747786266dSMatt Arsenault;
25757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__u_3_3_3:
25767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
25797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
25817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
25837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
25847786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
25857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25877786266dSMatt Arsenault;
25887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__u_3_3_3:
25897786266dSMatt Arsenault; GFX940:       ; %bb.0:
25907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
25927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
25947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25957786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
25967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
25977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
25987786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
25997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26017786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
26027786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
26037786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>
26047786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
26057786266dSMatt Arsenault  ret void
26067786266dSMatt Arsenault}
26077786266dSMatt Arsenault
26087786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__0_3_3_3(ptr addrspace(1) inreg %ptr) {
26097786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__0_3_3_3:
26107786266dSMatt Arsenault; GFX900:       ; %bb.0:
26117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26137786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
26147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
26177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
26197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
26207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
26217786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
26227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26237786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26247786266dSMatt Arsenault;
26257786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__0_3_3_3:
26267786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
26307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26327786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
26337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
26357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
26367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
26377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
26387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26407786266dSMatt Arsenault;
26417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__0_3_3_3:
26427786266dSMatt Arsenault; GFX940:       ; %bb.0:
26437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
26467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26487786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
26497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
26517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
26527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
26537786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
26547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26567786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
26577786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
26587786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>
26597786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
26607786266dSMatt Arsenault  ret void
26617786266dSMatt Arsenault}
26627786266dSMatt Arsenault
26637786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__1_3_3_3(ptr addrspace(1) inreg %ptr) {
26647786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__1_3_3_3:
26657786266dSMatt Arsenault; GFX900:       ; %bb.0:
26667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26687786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
26697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26717786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
26727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
26747786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
26757786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
26767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
26777786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
26787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26797786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26807786266dSMatt Arsenault;
26817786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__1_3_3_3:
26827786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
26867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26887786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
26897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
26917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
26927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
26937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
26947786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
26957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26977786266dSMatt Arsenault;
26987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__1_3_3_3:
26997786266dSMatt Arsenault; GFX940:       ; %bb.0:
27007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
27037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27057786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
27067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
27087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
27097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
27107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
27117786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
27127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27147786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
27157786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
27167786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>
27177786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
27187786266dSMatt Arsenault  ret void
27197786266dSMatt Arsenault}
27207786266dSMatt Arsenault
27217786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__2_3_3_3(ptr addrspace(1) inreg %ptr) {
27227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__2_3_3_3:
27237786266dSMatt Arsenault; GFX900:       ; %bb.0:
27247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
27267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27277786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
27287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
27307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
27317786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
27327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27347786266dSMatt Arsenault;
27357786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__2_3_3_3:
27367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
27397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
27417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
27437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
27447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
27457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27477786266dSMatt Arsenault;
27487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__2_3_3_3:
27497786266dSMatt Arsenault; GFX940:       ; %bb.0:
27507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27517786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
27527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27537786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
27547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27557786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
27567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
27577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
27587786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
27597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27617786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
27627786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
27637786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>
27647786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
27657786266dSMatt Arsenault  ret void
27667786266dSMatt Arsenault}
27677786266dSMatt Arsenault
27687786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_u_3_3(ptr addrspace(1) inreg %ptr) {
27697786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_u_3_3:
27707786266dSMatt Arsenault; GFX900:       ; %bb.0:
27717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
27737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27747786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
27757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27767786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
27777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
27787786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
27797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27817786266dSMatt Arsenault;
27827786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_u_3_3:
27837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27867786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
27877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, 0
27897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
27907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
27917786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]
27927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27947786266dSMatt Arsenault;
27957786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_u_3_3:
27967786266dSMatt Arsenault; GFX940:       ; %bb.0:
27977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
28007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28017786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, 0
28027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
28037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
28047786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1] sc0 sc1
28057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28077786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
28087786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
28097786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>
28107786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
28117786266dSMatt Arsenault  ret void
28127786266dSMatt Arsenault}
28137786266dSMatt Arsenault
28147786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_0_3_3(ptr addrspace(1) inreg %ptr) {
28157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_0_3_3:
28167786266dSMatt Arsenault; GFX900:       ; %bb.0:
28177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28197786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
28207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
28237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
28257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
28267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
28277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
28287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28307786266dSMatt Arsenault;
28317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_0_3_3:
28327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
28367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
28387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:5]
28407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
28427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
28437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
28447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
28457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28477786266dSMatt Arsenault;
28487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_0_3_3:
28497786266dSMatt Arsenault; GFX940:       ; %bb.0:
28507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
28537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
28557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:5]
28577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
28597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
28607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
28617786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
28627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28647786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
28657786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
28667786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>
28677786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
28687786266dSMatt Arsenault  ret void
28697786266dSMatt Arsenault}
28707786266dSMatt Arsenault
28717786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_1_3_3(ptr addrspace(1) inreg %ptr) {
28727786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_1_3_3:
28737786266dSMatt Arsenault; GFX900:       ; %bb.0:
28747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28767786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
28777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
28807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
28827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
28837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
28847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
28857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28877786266dSMatt Arsenault;
28887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_1_3_3:
28897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28927786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
28937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
28967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
28987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
28997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
29007786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
29017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29037786266dSMatt Arsenault;
29047786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_1_3_3:
29057786266dSMatt Arsenault; GFX940:       ; %bb.0:
29067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29087786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
29097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29117786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
29127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
29147786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
29157786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
29167786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
29177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29197786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
29207786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
29217786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>
29227786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
29237786266dSMatt Arsenault  ret void
29247786266dSMatt Arsenault}
29257786266dSMatt Arsenault
29267786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_2_3_3(ptr addrspace(1) inreg %ptr) {
29277786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_2_3_3:
29287786266dSMatt Arsenault; GFX900:       ; %bb.0:
29297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
29317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29327786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
29337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29347786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
29357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
29367786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
29377786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29397786266dSMatt Arsenault;
29407786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_2_3_3:
29417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29447786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
29457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
29477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
29487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
29497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
29507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
29517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29537786266dSMatt Arsenault;
29547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_2_3_3:
29557786266dSMatt Arsenault; GFX940:       ; %bb.0:
29567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
29597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
29617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
29627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
29637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
29647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
29657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29677786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
29687786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
29697786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>
29707786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
29717786266dSMatt Arsenault  ret void
29727786266dSMatt Arsenault}
29737786266dSMatt Arsenault
29747786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_u_3(ptr addrspace(1) inreg %ptr) {
29757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_u_3:
29767786266dSMatt Arsenault; GFX900:       ; %bb.0:
29777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
29807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, 0
29827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
29837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
29847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
29857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29877786266dSMatt Arsenault;
29887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_u_3:
29897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29927786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
29937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, 0
29957786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
29967786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
29977786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]
29987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29997786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30007786266dSMatt Arsenault;
30017786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_u_3:
30027786266dSMatt Arsenault; GFX940:       ; %bb.0:
30037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30057786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
30067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, 0
30087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
30097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
30107786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1] sc0 sc1
30117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30137786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
30147786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
30157786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>
30167786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
30177786266dSMatt Arsenault  ret void
30187786266dSMatt Arsenault}
30197786266dSMatt Arsenault
30207786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_0_3(ptr addrspace(1) inreg %ptr) {
30217786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_0_3:
30227786266dSMatt Arsenault; GFX900:       ; %bb.0:
30237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
30267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30287786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
30297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30307786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
30317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
30327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
30337786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
30347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30367786266dSMatt Arsenault;
30377786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_0_3:
30387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30417786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
30427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30447786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
30457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
30477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
30487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
30497786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
30507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30527786266dSMatt Arsenault;
30537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_0_3:
30547786266dSMatt Arsenault; GFX940:       ; %bb.0:
30557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30577786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
30587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
30617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
30637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
30647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
30657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
30667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30687786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
30697786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
30707786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>
30717786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
30727786266dSMatt Arsenault  ret void
30737786266dSMatt Arsenault}
30747786266dSMatt Arsenault
30757786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_1_3(ptr addrspace(1) inreg %ptr) {
30767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_1_3:
30777786266dSMatt Arsenault; GFX900:       ; %bb.0:
30787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:2]
30817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:1]
30847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
30867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
30877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
30887786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
30897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30907786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30917786266dSMatt Arsenault;
30927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_1_3:
30937786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
30977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30997786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:1]
31007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31017786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
31027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
31037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
31047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
31057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
31067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31087786266dSMatt Arsenault;
31097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_1_3:
31107786266dSMatt Arsenault; GFX940:       ; %bb.0:
31117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
31147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:1]
31177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
31197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
31207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
31217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
31227786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
31237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31247786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31257786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
31267786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
31277786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>
31287786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
31297786266dSMatt Arsenault  ret void
31307786266dSMatt Arsenault}
31317786266dSMatt Arsenault
31327786266dSMatt Arsenaultdefine void @v_shuffle_v4i32_v2i32__3_3_2_3(ptr addrspace(1) inreg %ptr) {
31337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v4i32_v2i32__3_3_2_3:
31347786266dSMatt Arsenault; GFX900:       ; %bb.0:
31357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
31377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31387786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:3]
31397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
31417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
31427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
31437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31457786266dSMatt Arsenault;
31467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v4i32_v2i32__3_3_2_3:
31477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
31507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:3]
31527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
31547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
31557786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
31567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31587786266dSMatt Arsenault;
31597786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v4i32_v2i32__3_3_2_3:
31607786266dSMatt Arsenault; GFX940:       ; %bb.0:
31617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
31637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31647786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:3]
31657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31667786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
31677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
31687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
31697786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
31707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31727786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=v"()
31737786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=v"()
31747786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>
31757786266dSMatt Arsenault  store <4 x i32> %shuf, ptr addrspace(1) %ptr, align 16
31767786266dSMatt Arsenault  ret void
31777786266dSMatt Arsenault}
31787786266dSMatt Arsenault
31797786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_u_u_u() {
3180*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_u_u_u:
3181*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3182*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3183*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3184*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3185*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3186*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
31877786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
31887786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> poison
3189*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
31907786266dSMatt Arsenault  ret void
31917786266dSMatt Arsenault}
31927786266dSMatt Arsenault
31937786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_u_u_u() {
31947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__0_u_u_u:
31957786266dSMatt Arsenault; GFX900:       ; %bb.0:
31967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3198*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
31997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3201*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
32027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32047786266dSMatt Arsenault;
32057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__0_u_u_u:
32067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3209*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
32107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3212*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
32137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32147786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32157786266dSMatt Arsenault;
32167786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__0_u_u_u:
32177786266dSMatt Arsenault; GFX940:       ; %bb.0:
32187786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3220*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
32217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32227786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
32237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3224*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
32257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32277786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
32287786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>
3229*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
32307786266dSMatt Arsenault  ret void
32317786266dSMatt Arsenault}
32327786266dSMatt Arsenault
32337786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_u_u_u() {
32347786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__1_u_u_u:
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[4:5]
32397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3240*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
32417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3242*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
32437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32457786266dSMatt Arsenault;
32467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__1_u_u_u:
32477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
32517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3252*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
32537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3254*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
32557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32567786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32577786266dSMatt Arsenault;
32587786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__1_u_u_u:
32597786266dSMatt Arsenault; GFX940:       ; %bb.0:
32607786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32627786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
32637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3264*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
32657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3266*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
32677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32687786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32697786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
32707786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
3271*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
32727786266dSMatt Arsenault  ret void
32737786266dSMatt Arsenault}
32747786266dSMatt Arsenault
32757786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_u_u_u() {
3276*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_u_u_u:
3277*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3278*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3279*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3280*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3281*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3282*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
32837786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
32847786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
3285*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
32867786266dSMatt Arsenault  ret void
32877786266dSMatt Arsenault}
32887786266dSMatt Arsenault
32897786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_u_u() {
32907786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_u_u_u:
32917786266dSMatt Arsenault; GFX900:       ; %bb.0:
32927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32947786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
32957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3296*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
32977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3298*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
32997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33017786266dSMatt Arsenault;
33027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_u_u_u:
33037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33067786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
33077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3308*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
33097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3310*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
33117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33137786266dSMatt Arsenault;
33147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_u_u_u:
33157786266dSMatt Arsenault; GFX940:       ; %bb.0:
33167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33187786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
33197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3320*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
33217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3322*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
33237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33247786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33257786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
33267786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
33277786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
3328*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
33297786266dSMatt Arsenault  ret void
33307786266dSMatt Arsenault}
33317786266dSMatt Arsenault
33327786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_u_u() {
33337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_u_u:
33347786266dSMatt Arsenault; GFX900:       ; %bb.0:
33357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33377786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
33387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33407786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
33417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3342*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
3343*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
33447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3345*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
33467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33487786266dSMatt Arsenault;
33497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_u_u:
33507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
33547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33567786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
33577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3358*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
3359*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
33607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3361*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
33627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33637786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33647786266dSMatt Arsenault;
33657786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_u_u:
33667786266dSMatt Arsenault; GFX940:       ; %bb.0:
33677786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33697786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
33707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33727786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
33737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3374*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
3375*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
33767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3377*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
33787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33807786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
33817786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
33827786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>
3383*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
33847786266dSMatt Arsenault  ret void
33857786266dSMatt Arsenault}
33867786266dSMatt Arsenault
33877786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_u_u() {
33887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_1_u_u:
33897786266dSMatt Arsenault; GFX900:       ; %bb.0:
33907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3392*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
3393*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3394*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33957786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
33967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3397*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
33987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3399*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
34007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34017786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34027786266dSMatt Arsenault;
34037786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_1_u_u:
34047786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3407*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
3408*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3409*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34107786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
34117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3412*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
34137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3414*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
34157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34177786266dSMatt Arsenault;
34187786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_1_u_u:
34197786266dSMatt Arsenault; GFX940:       ; %bb.0:
34207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3422*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
3423*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3424*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34257786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
34267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3427*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
34287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3429*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
34307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34327786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
34337786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
34347786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>
3435*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
34367786266dSMatt Arsenault  ret void
34377786266dSMatt Arsenault}
34387786266dSMatt Arsenault
34397786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_u_u() {
34407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_2_u_u:
34417786266dSMatt Arsenault; GFX900:       ; %bb.0:
34427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3444*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
34457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3446*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3447*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
34487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3449*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
34507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34527786266dSMatt Arsenault;
34537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_2_u_u:
34547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3457*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
34587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3459*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3460*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
34617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3462*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
34637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34657786266dSMatt Arsenault;
34667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_2_u_u:
34677786266dSMatt Arsenault; GFX940:       ; %bb.0:
34687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3470*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
34717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3472*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3473*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
34747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3475*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
34767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34787786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
34797786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
34807786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>
3481*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
34827786266dSMatt Arsenault  ret void
34837786266dSMatt Arsenault}
34847786266dSMatt Arsenault
34857786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_u() {
3486*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_u_u:
3487*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3488*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3489*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3490*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3491*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3492*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3493*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3494*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3495*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3496*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
34977786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
34987786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
34997786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>
3500*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
35017786266dSMatt Arsenault  ret void
35027786266dSMatt Arsenault}
35037786266dSMatt Arsenault
35047786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_u() {
3505*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_0_u:
3506*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3507*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3508*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3509*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3510*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3511*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3512*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3513*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3514*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3515*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3516*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3517*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3518*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
35197786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
35207786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
35217786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>
3522*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
35237786266dSMatt Arsenault  ret void
35247786266dSMatt Arsenault}
35257786266dSMatt Arsenault
35267786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_u() {
35277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_1_u:
35287786266dSMatt Arsenault; GFX900:       ; %bb.0:
35297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3531*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
35327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35347786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
35357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3536*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
3537*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
35387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3539*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
35407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35427786266dSMatt Arsenault;
35437786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_1_u:
35447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3547*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
35487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
35517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3552*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
3553*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
35547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3555*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
35567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35587786266dSMatt Arsenault;
35597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_1_u:
35607786266dSMatt Arsenault; GFX940:       ; %bb.0:
35617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3563*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
35647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35667786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
35677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3568*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
3569*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
35707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3571*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
35727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35747786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
35757786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
35767786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>
3577*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
35787786266dSMatt Arsenault  ret void
35797786266dSMatt Arsenault}
35807786266dSMatt Arsenault
35817786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_u() {
3582*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_2_u:
3583*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3584*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3585*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3586*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3587*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3588*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
3589*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
3590*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3591*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3592*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3593*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
35947786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
35957786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
35967786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>
3597*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
35987786266dSMatt Arsenault  ret void
35997786266dSMatt Arsenault}
36007786266dSMatt Arsenault
36017786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_u() {
3602*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_3_u:
3603*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3604*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3605*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3606*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3607*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3608*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3609*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3610*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3611*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3612*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3613*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36147786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
36157786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
36167786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>
3617*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
36187786266dSMatt Arsenault  ret void
36197786266dSMatt Arsenault}
36207786266dSMatt Arsenault
36217786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_0() {
36227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_3_0:
36237786266dSMatt Arsenault; GFX900:       ; %bb.0:
36247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36267786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
36277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3629*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
3630*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3631*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
3632*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
3633*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
3634*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3635*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
36367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36377786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36387786266dSMatt Arsenault;
36397786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_3_0:
36407786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36437786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
36447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3646*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
3647*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3648*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
3649*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
3650*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
3651*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3652*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
36537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36557786266dSMatt Arsenault;
36567786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_3_0:
36577786266dSMatt Arsenault; GFX940:       ; %bb.0:
36587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3660*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
3661*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3662*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36637786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
36647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3665*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
3666*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
3667*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
36687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3669*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
36707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36717786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36727786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
36737786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
36747786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>
3675*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
36767786266dSMatt Arsenault  ret void
36777786266dSMatt Arsenault}
36787786266dSMatt Arsenault
36797786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_1() {
3680*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_3_1:
3681*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3682*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3683*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3684*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3685*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3686*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3687*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3688*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3689*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3690*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3691*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3692*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3693*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3694*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36957786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
36967786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
36977786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>
3698*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
36997786266dSMatt Arsenault  ret void
37007786266dSMatt Arsenault}
37017786266dSMatt Arsenault
37027786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_2() {
37037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_3_2:
37047786266dSMatt Arsenault; GFX900:       ; %bb.0:
37057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3707*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
37087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3709*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3710*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
3711*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
3712*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
37137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3714*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
37157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37177786266dSMatt Arsenault;
37187786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_3_2:
37197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3722*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
37237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3724*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3725*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
3726*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
3727*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
37287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3729*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
37307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37317786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37327786266dSMatt Arsenault;
37337786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_3_2:
37347786266dSMatt Arsenault; GFX940:       ; %bb.0:
37357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3737*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
37387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3739*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3740*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
3741*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
3742*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
37437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3744*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
37457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37477786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
37487786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
37497786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>
3750*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
37517786266dSMatt Arsenault  ret void
37527786266dSMatt Arsenault}
37537786266dSMatt Arsenault
37547786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_3_3() {
3755*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_3_3:
3756*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3757*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3758*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3759*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3760*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3761*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
3762*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
3763*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
3764*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3765*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3766*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3767*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
37687786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
37697786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
37707786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
3771*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
37727786266dSMatt Arsenault  ret void
37737786266dSMatt Arsenault}
37747786266dSMatt Arsenault
37757786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_0_0_0() {
3776*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_0_0_0:
3777*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3778*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3779*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3780*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3781*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3782*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
3783*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
3784*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s8
3785*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3786*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3787*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3788*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
37897786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
37907786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>
3791*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
37927786266dSMatt Arsenault  ret void
37937786266dSMatt Arsenault}
37947786266dSMatt Arsenault
37957786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_0_0_0() {
3796*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__0_0_0_0:
3797*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3798*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3799*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3800*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3801*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3802*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
3803*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
3804*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s8
3805*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3806*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3807*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3808*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38097786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
38107786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> zeroinitializer
3811*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
38127786266dSMatt Arsenault  ret void
38137786266dSMatt Arsenault}
38147786266dSMatt Arsenault
38157786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_0_0_0() {
3816*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__1_0_0_0:
3817*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3818*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3819*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3820*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
3821*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3822*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
3823*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
3824*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
3825*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3826*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3827*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3828*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38297786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
38307786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
3831*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
38327786266dSMatt Arsenault  ret void
38337786266dSMatt Arsenault}
38347786266dSMatt Arsenault
38357786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_0_0_0() {
3836*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_0_0_0:
3837*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3838*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3839*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3840*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
3841*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3842*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
3843*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
3844*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s8
3845*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3846*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
3847*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3848*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38497786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
38507786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
3851*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
38527786266dSMatt Arsenault  ret void
38537786266dSMatt Arsenault}
38547786266dSMatt Arsenault
38557786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_0_0() {
38567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_0_0:
38577786266dSMatt Arsenault; GFX900:       ; %bb.0:
38587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3860*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
38617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
38647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3865*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3866*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
3867*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
38687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3869*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
38707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38727786266dSMatt Arsenault;
38737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_0_0:
38747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3877*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
38787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
38817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3882*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3883*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
3884*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
38857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3886*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
38877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38897786266dSMatt Arsenault;
38907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_0_0:
38917786266dSMatt Arsenault; GFX940:       ; %bb.0:
38927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3894*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
38957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38977786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
38987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3899*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3900*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s10
3901*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
39027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3903*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
39047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39067786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
39077786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
39087786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
3909*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
39107786266dSMatt Arsenault  ret void
39117786266dSMatt Arsenault}
39127786266dSMatt Arsenault
39137786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_0_0() {
39147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_u_0_0:
39157786266dSMatt Arsenault; GFX900:       ; %bb.0:
39167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3918*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
39197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39217786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
39227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3923*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3924*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
39257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3926*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
39277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39297786266dSMatt Arsenault;
39307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_u_0_0:
39317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3934*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
39357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39377786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
39387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3939*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3940*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
39417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3942*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
39437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39457786266dSMatt Arsenault;
39467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_u_0_0:
39477786266dSMatt Arsenault; GFX940:       ; %bb.0:
39487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3950*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
39517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
39547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3955*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
3956*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
39577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3958*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
39597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39617786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
39627786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
39637786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>
3964*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
39657786266dSMatt Arsenault  ret void
39667786266dSMatt Arsenault}
39677786266dSMatt Arsenault
39687786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_0_0() {
39697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_1_0_0:
39707786266dSMatt Arsenault; GFX900:       ; %bb.0:
39717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3973*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
39747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39767786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
39777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3978*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
3979*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
3980*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
39817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3982*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
39837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39857786266dSMatt Arsenault;
39867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_1_0_0:
39877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3990*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
39917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
39947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3995*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
3996*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
3997*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
39987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3999*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
40007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40027786266dSMatt Arsenault;
40037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_1_0_0:
40047786266dSMatt Arsenault; GFX940:       ; %bb.0:
40057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4007*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
40087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40107786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
40117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4012*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4013*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4014*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
40157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4016*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
40177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40197786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
40207786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
40217786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>
4022*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
40237786266dSMatt Arsenault  ret void
40247786266dSMatt Arsenault}
40257786266dSMatt Arsenault
40267786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_0_0() {
40277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_2_0_0:
40287786266dSMatt Arsenault; GFX900:       ; %bb.0:
40297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4031*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
40327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4034*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
40357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4036*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4037*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
4038*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
40397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4040*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
40417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40437786266dSMatt Arsenault;
40447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_2_0_0:
40457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4048*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
40497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4051*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
40527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4053*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4054*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
4055*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
40567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4057*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
40587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40607786266dSMatt Arsenault;
40617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_2_0_0:
40627786266dSMatt Arsenault; GFX940:       ; %bb.0:
40637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4065*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
40667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4068*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
40697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4070*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4071*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
4072*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
40737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4074*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
40757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40777786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
40787786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
40797786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>
4080*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
40817786266dSMatt Arsenault  ret void
40827786266dSMatt Arsenault}
40837786266dSMatt Arsenault
40847786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_0() {
4085*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_0_0:
4086*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4087*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4088*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4089*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4090*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4091*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4092*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4093*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4094*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4095*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4096*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4097*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4098*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4099*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
41007786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
41017786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
41027786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>
4103*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
41047786266dSMatt Arsenault  ret void
41057786266dSMatt Arsenault}
41067786266dSMatt Arsenault
41077786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_0() {
41087786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_u_0:
41097786266dSMatt Arsenault; GFX900:       ; %bb.0:
41107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4112*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
41137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41157786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
41167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4117*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
4118*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
41197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4120*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
41217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41227786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41237786266dSMatt Arsenault;
41247786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_u_0:
41257786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4128*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
41297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41317786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
41327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4133*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
4134*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
41357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4136*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
41377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41387786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41397786266dSMatt Arsenault;
41407786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_u_0:
41417786266dSMatt Arsenault; GFX940:       ; %bb.0:
41427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4144*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
41457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41477786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
41487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4149*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
4150*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
41517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4152*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
41537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41557786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
41567786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
41577786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>
4158*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
41597786266dSMatt Arsenault  ret void
41607786266dSMatt Arsenault}
41617786266dSMatt Arsenault
41627786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_0() {
41637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_1_0:
41647786266dSMatt Arsenault; GFX900:       ; %bb.0:
41657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41677786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
41687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4170*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
4171*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4172*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
4173*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
4174*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
4175*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4176*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
41777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41797786266dSMatt Arsenault;
41807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_1_0:
41817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41847786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
41857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4187*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
4188*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4189*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
4190*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
4191*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
4192*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4193*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
41947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41967786266dSMatt Arsenault;
41977786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_1_0:
41987786266dSMatt Arsenault; GFX940:       ; %bb.0:
41997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4201*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
4202*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4203*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42047786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
42057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4206*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
4207*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
4208*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
42097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4210*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
42117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42127786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42137786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
42147786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
42157786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>
4216*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
42177786266dSMatt Arsenault  ret void
42187786266dSMatt Arsenault}
42197786266dSMatt Arsenault
42207786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_0() {
42217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_2_0:
42227786266dSMatt Arsenault; GFX900:       ; %bb.0:
42237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4225*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
42267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4228*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
42297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4230*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
4231*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4232*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
42337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4234*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
42357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42377786266dSMatt Arsenault;
42387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_2_0:
42397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4242*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
42437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4245*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
42467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4247*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
4248*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4249*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
42507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4251*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
42527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42547786266dSMatt Arsenault;
42557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_2_0:
42567786266dSMatt Arsenault; GFX940:       ; %bb.0:
42577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4259*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
42607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4262*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
42637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4264*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s11
4265*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4266*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
42677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4268*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
42697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42717786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
42727786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
42737786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>
4274*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
42757786266dSMatt Arsenault  ret void
42767786266dSMatt Arsenault}
42777786266dSMatt Arsenault
42787786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_1_1_1() {
4279*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_1_1_1:
4280*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4281*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4282*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4283*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4284*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4285*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
4286*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4287*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4288*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4289*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4290*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
42917786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
42927786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>
4293*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
42947786266dSMatt Arsenault  ret void
42957786266dSMatt Arsenault}
42967786266dSMatt Arsenault
42977786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_1_1_1() {
4298*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__0_1_1_1:
4299*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4300*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4301*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4302*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4303*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4304*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
4305*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4306*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4307*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4308*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4309*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43107786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
43117786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>
4312*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
43137786266dSMatt Arsenault  ret void
43147786266dSMatt Arsenault}
43157786266dSMatt Arsenault
43167786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_1_1_1() {
4317*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__1_1_1_1:
4318*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4319*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4320*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4321*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4322*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4323*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4324*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
4325*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4326*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4327*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4328*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4329*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43307786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
43317786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
4332*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
43337786266dSMatt Arsenault  ret void
43347786266dSMatt Arsenault}
43357786266dSMatt Arsenault
43367786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_1_1_1() {
4337*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_1_1_1:
4338*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4339*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4340*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4341*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4342*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4343*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
4344*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
4345*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4346*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4347*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4348*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
43497786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
43507786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>
4351*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
43527786266dSMatt Arsenault  ret void
43537786266dSMatt Arsenault}
43547786266dSMatt Arsenault
43557786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_1_1() {
43567786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_1_1_1:
43577786266dSMatt Arsenault; GFX900:       ; %bb.0:
43587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4360*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
4361*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4362*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
43647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4365*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4366*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
4367*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
43687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4369*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
43707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
43717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
43727786266dSMatt Arsenault;
43737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_1_1_1:
43747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4377*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
4378*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4379*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
43807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
43817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4382*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4383*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
4384*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
43857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4386*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
43877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
43887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
43897786266dSMatt Arsenault;
43907786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_1_1_1:
43917786266dSMatt Arsenault; GFX940:       ; %bb.0:
43927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4394*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
4395*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4396*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43977786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
43987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4399*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4400*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
4401*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s9
44027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4403*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
44047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44067786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
44077786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
44087786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>
4409*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
44107786266dSMatt Arsenault  ret void
44117786266dSMatt Arsenault}
44127786266dSMatt Arsenault
44137786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_1_1() {
44147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_u_1_1:
44157786266dSMatt Arsenault; GFX900:       ; %bb.0:
44167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4418*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
44197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44217786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
44227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4423*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4424*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s11
44257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4426*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
44277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44297786266dSMatt Arsenault;
44307786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_u_1_1:
44317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4434*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
44357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44377786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
44387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4439*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4440*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s11
44417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4442*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
44437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44457786266dSMatt Arsenault;
44467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_u_1_1:
44477786266dSMatt Arsenault; GFX940:       ; %bb.0:
44487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4450*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
44517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
44547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4455*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4456*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s11
44577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4458*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
44597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44617786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
44627786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
44637786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>
4464*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
44657786266dSMatt Arsenault  ret void
44667786266dSMatt Arsenault}
44677786266dSMatt Arsenault
44687786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_1_1() {
44697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_1_1:
44707786266dSMatt Arsenault; GFX900:       ; %bb.0:
44717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4473*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
44747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44767786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
44777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4478*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4479*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
4480*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s11
44817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4482*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
44837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44857786266dSMatt Arsenault;
44867786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_1_1:
44877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4490*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
44917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
44947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4495*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4496*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
4497*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s11
44987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4499*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
45007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45027786266dSMatt Arsenault;
45037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_1_1:
45047786266dSMatt Arsenault; GFX940:       ; %bb.0:
45057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4507*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
45087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45107786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
45117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4512*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4513*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s10
4514*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s11
45157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4516*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
45177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45187786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45197786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
45207786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
45217786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>
4522*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
45237786266dSMatt Arsenault  ret void
45247786266dSMatt Arsenault}
45257786266dSMatt Arsenault
45267786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_1_1() {
45277786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_2_1_1:
45287786266dSMatt Arsenault; GFX900:       ; %bb.0:
45297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4531*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
45327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4534*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
45357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4536*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4537*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
4538*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s11
45397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4540*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
45417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45437786266dSMatt Arsenault;
45447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_2_1_1:
45457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4548*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
45497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4551*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
45527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4553*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4554*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
4555*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s11
45567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4557*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
45587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45607786266dSMatt Arsenault;
45617786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_2_1_1:
45627786266dSMatt Arsenault; GFX940:       ; %bb.0:
45637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4565*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
45667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4568*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
45697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4570*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4571*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
4572*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s11
45737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4574*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
45757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45777786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
45787786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
45797786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>
4580*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
45817786266dSMatt Arsenault  ret void
45827786266dSMatt Arsenault}
45837786266dSMatt Arsenault
45847786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_1() {
4585*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_1_1:
4586*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4587*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4588*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4589*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4590*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4591*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4592*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4593*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4594*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4595*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
4596*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4597*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4598*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4599*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
46007786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
46017786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
46027786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>
4603*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
46047786266dSMatt Arsenault  ret void
46057786266dSMatt Arsenault}
46067786266dSMatt Arsenault
46077786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_1() {
4608*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_u_1:
4609*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4610*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4611*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4612*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4613*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4614*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4615*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4616*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4617*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4618*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4619*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4620*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4621*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
46227786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
46237786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
46247786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>
4625*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
46267786266dSMatt Arsenault  ret void
46277786266dSMatt Arsenault}
46287786266dSMatt Arsenault
46297786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_1() {
4630*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_0_1:
4631*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4632*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4633*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4634*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4635*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4636*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4637*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4638*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4639*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
4640*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4641*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4642*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4643*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
46447786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
46457786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
46467786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>
4647*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
46487786266dSMatt Arsenault  ret void
46497786266dSMatt Arsenault}
46507786266dSMatt Arsenault
46517786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_1() {
46527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_2_1:
46537786266dSMatt Arsenault; GFX900:       ; %bb.0:
46547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4656*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
46577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4659*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
46607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4661*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
4662*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
4663*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
46647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4665*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
46667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46687786266dSMatt Arsenault;
46697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_2_1:
46707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4673*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
46747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4676*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
46777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4678*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
4679*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
4680*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
46817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4682*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
46837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46857786266dSMatt Arsenault;
46867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_2_1:
46877786266dSMatt Arsenault; GFX940:       ; %bb.0:
46887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4690*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
46917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4693*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
46947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4695*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s11
4696*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
4697*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
46987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4699*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
47007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47027786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
47037786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
47047786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>
4705*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
47067786266dSMatt Arsenault  ret void
47077786266dSMatt Arsenault}
47087786266dSMatt Arsenault
47097786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_2_2_2() {
4710*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_2_2_2:
4711*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4712*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4713*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4714*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4715*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4716*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
47177786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
47187786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>
4719*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
47207786266dSMatt Arsenault  ret void
47217786266dSMatt Arsenault}
47227786266dSMatt Arsenault
47237786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_2_2_2() {
47247786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__0_2_2_2:
47257786266dSMatt Arsenault; GFX900:       ; %bb.0:
47267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4728*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
47297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4731*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
47327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47347786266dSMatt Arsenault;
47357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__0_2_2_2:
47367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4739*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
47407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4742*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
47437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47457786266dSMatt Arsenault;
47467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__0_2_2_2:
47477786266dSMatt Arsenault; GFX940:       ; %bb.0:
47487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4750*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
47517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47527786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
47537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4754*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
47557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47567786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47577786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
47587786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>
4759*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
47607786266dSMatt Arsenault  ret void
47617786266dSMatt Arsenault}
47627786266dSMatt Arsenault
47637786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_2_2_2() {
47647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__1_2_2_2:
47657786266dSMatt Arsenault; GFX900:       ; %bb.0:
47667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
47687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
47697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4770*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
47717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4772*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
47737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47757786266dSMatt Arsenault;
47767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__1_2_2_2:
47777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
47817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4782*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
47837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4784*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
47857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47877786266dSMatt Arsenault;
47887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__1_2_2_2:
47897786266dSMatt Arsenault; GFX940:       ; %bb.0:
47907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47927786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
47937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4794*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
47957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4796*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
47977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47997786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
48007786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>
4801*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
48027786266dSMatt Arsenault  ret void
48037786266dSMatt Arsenault}
48047786266dSMatt Arsenault
48057786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_2_2_2() {
4806*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_2_2_2:
4807*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4808*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4809*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4810*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4811*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4812*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48137786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
48147786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>
4815*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
48167786266dSMatt Arsenault  ret void
48177786266dSMatt Arsenault}
48187786266dSMatt Arsenault
48197786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_2_2() {
4820*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_2_2_2:
4821*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4822*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4823*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4824*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4825*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4826*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4827*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
4828*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4829*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4830*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4831*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4832*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48337786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
48347786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
48357786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>
4836*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
48377786266dSMatt Arsenault  ret void
48387786266dSMatt Arsenault}
48397786266dSMatt Arsenault
48407786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_2_2() {
4841*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_u_2_2:
4842*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4843*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4844*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4845*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4846*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4847*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4848*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4849*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4850*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4851*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4852*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48537786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
48547786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
48557786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>
4856*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
48577786266dSMatt Arsenault  ret void
48587786266dSMatt Arsenault}
48597786266dSMatt Arsenault
48607786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_2_2() {
48617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_2_2:
48627786266dSMatt Arsenault; GFX900:       ; %bb.0:
48637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4865*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
48667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4868*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
48697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4870*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
4871*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
4872*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s10
48737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4874*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
48757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48777786266dSMatt Arsenault;
48787786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_2_2:
48797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4882*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
48837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4885*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
48867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4887*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
4888*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
4889*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s10
48907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4891*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
48927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48947786266dSMatt Arsenault;
48957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_2_2:
48967786266dSMatt Arsenault; GFX940:       ; %bb.0:
48977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4899*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
49007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4902*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
49037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4904*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s11
4905*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
4906*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s10
49077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4908*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
49097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49117786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
49127786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
49137786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>
4914*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
49157786266dSMatt Arsenault  ret void
49167786266dSMatt Arsenault}
49177786266dSMatt Arsenault
49187786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_2_2() {
4919*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_1_2_2:
4920*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4921*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4922*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4923*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
4924*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4925*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4926*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4927*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4928*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4929*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4930*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4931*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4932*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4933*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
49347786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
49357786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
49367786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>
4937*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
49387786266dSMatt Arsenault  ret void
49397786266dSMatt Arsenault}
49407786266dSMatt Arsenault
49417786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_2() {
4942*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_2_2:
4943*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4944*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4945*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4946*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
4947*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4948*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
4949*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
4950*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s10
4951*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4952*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
4953*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4954*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
49557786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
49567786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
49577786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>
4958*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
49597786266dSMatt Arsenault  ret void
49607786266dSMatt Arsenault}
49617786266dSMatt Arsenault
49627786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_2() {
49637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_u_2:
49647786266dSMatt Arsenault; GFX900:       ; %bb.0:
49657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4967*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
49687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4969*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
4970*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
4971*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
49727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4973*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
49747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49767786266dSMatt Arsenault;
49777786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_u_2:
49787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4981*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
49827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4983*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
4984*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
4985*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
49867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4987*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
49887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49907786266dSMatt Arsenault;
49917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_u_2:
49927786266dSMatt Arsenault; GFX940:       ; %bb.0:
49937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4995*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
49967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4997*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
4998*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
4999*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
50007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5001*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
50027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50047786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
50057786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
50067786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>
5007*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
50087786266dSMatt Arsenault  ret void
50097786266dSMatt Arsenault}
50107786266dSMatt Arsenault
50117786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_2() {
50127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_0_2:
50137786266dSMatt Arsenault; GFX900:       ; %bb.0:
50147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5016*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
50177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5019*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
50207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5021*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
5022*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
5023*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s4
50247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5025*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
50267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50287786266dSMatt Arsenault;
50297786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_0_2:
50307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5033*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
50347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5036*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
50377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5038*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
5039*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
5040*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s4
50417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5042*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
50437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50447786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50457786266dSMatt Arsenault;
50467786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_0_2:
50477786266dSMatt Arsenault; GFX940:       ; %bb.0:
50487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5050*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
50517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5053*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
50547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5055*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
5056*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
5057*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s0
50587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5059*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
50607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50627786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
50637786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
50647786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>
5065*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
50667786266dSMatt Arsenault  ret void
50677786266dSMatt Arsenault}
50687786266dSMatt Arsenault
50697786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_2() {
50707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_1_2:
50717786266dSMatt Arsenault; GFX900:       ; %bb.0:
50727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5074*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
5075*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5076*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50777786266dSMatt Arsenault; GFX900-NEXT:    ; def s[6:7]
50787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5079*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s7
5080*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
5081*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
5082*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s6
50837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5084*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
50857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50877786266dSMatt Arsenault;
50887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_1_2:
50897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5092*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
5093*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5094*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50957786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[6:7]
50967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5097*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s7
5098*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
5099*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
5100*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s6
51017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5102*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
51037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51057786266dSMatt Arsenault;
51067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_1_2:
51077786266dSMatt Arsenault; GFX940:       ; %bb.0:
51087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5110*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
5111*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5112*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51137786266dSMatt Arsenault; GFX940-NEXT:    ; def s[2:3]
51147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5115*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s3
5116*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
5117*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
5118*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s2
51197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5120*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
51217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51237786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
51247786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
51257786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>
5126*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
51277786266dSMatt Arsenault  ret void
51287786266dSMatt Arsenault}
51297786266dSMatt Arsenault
51307786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__u_3_3_3() {
5131*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__u_3_3_3:
5132*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5133*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5134*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5135*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5136*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5137*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5138*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5139*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5140*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5141*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5142*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
51437786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
51447786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
51457786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>
5146*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
51477786266dSMatt Arsenault  ret void
51487786266dSMatt Arsenault}
51497786266dSMatt Arsenault
51507786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__0_3_3_3() {
5151*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__0_3_3_3:
5152*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5153*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5154*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5155*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5156*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5157*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5158*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5159*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5160*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
5161*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
5162*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5163*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5164*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5165*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
51667786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
51677786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
51687786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>
5169*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
51707786266dSMatt Arsenault  ret void
51717786266dSMatt Arsenault}
51727786266dSMatt Arsenault
51737786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__1_3_3_3() {
51747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__1_3_3_3:
51757786266dSMatt Arsenault; GFX900:       ; %bb.0:
51767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5178*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
51797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51817786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
51827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5183*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
5184*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
5185*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
51867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5187*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
51887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51907786266dSMatt Arsenault;
51917786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__1_3_3_3:
51927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5195*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
51967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51987786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
51997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5200*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
5201*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
5202*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
52037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5204*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
52057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52077786266dSMatt Arsenault;
52087786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__1_3_3_3:
52097786266dSMatt Arsenault; GFX940:       ; %bb.0:
52107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5212*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
52137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
52157786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
52167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5217*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
5218*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
5219*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s9
52207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5221*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
52227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52237786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52247786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
52257786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
52267786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>
5227*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
52287786266dSMatt Arsenault  ret void
52297786266dSMatt Arsenault}
52307786266dSMatt Arsenault
52317786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__2_3_3_3() {
5232*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__2_3_3_3:
5233*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5234*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5235*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5236*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5237*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5238*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5239*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5240*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5241*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5242*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5243*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52447786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
52457786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
52467786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>
5247*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
52487786266dSMatt Arsenault  ret void
52497786266dSMatt Arsenault}
52507786266dSMatt Arsenault
52517786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_u_3_3() {
5252*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_u_3_3:
5253*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5254*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5255*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5256*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5257*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5258*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
5259*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
5260*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5261*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5262*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5263*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52647786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
52657786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
52667786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>
5267*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
52687786266dSMatt Arsenault  ret void
52697786266dSMatt Arsenault}
52707786266dSMatt Arsenault
52717786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_0_3_3() {
52727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_0_3_3:
52737786266dSMatt Arsenault; GFX900:       ; %bb.0:
52747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5276*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[10:11]
52777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5279*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
52807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5281*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s11
5282*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
5283*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s11
52847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5285*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
52867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52887786266dSMatt Arsenault;
52897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_0_3_3:
52907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5293*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[10:11]
52947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5296*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
52977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5298*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s11
5299*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
5300*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s11
53017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5302*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
53037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53057786266dSMatt Arsenault;
53067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_0_3_3:
53077786266dSMatt Arsenault; GFX940:       ; %bb.0:
53087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5310*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[10:11]
53117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5313*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
53147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5315*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s11
5316*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
5317*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s11
53187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5319*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
53207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53227786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
53237786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
53247786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>
5325*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
53267786266dSMatt Arsenault  ret void
53277786266dSMatt Arsenault}
53287786266dSMatt Arsenault
53297786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_1_3_3() {
5330*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_1_3_3:
5331*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5332*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5333*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5334*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5335*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5336*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5337*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5338*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5339*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
5340*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
5341*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5342*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5343*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5344*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
53457786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
53467786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
53477786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>
5348*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
53497786266dSMatt Arsenault  ret void
53507786266dSMatt Arsenault}
53517786266dSMatt Arsenault
53527786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_2_3_3() {
5353*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_2_3_3:
5354*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5355*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5356*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5357*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5358*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5359*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
5360*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
5361*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s11
5362*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5363*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5364*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5365*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
53667786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
53677786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
53687786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>
5369*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
53707786266dSMatt Arsenault  ret void
53717786266dSMatt Arsenault}
53727786266dSMatt Arsenault
53737786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_u_3() {
5374*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_u_3:
5375*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5376*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5377*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5378*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5379*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5380*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
5381*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5382*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5383*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5384*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5385*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
53867786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
53877786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
53887786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>
5389*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
53907786266dSMatt Arsenault  ret void
53917786266dSMatt Arsenault}
53927786266dSMatt Arsenault
53937786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_0_3() {
5394*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_0_3:
5395*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5396*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5397*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5398*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5399*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5400*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5401*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:9]
5402*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5403*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
5404*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
5405*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5406*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5407*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5408*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
54097786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
54107786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
54117786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>
5412*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
54137786266dSMatt Arsenault  ret void
54147786266dSMatt Arsenault}
54157786266dSMatt Arsenault
54167786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_1_3() {
54177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v4i32_v2i32__3_3_1_3:
54187786266dSMatt Arsenault; GFX900:       ; %bb.0:
54197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5421*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:9]
54227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54247786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:5]
54257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5426*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
5427*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
5428*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s9
54297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5430*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:11]
54317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54337786266dSMatt Arsenault;
54347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v4i32_v2i32__3_3_1_3:
54357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5438*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:9]
54397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:5]
54427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5443*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
5444*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
5445*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s9
54467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5447*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:11]
54487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54507786266dSMatt Arsenault;
54517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v4i32_v2i32__3_3_1_3:
54527786266dSMatt Arsenault; GFX940:       ; %bb.0:
54537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5455*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:9]
54567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
54587786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:1]
54597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5460*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s9
5461*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
5462*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s9
54637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5464*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:11]
54657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54677786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
54687786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
54697786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>
5470*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
54717786266dSMatt Arsenault  ret void
54727786266dSMatt Arsenault}
54737786266dSMatt Arsenault
54747786266dSMatt Arsenaultdefine void @s_shuffle_v4i32_v2i32__3_3_2_3() {
5475*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v4i32_v2i32__3_3_2_3:
5476*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5477*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5478*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5479*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[10:11]
5480*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5481*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s11
5482*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
5483*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5484*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:11]
5485*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5486*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
54877786266dSMatt Arsenault  %vec0 = call <2 x i32> asm "; def $0", "=s"()
54887786266dSMatt Arsenault  %vec1 = call <2 x i32> asm "; def $0", "=s"()
54897786266dSMatt Arsenault  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>
5490*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x i32> %shuf)
54917786266dSMatt Arsenault  ret void
54927786266dSMatt Arsenault}
54937786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
54947786266dSMatt Arsenault; GFX90APLUS: {{.*}}
5495