xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v3i32.v3i32.ll (revision 585858aeb6247b3892218edb9d353c63f1c33186)
17786266dSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
27786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s
37786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s
47786266dSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX940 %s
57786266dSMatt Arsenault
67786266dSMatt Arsenault
77786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v3i32__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 <3 x i32> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> poison
147786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_u_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_u_u:
207786266dSMatt Arsenault; GFX900:       ; %bb.0:
217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
297786266dSMatt Arsenault;
307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_u_u:
317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
407786266dSMatt Arsenault;
417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_u_u:
427786266dSMatt Arsenault; GFX940:       ; %bb.0:
437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
517786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison>
537786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_u_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_u_u:
597786266dSMatt Arsenault; GFX900:       ; %bb.0:
607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
627786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
677786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
697786266dSMatt Arsenault;
707786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_u_u:
717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
817786266dSMatt Arsenault;
827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_u_u:
837786266dSMatt Arsenault; GFX940:       ; %bb.0:
847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
937786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
947786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
957786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
967786266dSMatt Arsenault  ret void
977786266dSMatt Arsenault}
987786266dSMatt Arsenault
997786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_u_u(ptr addrspace(1) inreg %ptr) {
1007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_u_u:
1017786266dSMatt Arsenault; GFX900:       ; %bb.0:
1027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
1057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1087786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1117786266dSMatt Arsenault;
1127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_u_u:
1137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
1177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1237786266dSMatt Arsenault;
1247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_u_u:
1257786266dSMatt Arsenault; GFX940:       ; %bb.0:
1267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
1297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
1337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1357786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
1367786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
1377786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
1387786266dSMatt Arsenault  ret void
1397786266dSMatt Arsenault}
1407786266dSMatt Arsenault
1417786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_u_u(ptr addrspace(1) inreg %ptr) {
1427786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v3i32__3_u_u:
1437786266dSMatt Arsenault; GFX9:       ; %bb.0:
1447786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1457786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1467786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
1477786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 poison, i32 poison>
1487786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
1497786266dSMatt Arsenault  ret void
1507786266dSMatt Arsenault}
1517786266dSMatt Arsenault
1527786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_u_u(ptr addrspace(1) inreg %ptr) {
1537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_u_u:
1547786266dSMatt Arsenault; GFX900:       ; %bb.0:
1557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
1587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
1607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
1617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1647786266dSMatt Arsenault;
1657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_u_u:
1667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
1707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
1727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
1737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
1747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1767786266dSMatt Arsenault;
1777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_u_u:
1787786266dSMatt Arsenault; GFX940:       ; %bb.0:
1797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
1827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
1847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
1857786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
1867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1887786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
1897786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
1907786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 poison, i32 poison>
1917786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
1927786266dSMatt Arsenault  ret void
1937786266dSMatt Arsenault}
1947786266dSMatt Arsenault
1957786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_u(ptr addrspace(1) inreg %ptr) {
1967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_u:
1977786266dSMatt Arsenault; GFX900:       ; %bb.0:
1987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
2017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
2037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
2047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
2057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2077786266dSMatt Arsenault;
2087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_u:
2097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
2137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
2157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
2167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
2177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2197786266dSMatt Arsenault;
2207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_u:
2217786266dSMatt Arsenault; GFX940:       ; %bb.0:
2227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2247786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
2257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
2277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
2287786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
2297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2317786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
2327786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
2337786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>
2347786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
2357786266dSMatt Arsenault  ret void
2367786266dSMatt Arsenault}
2377786266dSMatt Arsenault
2387786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_u(ptr addrspace(1) inreg %ptr) {
2397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_u:
2407786266dSMatt Arsenault; GFX900:       ; %bb.0:
2417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2437786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
2447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
2477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
2497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
2507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
2517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
2527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2547786266dSMatt Arsenault;
2557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_u:
2567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2597786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
2607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
2637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
2657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
2667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
2677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
2687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2707786266dSMatt Arsenault;
2717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_u:
2727786266dSMatt Arsenault; GFX940:       ; %bb.0:
2737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
2767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
2787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
2807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2817786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
2837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
2847786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
2857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2867786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2877786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
2887786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
2897786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 poison>
2907786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
2917786266dSMatt Arsenault  ret void
2927786266dSMatt Arsenault}
2937786266dSMatt Arsenault
2947786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_u(ptr addrspace(1) inreg %ptr) {
2957786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_u:
2967786266dSMatt Arsenault; GFX900:       ; %bb.0:
2977786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
3007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
3027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
3047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
3067786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
3077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3087786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3097786266dSMatt Arsenault;
3107786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_u:
3117786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
3157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
3177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
3197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
3217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
3227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3247786266dSMatt Arsenault;
3257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_u:
3267786266dSMatt Arsenault; GFX940:       ; %bb.0:
3277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
3307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
3327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
3347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3357786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
3367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
3377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
3387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3407786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
3417786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
3427786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 poison>
3437786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
3447786266dSMatt Arsenault  ret void
3457786266dSMatt Arsenault}
3467786266dSMatt Arsenault
3477786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_u(ptr addrspace(1) inreg %ptr) {
3487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_u:
3497786266dSMatt Arsenault; GFX900:       ; %bb.0:
3507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
3537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3567786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
3577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
3597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
3607786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
3617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3637786266dSMatt Arsenault;
3647786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_u:
3657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
3697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
3717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3727786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
3737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
3757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
3767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
3777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3797786266dSMatt Arsenault;
3807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_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:2]
3857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
3877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
3897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
3917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
3927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
3937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3957786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
3967786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
3977786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 poison>
3987786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
3997786266dSMatt Arsenault  ret void
4007786266dSMatt Arsenault}
4017786266dSMatt Arsenault
4027786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_u(ptr addrspace(1) inreg %ptr) {
4037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_u:
4047786266dSMatt Arsenault; GFX900:       ; %bb.0:
4057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
4087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
4117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
4127786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[1:3], s[16:17]
4137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4157786266dSMatt Arsenault;
4167786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_u:
4177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
4207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
4227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
4247786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v4, v[2:4], s[16:17]
4257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4277786266dSMatt Arsenault;
4287786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_u:
4297786266dSMatt Arsenault; GFX940:       ; %bb.0:
4307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
4327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
4347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4357786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
4367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
4377786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v4, v[2:4], s[0:1] sc0 sc1
4387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4407786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
4417786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
4427786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 poison>
4437786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
4447786266dSMatt Arsenault  ret void
4457786266dSMatt Arsenault}
4467786266dSMatt Arsenault
4477786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_u(ptr addrspace(1) inreg %ptr) {
4487786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_u:
4497786266dSMatt Arsenault; GFX900:       ; %bb.0:
4507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4527786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
4537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
4567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
4577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4597786266dSMatt Arsenault;
4607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_u:
4617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
4657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
4677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
4687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
4697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4717786266dSMatt Arsenault;
4727786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_u:
4737786266dSMatt Arsenault; GFX940:       ; %bb.0:
4747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4767786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
4777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
4797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
4807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
4817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4837786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
4847786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
4857786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 poison>
4867786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
4877786266dSMatt Arsenault  ret void
4887786266dSMatt Arsenault}
4897786266dSMatt Arsenault
4907786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_u(ptr addrspace(1) inreg %ptr) {
4917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_u:
4927786266dSMatt Arsenault; GFX900:       ; %bb.0:
4937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
4967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
4987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
4997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
5007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
5017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5037786266dSMatt Arsenault;
5047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_u:
5057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
5097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
5117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
5127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
5137786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
5147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5167786266dSMatt Arsenault;
5177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_u:
5187786266dSMatt Arsenault; GFX940:       ; %bb.0:
5197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
5227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
5247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
5257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
5267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
5277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5297786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
5307786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
5317786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 poison>
5327786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
5337786266dSMatt Arsenault  ret void
5347786266dSMatt Arsenault}
5357786266dSMatt Arsenault
5367786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_0(ptr addrspace(1) inreg %ptr) {
5377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_0:
5387786266dSMatt Arsenault; GFX900:       ; %bb.0:
5397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5417786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
5427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
5457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
5487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
5497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
5507786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
5517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5537786266dSMatt Arsenault;
5547786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_0:
5557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5587786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
5597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5617786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
5627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
5647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
5657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
5667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
5677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
5687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5707786266dSMatt Arsenault;
5717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_0:
5727786266dSMatt Arsenault; GFX940:       ; %bb.0:
5737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
5767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
5787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
5807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5817786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
5827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
5837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
5847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
5857786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
5867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5887786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
5897786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
5907786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 0>
5917786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
5927786266dSMatt Arsenault  ret void
5937786266dSMatt Arsenault}
5947786266dSMatt Arsenault
5957786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_1(ptr addrspace(1) inreg %ptr) {
5967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_1:
5977786266dSMatt Arsenault; GFX900:       ; %bb.0:
5987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
6017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
6047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
6067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
6077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v4
6087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v1
6097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
6107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6127786266dSMatt Arsenault;
6137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_1:
6147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
6187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6207786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
6217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
6237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
6247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
6257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v1
6267786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
6277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6297786266dSMatt Arsenault;
6307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_1:
6317786266dSMatt Arsenault; GFX940:       ; %bb.0:
6327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
6357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
6377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
6397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6407786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
6417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
6427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
6437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v1
6447786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
6457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6477786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
6487786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
6497786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 1>
6507786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
6517786266dSMatt Arsenault  ret void
6527786266dSMatt Arsenault}
6537786266dSMatt Arsenault
6547786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_2(ptr addrspace(1) inreg %ptr) {
6557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_2:
6567786266dSMatt Arsenault; GFX900:       ; %bb.0:
6577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
6607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
6627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
6647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
6667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
6677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
6687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6707786266dSMatt Arsenault;
6717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_2:
6727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6757786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
6767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
6787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
6807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
6827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v6
6837786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
6847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6867786266dSMatt Arsenault;
6877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_2:
6887786266dSMatt Arsenault; GFX940:       ; %bb.0:
6897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
6927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
6947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
6967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6977786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
6987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
6997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v6
7007786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
7017786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7027786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7037786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
7047786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
7057786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 2>
7067786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
7077786266dSMatt Arsenault  ret void
7087786266dSMatt Arsenault}
7097786266dSMatt Arsenault
7107786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_3(ptr addrspace(1) inreg %ptr) {
7117786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_3:
7127786266dSMatt Arsenault; GFX900:       ; %bb.0:
7137786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
7167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
7197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
7207786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
7217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7227786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7237786266dSMatt Arsenault;
7247786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_3:
7257786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7277786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
7287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
7307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
7327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v2
7337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
7347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
7357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7377786266dSMatt Arsenault;
7387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_3:
7397786266dSMatt Arsenault; GFX940:       ; %bb.0:
7407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
7427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7437786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
7447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7457786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
7467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
7477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v2
7487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
7497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
7507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7527786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
7537786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
7547786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 3>
7557786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
7567786266dSMatt Arsenault  ret void
7577786266dSMatt Arsenault}
7587786266dSMatt Arsenault
7597786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_4(ptr addrspace(1) inreg %ptr) {
7607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_4:
7617786266dSMatt Arsenault; GFX900:       ; %bb.0:
7627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
7647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
7667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
7687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
7697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
7707786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
7717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7727786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7737786266dSMatt Arsenault;
7747786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_4:
7757786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
7787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
7807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
7827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v2
7837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v1
7847786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
7857786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7877786266dSMatt Arsenault;
7887786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_4:
7897786266dSMatt Arsenault; GFX940:       ; %bb.0:
7907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
7927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7937786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
7947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7957786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
7967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
7977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v2
7987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v1
7997786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
8007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8027786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
8037786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
8047786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 4>
8057786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
8067786266dSMatt Arsenault  ret void
8077786266dSMatt Arsenault}
8087786266dSMatt Arsenault
8097786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_5_5(ptr addrspace(1) inreg %ptr) {
8107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_5:
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:2]
8157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
8177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
8187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
8197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
8207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8227786266dSMatt Arsenault;
8237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_5:
8247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
8287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
8307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
8317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
8327786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
8337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8347786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8357786266dSMatt Arsenault;
8367786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_5_5:
8377786266dSMatt Arsenault; GFX940:       ; %bb.0:
8387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8407786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
8417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
8437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
8447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
8457786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
8467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8477786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8487786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
8497786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
8507786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 5>
8517786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
8527786266dSMatt Arsenault  ret void
8537786266dSMatt Arsenault}
8547786266dSMatt Arsenault
8557786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_0_0(ptr addrspace(1) inreg %ptr) {
8567786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_0_0:
8577786266dSMatt Arsenault; GFX900:       ; %bb.0:
8587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8607786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
8617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
8637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
8647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
8657786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
8667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8687786266dSMatt Arsenault;
8697786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_0_0:
8707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
8747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
8767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
8777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
8787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
8797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8817786266dSMatt Arsenault;
8827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_0_0:
8837786266dSMatt Arsenault; GFX940:       ; %bb.0:
8847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
8877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
8897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
8907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
8917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
8927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8947786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
8957786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0>
8967786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
8977786266dSMatt Arsenault  ret void
8987786266dSMatt Arsenault}
8997786266dSMatt Arsenault
9007786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_0_0(ptr addrspace(1) inreg %ptr) {
9017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_0_0:
9027786266dSMatt Arsenault; GFX900:       ; %bb.0:
9037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
9067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
9087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
9097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
9107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
9117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9137786266dSMatt Arsenault;
9147786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_0_0:
9157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9187786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
9197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
9217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
9227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
9237786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
9247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9267786266dSMatt Arsenault;
9277786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_0_0:
9287786266dSMatt Arsenault; GFX940:       ; %bb.0:
9297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
9327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
9347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
9357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
9367786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
9377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9397786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
9407786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> zeroinitializer
9417786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
9427786266dSMatt Arsenault  ret void
9437786266dSMatt Arsenault}
9447786266dSMatt Arsenault
9457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_0_0(ptr addrspace(1) inreg %ptr) {
9467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_0_0:
9477786266dSMatt Arsenault; GFX900:       ; %bb.0:
9487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
9517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
9537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
9547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
9557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
9567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9587786266dSMatt Arsenault;
9597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_0_0:
9607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
9647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
9667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
9677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
9687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
9697786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
9707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9727786266dSMatt Arsenault;
9737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_0_0:
9747786266dSMatt Arsenault; GFX940:       ; %bb.0:
9757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9777786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
9787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
9807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
9817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
9827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
9837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
9847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9867786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
9877786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0>
9887786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
9897786266dSMatt Arsenault  ret void
9907786266dSMatt Arsenault}
9917786266dSMatt Arsenault
9927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_0_0(ptr addrspace(1) inreg %ptr) {
9937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_0_0:
9947786266dSMatt Arsenault; GFX900:       ; %bb.0:
9957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
9987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
10017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
10027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
10037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
10047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10067786266dSMatt Arsenault;
10077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_0_0:
10087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
10117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
10137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
10157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
10167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
10177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10197786266dSMatt Arsenault;
10207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_0_0:
10217786266dSMatt Arsenault; GFX940:       ; %bb.0:
10227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
10247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
10267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10277786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
10297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
10307786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
10317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10337786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
10347786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0>
10357786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
10367786266dSMatt Arsenault  ret void
10377786266dSMatt Arsenault}
10387786266dSMatt Arsenault
10397786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_0_0(ptr addrspace(1) inreg %ptr) {
10407786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_0_0:
10417786266dSMatt Arsenault; GFX900:       ; %bb.0:
10427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10447786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
10457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10467786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
10477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v0
10487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
10497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
10507786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10527786266dSMatt Arsenault;
10537786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_0_0:
10547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10577786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
10587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
10607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v0
10617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
10627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
10637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10657786266dSMatt Arsenault;
10667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_0_0:
10677786266dSMatt Arsenault; GFX940:       ; %bb.0:
10687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
10717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
10737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v0
10747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
10757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
10767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10787786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
10797786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 0, i32 0>
10807786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
10817786266dSMatt Arsenault  ret void
10827786266dSMatt Arsenault}
10837786266dSMatt Arsenault
10847786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_0_0(ptr addrspace(1) inreg %ptr) {
10857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_0_0:
10867786266dSMatt Arsenault; GFX900:       ; %bb.0:
10877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10897786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
10907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
10937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
10967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
10977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
10987786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
10997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11017786266dSMatt Arsenault;
11027786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_0_0:
11037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
11077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
11107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
11127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
11137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
11147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
11157786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
11167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11187786266dSMatt Arsenault;
11197786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_0_0:
11207786266dSMatt Arsenault; GFX940:       ; %bb.0:
11217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
11247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
11267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
11287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11297786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
11307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
11317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
11327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
11337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
11347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11367786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
11377786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
11387786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 0, i32 0>
11397786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
11407786266dSMatt Arsenault  ret void
11417786266dSMatt Arsenault}
11427786266dSMatt Arsenault
11437786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_0(ptr addrspace(1) inreg %ptr) {
11447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_0:
11457786266dSMatt Arsenault; GFX900:       ; %bb.0:
11467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11487786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
11497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
11527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
11557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
11567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
11577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
11587786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11607786266dSMatt Arsenault;
11617786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_0:
11627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11657786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
11667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11687786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
11697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
11717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
11727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
11737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
11747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
11757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11777786266dSMatt Arsenault;
11787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_0:
11797786266dSMatt Arsenault; GFX940:       ; %bb.0:
11807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
11837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
11857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
11877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11887786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
11897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
11907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
11917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
11927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
11937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11957786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
11967786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
11977786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 0>
11987786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
11997786266dSMatt Arsenault  ret void
12007786266dSMatt Arsenault}
12017786266dSMatt Arsenault
12027786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_0(ptr addrspace(1) inreg %ptr) {
12037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_0:
12047786266dSMatt Arsenault; GFX900:       ; %bb.0:
12057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
12087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
12117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
12137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
12147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
12157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
12167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12187786266dSMatt Arsenault;
12197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_0:
12207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
12247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
12277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
12297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
12307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
12317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
12327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12347786266dSMatt Arsenault;
12357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_0:
12367786266dSMatt Arsenault; GFX940:       ; %bb.0:
12377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
12407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
12427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12437786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
12447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12457786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
12467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
12477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
12487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
12497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12517786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
12527786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
12537786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 0>
12547786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
12557786266dSMatt Arsenault  ret void
12567786266dSMatt Arsenault}
12577786266dSMatt Arsenault
12587786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_0(ptr addrspace(1) inreg %ptr) {
12597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_0:
12607786266dSMatt Arsenault; GFX900:       ; %bb.0:
12617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
12647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
12677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
12697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
12707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
12717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
12727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
12737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12757786266dSMatt Arsenault;
12767786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_0:
12777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
12817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12837786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
12847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
12867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
12877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
12887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
12897786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
12907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12927786266dSMatt Arsenault;
12937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_0:
12947786266dSMatt Arsenault; GFX940:       ; %bb.0:
12957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
12987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
13007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
13027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13037786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
13047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
13057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
13067786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
13077786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
13087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13097786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13107786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
13117786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
13127786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 0>
13137786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
13147786266dSMatt Arsenault  ret void
13157786266dSMatt Arsenault}
13167786266dSMatt Arsenault
13177786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_0(ptr addrspace(1) inreg %ptr) {
13187786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_0:
13197786266dSMatt Arsenault; GFX900:       ; %bb.0:
13207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
13237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
13267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
13287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
13297786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
13307786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[1:3], s[16:17]
13317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13337786266dSMatt Arsenault;
13347786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_0:
13357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13387786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
13397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
13417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
13437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
13457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v2
13467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
13477786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
13487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13507786266dSMatt Arsenault;
13517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_0:
13527786266dSMatt Arsenault; GFX940:       ; %bb.0:
13537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
13567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
13587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13597786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
13607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
13627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v2
13637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
13647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
13657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13677786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
13687786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
13697786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 0>
13707786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
13717786266dSMatt Arsenault  ret void
13727786266dSMatt Arsenault}
13737786266dSMatt Arsenault
13747786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_0(ptr addrspace(1) inreg %ptr) {
13757786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_0:
13767786266dSMatt Arsenault; GFX900:       ; %bb.0:
13777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
13807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13827786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
13837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
13857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
13867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
13877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
13887786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
13897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13907786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13917786266dSMatt Arsenault;
13927786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_0:
13937786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
13977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
13997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
14017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v2
14037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v0
14047786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v7, v[4:6], s[16:17]
14057786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14067786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14077786266dSMatt Arsenault;
14087786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_0:
14097786266dSMatt Arsenault; GFX940:       ; %bb.0:
14107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14127786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
14137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14147786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, 0
14157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14167786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
14177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v0
14197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v2
14207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
14217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14237786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
14247786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
14257786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 0>
14267786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
14277786266dSMatt Arsenault  ret void
14287786266dSMatt Arsenault}
14297786266dSMatt Arsenault
14307786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_0(ptr addrspace(1) inreg %ptr) {
14317786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_0:
14327786266dSMatt Arsenault; GFX900:       ; %bb.0:
14337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14357786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
14367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14387786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
14397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
14427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
14437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
14447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14467786266dSMatt Arsenault;
14477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_0:
14487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
14527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
14557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
14577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
14587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
14597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
14607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14627786266dSMatt Arsenault;
14637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_0:
14647786266dSMatt Arsenault; GFX940:       ; %bb.0:
14657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14677786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
14687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
14707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14717786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
14727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14737786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
14747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
14757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
14767786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
14777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14797786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
14807786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
14817786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 0>
14827786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
14837786266dSMatt Arsenault  ret void
14847786266dSMatt Arsenault}
14857786266dSMatt Arsenault
14867786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_1_1(ptr addrspace(1) inreg %ptr) {
14877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_1_1:
14887786266dSMatt Arsenault; GFX900:       ; %bb.0:
14897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14917786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
14927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
14947786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
14957786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
14967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14987786266dSMatt Arsenault;
14997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_1_1:
15007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15037786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
15047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
15067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
15077786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
15087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15107786266dSMatt Arsenault;
15117786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_1_1:
15127786266dSMatt Arsenault; GFX940:       ; %bb.0:
15137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15157786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
15167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
15187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
15197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
15207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15227786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
15237786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1>
15247786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
15257786266dSMatt Arsenault  ret void
15267786266dSMatt Arsenault}
15277786266dSMatt Arsenault
15287786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_1_1(ptr addrspace(1) inreg %ptr) {
15297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_1_1:
15307786266dSMatt Arsenault; GFX900:       ; %bb.0:
15317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
15347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
15367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
15377786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
15387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15407786266dSMatt Arsenault;
15417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_1_1:
15427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
15467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
15487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
15497786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
15507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15517786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15527786266dSMatt Arsenault;
15537786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_1_1:
15547786266dSMatt Arsenault; GFX940:       ; %bb.0:
15557786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15577786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
15587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
15607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
15617786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
15627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15647786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
15657786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1>
15667786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
15677786266dSMatt Arsenault  ret void
15687786266dSMatt Arsenault}
15697786266dSMatt Arsenault
15707786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_1_1(ptr addrspace(1) inreg %ptr) {
15717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_1_1:
15727786266dSMatt Arsenault; GFX900:       ; %bb.0:
15737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
15767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
15787786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
15797786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
15807786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
15817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15827786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15837786266dSMatt Arsenault;
15847786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_1_1:
15857786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15867786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15887786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
15897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
15917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
15927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
15937786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
15947786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15957786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15967786266dSMatt Arsenault;
15977786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_1_1:
15987786266dSMatt Arsenault; GFX940:       ; %bb.0:
15997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
16027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
16047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
16057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
16067786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
16077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16097786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
16107786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1>
16117786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
16127786266dSMatt Arsenault  ret void
16137786266dSMatt Arsenault}
16147786266dSMatt Arsenault
16157786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_1_1(ptr addrspace(1) inreg %ptr) {
16167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_1_1:
16177786266dSMatt Arsenault; GFX900:       ; %bb.0:
16187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16207786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
16217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
16237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
16247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
16257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
16267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16287786266dSMatt Arsenault;
16297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_1_1:
16307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16337786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
16347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
16367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
16377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
16387786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
16397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16417786266dSMatt Arsenault;
16427786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_1_1:
16437786266dSMatt Arsenault; GFX940:       ; %bb.0:
16447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
16477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
16497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
16507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
16517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
16527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16547786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
16557786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1>
16567786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
16577786266dSMatt Arsenault  ret void
16587786266dSMatt Arsenault}
16597786266dSMatt Arsenault
16607786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_1_1(ptr addrspace(1) inreg %ptr) {
16617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_1_1:
16627786266dSMatt Arsenault; GFX900:       ; %bb.0:
16637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
16667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
16687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
16697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
16707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16727786266dSMatt Arsenault;
16737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_1_1:
16747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
16787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
16807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
16817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
16827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16847786266dSMatt Arsenault;
16857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_1_1:
16867786266dSMatt Arsenault; GFX940:       ; %bb.0:
16877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
16907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
16927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
16937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
16947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16967786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
16977786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 1, i32 1>
16987786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
16997786266dSMatt Arsenault  ret void
17007786266dSMatt Arsenault}
17017786266dSMatt Arsenault
17027786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_1_1(ptr addrspace(1) inreg %ptr) {
17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_1_1:
17047786266dSMatt Arsenault; GFX900:       ; %bb.0:
17057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17077786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
17087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
17117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
17137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v3
17147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
17157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
17167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17187786266dSMatt Arsenault;
17197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_1_1:
17207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
17247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
17277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
17297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v3
17307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
17317786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
17327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17347786266dSMatt Arsenault;
17357786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_1_1:
17367786266dSMatt Arsenault; GFX940:       ; %bb.0:
17377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
17407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
17427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17437786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
17447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17457786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
17467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v3
17477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
17487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
17497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17517786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
17527786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
17537786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 1, i32 1>
17547786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
17557786266dSMatt Arsenault  ret void
17567786266dSMatt Arsenault}
17577786266dSMatt Arsenault
17587786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_1(ptr addrspace(1) inreg %ptr) {
17597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_1:
17607786266dSMatt Arsenault; GFX900:       ; %bb.0:
17617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
17647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
17677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
17697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
17707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
17717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
17727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17747786266dSMatt Arsenault;
17757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_1:
17767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
17807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
17837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
17857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
17867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
17877786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
17887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17907786266dSMatt Arsenault;
17917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_1:
17927786266dSMatt Arsenault; GFX940:       ; %bb.0:
17937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
17967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
17987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17997786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
18007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18017786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
18037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
18047786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
18057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18077786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
18087786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
18097786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 1>
18107786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
18117786266dSMatt Arsenault  ret void
18127786266dSMatt Arsenault}
18137786266dSMatt Arsenault
18147786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_1(ptr addrspace(1) inreg %ptr) {
18157786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_1:
18167786266dSMatt Arsenault; GFX900:       ; %bb.0:
18177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18197786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
18207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
18237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
18257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
18267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
18277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
18287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18307786266dSMatt Arsenault;
18317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_1:
18327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
18367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18387786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
18397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
18417786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
18427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
18437786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
18447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18467786266dSMatt Arsenault;
18477786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_1:
18487786266dSMatt Arsenault; GFX940:       ; %bb.0:
18497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18517786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
18527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
18547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
18567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18577786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
18587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
18597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
18607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
18617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18637786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
18647786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
18657786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 1>
18667786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
18677786266dSMatt Arsenault  ret void
18687786266dSMatt Arsenault}
18697786266dSMatt Arsenault
18707786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_1(ptr addrspace(1) inreg %ptr) {
18717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_1:
18727786266dSMatt Arsenault; GFX900:       ; %bb.0:
18737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
18767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18787786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
18797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
18817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
18827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
18837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v1
18847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
18857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18877786266dSMatt Arsenault;
18887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_1:
18897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18927786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
18937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
18967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
18987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
18997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
19007786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v1
19017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], 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_v3i32_v3i32__5_0_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:2]
19107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
19127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
19147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19157786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
19167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
19177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
19187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v1
19197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
19207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19227786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
19237786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
19247786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 1>
19257786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
19267786266dSMatt Arsenault  ret void
19277786266dSMatt Arsenault}
19287786266dSMatt Arsenault
19297786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_1(ptr addrspace(1) inreg %ptr) {
19307786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_1:
19317786266dSMatt Arsenault; GFX900:       ; %bb.0:
19327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
19357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
19377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19387786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
19397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
19417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
19427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
19437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
19447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19467786266dSMatt Arsenault;
19477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_1:
19487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
19527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
19547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19557786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
19567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
19587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v2
19597786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v1
19607786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
19617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19637786266dSMatt Arsenault;
19647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_1:
19657786266dSMatt Arsenault; GFX940:       ; %bb.0:
19667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
19697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
19717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19727786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
19737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19747786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
19757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v2
19767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v1
19777786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
19787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19797786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19807786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
19817786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
19827786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 1>
19837786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
19847786266dSMatt Arsenault  ret void
19857786266dSMatt Arsenault}
19867786266dSMatt Arsenault
19877786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_1(ptr addrspace(1) inreg %ptr) {
19887786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_1:
19897786266dSMatt Arsenault; GFX900:       ; %bb.0:
19907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
19937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
19967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
19987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v4
19997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
20007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
20017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
20027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20047786266dSMatt Arsenault;
20057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_1:
20067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
20107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
20127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
20147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v2
20167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v1
20177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v7, v[4:6], s[16:17]
20187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20207786266dSMatt Arsenault;
20217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_1:
20227786266dSMatt Arsenault; GFX940:       ; %bb.0:
20237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20257786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
20267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, 0
20287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
20307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v1
20327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v2
20337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
20347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20367786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
20377786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
20387786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 1>
20397786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
20407786266dSMatt Arsenault  ret void
20417786266dSMatt Arsenault}
20427786266dSMatt Arsenault
20437786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_1(ptr addrspace(1) inreg %ptr) {
20447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_1:
20457786266dSMatt Arsenault; GFX900:       ; %bb.0:
20467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20487786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
20497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
20527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
20547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
20557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v1
20567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
20577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20597786266dSMatt Arsenault;
20607786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_1:
20617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20647786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
20657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
20687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
20707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
20717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v1
20727786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
20737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20747786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20757786266dSMatt Arsenault;
20767786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_1:
20777786266dSMatt Arsenault; GFX940:       ; %bb.0:
20787786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20807786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
20817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
20837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
20857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20867786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
20877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
20887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v1
20897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
20907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20927786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
20937786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
20947786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 1>
20957786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
20967786266dSMatt Arsenault  ret void
20977786266dSMatt Arsenault}
20987786266dSMatt Arsenault
20997786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_2_2(ptr addrspace(1) inreg %ptr) {
21007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_2_2:
21017786266dSMatt Arsenault; GFX900:       ; %bb.0:
21027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
21057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
21077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
21087786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
21097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21117786266dSMatt Arsenault;
21127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_2_2:
21137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
21177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
21197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
21207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
21217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21237786266dSMatt Arsenault;
21247786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_2_2:
21257786266dSMatt Arsenault; GFX940:       ; %bb.0:
21267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
21297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
21317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
21327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
21337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21357786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
21367786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2>
21377786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
21387786266dSMatt Arsenault  ret void
21397786266dSMatt Arsenault}
21407786266dSMatt Arsenault
21417786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_2_2(ptr addrspace(1) inreg %ptr) {
21427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_2_2:
21437786266dSMatt Arsenault; GFX900:       ; %bb.0:
21447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
21477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
21497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
21507786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], 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_v3i32_v3i32__0_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[0:2]
21597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
21617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
21627786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
21637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21657786266dSMatt Arsenault;
21667786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_2_2:
21677786266dSMatt Arsenault; GFX940:       ; %bb.0:
21687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21707786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
21717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
21737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
21747786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
21757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21777786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
21787786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2>
21797786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
21807786266dSMatt Arsenault  ret void
21817786266dSMatt Arsenault}
21827786266dSMatt Arsenault
21837786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_2_2(ptr addrspace(1) inreg %ptr) {
21847786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_2_2:
21857786266dSMatt Arsenault; GFX900:       ; %bb.0:
21867786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21887786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
21897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
21917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
21927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
21937786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
21947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21967786266dSMatt Arsenault;
21977786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_2_2:
21987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
22027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
22047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
22057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
22067786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
22077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22097786266dSMatt Arsenault;
22107786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_2_2:
22117786266dSMatt Arsenault; GFX940:       ; %bb.0:
22127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
22157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
22177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
22187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
22197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
22207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22227786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
22237786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2>
22247786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
22257786266dSMatt Arsenault  ret void
22267786266dSMatt Arsenault}
22277786266dSMatt Arsenault
22287786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_2_2(ptr addrspace(1) inreg %ptr) {
22297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_2_2:
22307786266dSMatt Arsenault; GFX900:       ; %bb.0:
22317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
22347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
22367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
22377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
22387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
22397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22407786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22417786266dSMatt Arsenault;
22427786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_2_2:
22437786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22447786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
22477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
22497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
22507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
22517786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
22527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22547786266dSMatt Arsenault;
22557786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_2_2:
22567786266dSMatt Arsenault; GFX940:       ; %bb.0:
22577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22597786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
22607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
22627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
22637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
22647786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
22657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
22667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22677786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
22687786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2>
22697786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
22707786266dSMatt Arsenault  ret void
22717786266dSMatt Arsenault}
22727786266dSMatt Arsenault
22737786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_2_2(ptr addrspace(1) inreg %ptr) {
22747786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_2_2:
22757786266dSMatt Arsenault; GFX900:       ; %bb.0:
22767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22787786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
22797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
22817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
22827786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
22837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
22847786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22857786266dSMatt Arsenault;
22867786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_2_2:
22877786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22907786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
22917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22927786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
22937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
22947786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
22957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
22967786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22977786266dSMatt Arsenault;
22987786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_2_2:
22997786266dSMatt Arsenault; GFX940:       ; %bb.0:
23007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
23037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
23057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
23067786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
23077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23097786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
23107786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 2, i32 2>
23117786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
23127786266dSMatt Arsenault  ret void
23137786266dSMatt Arsenault}
23147786266dSMatt Arsenault
23157786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_2_2(ptr addrspace(1) inreg %ptr) {
23167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_2_2:
23177786266dSMatt Arsenault; GFX900:       ; %bb.0:
23187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23207786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
23217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
23237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
23257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
23277786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
23287786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
23297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23317786266dSMatt Arsenault;
23327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_2_2:
23337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23367786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
23377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
23397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23407786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
23417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v5
23437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
23447786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
23457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
23467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23477786266dSMatt Arsenault;
23487786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_2_2:
23497786266dSMatt Arsenault; GFX940:       ; %bb.0:
23507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23527786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
23537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
23557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23567786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
23577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
23597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v5
23607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
23617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
23627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23637786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
23647786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
23657786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 2, i32 2>
23667786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
23677786266dSMatt Arsenault  ret void
23687786266dSMatt Arsenault}
23697786266dSMatt Arsenault
23707786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_2(ptr addrspace(1) inreg %ptr) {
23717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_2:
23727786266dSMatt Arsenault; GFX900:       ; %bb.0:
23737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
23767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23777786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
23787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
23807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
23827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
23837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
23847786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
23857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23867786266dSMatt Arsenault;
23877786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_2:
23887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23917786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
23927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
23947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
23967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
23987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
23997786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
24007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24027786266dSMatt Arsenault;
24037786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_2:
24047786266dSMatt Arsenault; GFX940:       ; %bb.0:
24057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24077786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
24087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
24107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24117786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
24127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
24147786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
24157786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
24167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24177786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24187786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
24197786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
24207786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 2>
24217786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
24227786266dSMatt Arsenault  ret void
24237786266dSMatt Arsenault}
24247786266dSMatt Arsenault
24257786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_2(ptr addrspace(1) inreg %ptr) {
24267786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_2:
24277786266dSMatt Arsenault; GFX900:       ; %bb.0:
24287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
24317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
24337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24347786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
24357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
24377786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
24387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24397786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24407786266dSMatt Arsenault;
24417786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_2:
24427786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24437786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24457786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
24467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24477786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
24487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24497786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
24507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
24527786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
24537786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
24547786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24557786266dSMatt Arsenault;
24567786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_2:
24577786266dSMatt Arsenault; GFX940:       ; %bb.0:
24587786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24607786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
24617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
24637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24647786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
24657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24667786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
24677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
24687786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
24697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
24707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24717786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
24727786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
24737786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 2>
24747786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
24757786266dSMatt Arsenault  ret void
24767786266dSMatt Arsenault}
24777786266dSMatt Arsenault
24787786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_2(ptr addrspace(1) inreg %ptr) {
24797786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_2:
24807786266dSMatt Arsenault; GFX900:       ; %bb.0:
24817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
24847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
24867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24877786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
24887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
24907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
24917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v2
24927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
24937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
24947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24957786266dSMatt Arsenault;
24967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_2:
24977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
25017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
25037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25047786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
25057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
25077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v0
25087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
25097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
25107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25127786266dSMatt Arsenault;
25137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_2:
25147786266dSMatt Arsenault; GFX940:       ; %bb.0:
25157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
25187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
25207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
25227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
25247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v0
25257786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
25267786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
25277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25297786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
25307786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
25317786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 2>
25327786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
25337786266dSMatt Arsenault  ret void
25347786266dSMatt Arsenault}
25357786266dSMatt Arsenault
25367786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_2(ptr addrspace(1) inreg %ptr) {
25377786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_2:
25387786266dSMatt Arsenault; GFX900:       ; %bb.0:
25397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25417786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
25427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
25447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25457786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
25467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25477786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
25487786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
25497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
25507786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25517786266dSMatt Arsenault;
25527786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_2:
25537786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25567786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
25577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
25597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
25617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
25637786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
25647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
25657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25667786266dSMatt Arsenault;
25677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_2:
25687786266dSMatt Arsenault; GFX940:       ; %bb.0:
25697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25717786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
25727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25737786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
25747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
25767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25777786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
25787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
25797786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
25807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
25817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25827786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
25837786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
25847786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 2>
25857786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
25867786266dSMatt Arsenault  ret void
25877786266dSMatt Arsenault}
25887786266dSMatt Arsenault
25897786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_2(ptr addrspace(1) inreg %ptr) {
25907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_2:
25917786266dSMatt Arsenault; GFX900:       ; %bb.0:
25927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25947786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
25957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
25977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
25997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
26017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
26027786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
26037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26047786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26057786266dSMatt Arsenault;
26067786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_2:
26077786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26087786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26107786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
26117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
26137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26147786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
26157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
26177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
26187786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
26197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26217786266dSMatt Arsenault;
26227786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_2:
26237786266dSMatt Arsenault; GFX940:       ; %bb.0:
26247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
26277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
26297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26307786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
26317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26327786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
26337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
26347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
26357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
26367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26387786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
26397786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
26407786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 2>
26417786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
26427786266dSMatt Arsenault  ret void
26437786266dSMatt Arsenault}
26447786266dSMatt Arsenault
26457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_2(ptr addrspace(1) inreg %ptr) {
26467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_2:
26477786266dSMatt Arsenault; GFX900:       ; %bb.0:
26487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
26517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
26537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
26547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
26557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
26577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v2
26587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
26597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
26607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26617786266dSMatt Arsenault;
26627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_2:
26637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
26677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
26697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
26717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
26737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
26747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
26757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
26767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26777786266dSMatt Arsenault;
26787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_2:
26797786266dSMatt Arsenault; GFX940:       ; %bb.0:
26807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
26837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
26857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
26877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
26897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
26907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
26917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
26927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26937786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
26947786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
26957786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 2>
26967786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
26977786266dSMatt Arsenault  ret void
26987786266dSMatt Arsenault}
26997786266dSMatt Arsenault
27007786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_3_3(ptr addrspace(1) inreg %ptr) {
27017786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v3i32__u_3_3:
27027786266dSMatt Arsenault; GFX9:       ; %bb.0:
27037786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27047786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
27057786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
27067786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 3, i32 3>
27077786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
27087786266dSMatt Arsenault  ret void
27097786266dSMatt Arsenault}
27107786266dSMatt Arsenault
27117786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_3_3(ptr addrspace(1) inreg %ptr) {
27127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_3_3:
27137786266dSMatt Arsenault; GFX900:       ; %bb.0:
27147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
27167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27177786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
27187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27197786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
27207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27217786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27227786266dSMatt Arsenault;
27237786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_3_3:
27247786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27257786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
27277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
27297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
27317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27337786266dSMatt Arsenault;
27347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_3_3:
27357786266dSMatt Arsenault; GFX940:       ; %bb.0:
27367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
27387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
27407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27417786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
27427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27447786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
27457786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 3, i32 3>
27467786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
27477786266dSMatt Arsenault  ret void
27487786266dSMatt Arsenault}
27497786266dSMatt Arsenault
27507786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_3_3(ptr addrspace(1) inreg %ptr) {
27517786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_3_3:
27527786266dSMatt Arsenault; GFX900:       ; %bb.0:
27537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27557786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
27567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
27587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
27597786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
27607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
27617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27627786266dSMatt Arsenault;
27637786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_3_3:
27647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27677786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
27687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
27707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
27717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
27727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
27737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27747786266dSMatt Arsenault;
27757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_3_3:
27767786266dSMatt Arsenault; GFX940:       ; %bb.0:
27777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
27807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
27827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
27837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
27847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
27857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27867786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
27877786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 3, i32 3>
27887786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
27897786266dSMatt Arsenault  ret void
27907786266dSMatt Arsenault}
27917786266dSMatt Arsenault
27927786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_3_3(ptr addrspace(1) inreg %ptr) {
27937786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_3_3:
27947786266dSMatt Arsenault; GFX900:       ; %bb.0:
27957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27977786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
27987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
28007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
28017786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
28027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28047786266dSMatt Arsenault;
28057786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_3_3:
28067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
28107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
28127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
28137786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
28147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28167786266dSMatt Arsenault;
28177786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_3_3:
28187786266dSMatt Arsenault; GFX940:       ; %bb.0:
28197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28217786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
28227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
28247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
28257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
28267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28287786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
28297786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 3, i32 3>
28307786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
28317786266dSMatt Arsenault  ret void
28327786266dSMatt Arsenault}
28337786266dSMatt Arsenault
28347786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_3_3(ptr addrspace(1) inreg %ptr) {
28357786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3i32_v3i32__3_3_3:
28367786266dSMatt Arsenault; GFX9:       ; %bb.0:
28377786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28387786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
28397786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
28407786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 3, i32 3>
28417786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
28427786266dSMatt Arsenault  ret void
28437786266dSMatt Arsenault}
28447786266dSMatt Arsenault
28457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_3_3(ptr addrspace(1) inreg %ptr) {
28467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_3_3:
28477786266dSMatt Arsenault; GFX900:       ; %bb.0:
28487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
28517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
28537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
28547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
28557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
28567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
28577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28587786266dSMatt Arsenault;
28597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_3_3:
28607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
28647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
28667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
28677786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
28687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
28697786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
28707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
28717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28727786266dSMatt Arsenault;
28737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_3_3:
28747786266dSMatt Arsenault; GFX940:       ; %bb.0:
28757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28777786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
28787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
28807786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
28817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
28827786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
28837786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
28847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
28857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28867786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
28877786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
28887786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 3, i32 3>
28897786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
28907786266dSMatt Arsenault  ret void
28917786266dSMatt Arsenault}
28927786266dSMatt Arsenault
28937786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_3(ptr addrspace(1) inreg %ptr) {
28947786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_3:
28957786266dSMatt Arsenault; GFX900:       ; %bb.0:
28967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28987786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
28997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29007786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
29017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
29027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
29037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
29047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
29057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29077786266dSMatt Arsenault;
29087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_3:
29097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29117786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
29127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29137786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
29147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
29167786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
29177786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
29187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29207786266dSMatt Arsenault;
29217786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_3:
29227786266dSMatt Arsenault; GFX940:       ; %bb.0:
29237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
29257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29267786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
29277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29287786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
29297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
29307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
29317786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
29327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29347786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
29357786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
29367786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 3>
29377786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
29387786266dSMatt Arsenault  ret void
29397786266dSMatt Arsenault}
29407786266dSMatt Arsenault
29417786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_3(ptr addrspace(1) inreg %ptr) {
29427786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_3:
29437786266dSMatt Arsenault; GFX900:       ; %bb.0:
29447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
29477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
29497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
29507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
29517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
29527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
29537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29547786266dSMatt Arsenault;
29557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_3:
29567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
29597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
29617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
29637786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[2:4], s[16:17]
29647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
29657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29667786266dSMatt Arsenault;
29677786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_3:
29687786266dSMatt Arsenault; GFX940:       ; %bb.0:
29697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
29717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29727786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
29737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29747786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
29757786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
29767786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[2:4], s[0:1] sc0 sc1
29777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
29787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29797786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
29807786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
29817786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 3>
29827786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
29837786266dSMatt Arsenault  ret void
29847786266dSMatt Arsenault}
29857786266dSMatt Arsenault
29867786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_3(ptr addrspace(1) inreg %ptr) {
29877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_3:
29887786266dSMatt Arsenault; GFX900:       ; %bb.0:
29897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29917786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
29927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29947786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
29957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
29977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
29987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
29997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v1
30007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
30017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30037786266dSMatt Arsenault;
30047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_3:
30057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30087786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
30097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
30117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
30137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v0
30157786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
30167786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v7, v[4:6], s[16:17]
30177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30187786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30197786266dSMatt Arsenault;
30207786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_3:
30217786266dSMatt Arsenault; GFX940:       ; %bb.0:
30227786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30247786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
30257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, 0
30277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30287786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
30297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30307786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v0
30317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
30327786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
30337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30357786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
30367786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
30377786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 3>
30387786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
30397786266dSMatt Arsenault  ret void
30407786266dSMatt Arsenault}
30417786266dSMatt Arsenault
30427786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_3(ptr addrspace(1) inreg %ptr) {
30437786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_3:
30447786266dSMatt Arsenault; GFX900:       ; %bb.0:
30457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
30487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
30507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
30527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
30547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
30557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
30567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30577786266dSMatt Arsenault;
30587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_3:
30597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
30637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
30657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
30677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
30697786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
30707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
30717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30727786266dSMatt Arsenault;
30737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_3:
30747786266dSMatt Arsenault; GFX940:       ; %bb.0:
30757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30777786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
30787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
30807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
30827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30837786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
30847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
30857786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
30867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
30877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30887786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
30897786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
30907786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 3>
30917786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
30927786266dSMatt Arsenault  ret void
30937786266dSMatt Arsenault}
30947786266dSMatt Arsenault
30957786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_3(ptr addrspace(1) inreg %ptr) {
30967786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_3:
30977786266dSMatt Arsenault; GFX900:       ; %bb.0:
30987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31007786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
31017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
31037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31047786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
31057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
31077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
31087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
31097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
31107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31127786266dSMatt Arsenault;
31137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_3:
31147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
31187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
31207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31217786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
31227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
31247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
31257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
31267786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
31277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31297786266dSMatt Arsenault;
31307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_3:
31317786266dSMatt Arsenault; GFX940:       ; %bb.0:
31327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
31357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
31377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
31397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
31417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
31427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
31437786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
31447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31467786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
31477786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
31487786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 3>
31497786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
31507786266dSMatt Arsenault  ret void
31517786266dSMatt Arsenault}
31527786266dSMatt Arsenault
31537786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_3(ptr addrspace(1) inreg %ptr) {
31547786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_3:
31557786266dSMatt Arsenault; GFX900:       ; %bb.0:
31567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
31587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
31607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
31627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
31637786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
31647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
31657786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31667786266dSMatt Arsenault;
31677786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_3:
31687786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
31717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31727786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
31737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
31757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
31767786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
31777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
31787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31797786266dSMatt Arsenault;
31807786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_3:
31817786266dSMatt Arsenault; GFX940:       ; %bb.0:
31827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
31847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
31867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31877786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
31887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
31897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
31907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
31917786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
31927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31937786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
31947786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
31957786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 3>
31967786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
31977786266dSMatt Arsenault  ret void
31987786266dSMatt Arsenault}
31997786266dSMatt Arsenault
32007786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_4_4(ptr addrspace(1) inreg %ptr) {
32017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_4_4:
32027786266dSMatt Arsenault; GFX900:       ; %bb.0:
32037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
32067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
32087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
32097786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
32107786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32117786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32127786266dSMatt Arsenault;
32137786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_4_4:
32147786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32177786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
32187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
32207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
32217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
32227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32247786266dSMatt Arsenault;
32257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_4_4:
32267786266dSMatt Arsenault; GFX940:       ; %bb.0:
32277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
32307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
32327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
32337786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
32347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32357786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32367786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
32377786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
32387786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 4, i32 4>
32397786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
32407786266dSMatt Arsenault  ret void
32417786266dSMatt Arsenault}
32427786266dSMatt Arsenault
32437786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_4_4(ptr addrspace(1) inreg %ptr) {
32447786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_4_4:
32457786266dSMatt Arsenault; GFX900:       ; %bb.0:
32467786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32487786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
32497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
32527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
32547786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
32557786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
32567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
32577786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32587786266dSMatt Arsenault;
32597786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_4_4:
32607786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
32647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
32677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32687786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
32697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
32707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
32717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
32727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
32737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32747786266dSMatt Arsenault;
32757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_4_4:
32767786266dSMatt Arsenault; GFX940:       ; %bb.0:
32777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32797786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
32807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32817786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
32827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32837786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
32847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
32857786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
32867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
32877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
32887786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
32897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
32907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
32917786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
32927786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
32937786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 4, i32 4>
32947786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
32957786266dSMatt Arsenault  ret void
32967786266dSMatt Arsenault}
32977786266dSMatt Arsenault
32987786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_4_4(ptr addrspace(1) inreg %ptr) {
32997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_4_4:
33007786266dSMatt Arsenault; GFX900:       ; %bb.0:
33017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
33047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
33077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
33097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
33107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v3
33117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
33127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33147786266dSMatt Arsenault;
33157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_4_4:
33167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
33207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
33237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
33257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
33267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v3
33277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
33287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33307786266dSMatt Arsenault;
33317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_4_4:
33327786266dSMatt Arsenault; GFX940:       ; %bb.0:
33337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
33367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
33387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
33407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33417786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
33427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
33437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v3
33447786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
33457786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
33467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33477786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
33487786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
33497786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 4, i32 4>
33507786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
33517786266dSMatt Arsenault  ret void
33527786266dSMatt Arsenault}
33537786266dSMatt Arsenault
33547786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_4_4(ptr addrspace(1) inreg %ptr) {
33557786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_4_4:
33567786266dSMatt Arsenault; GFX900:       ; %bb.0:
33577786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33597786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
33607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
33627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
33647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
33667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v4
33677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
33687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
33697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33707786266dSMatt Arsenault;
33717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_4_4:
33727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33757786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
33767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
33787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33797786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
33807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
33827786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v5
33837786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
33847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
33857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33867786266dSMatt Arsenault;
33877786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_4_4:
33887786266dSMatt Arsenault; GFX940:       ; %bb.0:
33897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
33927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
33947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
33967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v5
33987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
33997786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
34007786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34027786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
34037786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
34047786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 4, i32 4>
34057786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
34067786266dSMatt Arsenault  ret void
34077786266dSMatt Arsenault}
34087786266dSMatt Arsenault
34097786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_4_4(ptr addrspace(1) inreg %ptr) {
34107786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_4_4:
34117786266dSMatt Arsenault; GFX900:       ; %bb.0:
34127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34147786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
34157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
34177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
34187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
34197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34217786266dSMatt Arsenault;
34227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_4_4:
34237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
34277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
34297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
34307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
34317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34337786266dSMatt Arsenault;
34347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_4_4:
34357786266dSMatt Arsenault; GFX940:       ; %bb.0:
34367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34387786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
34397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34407786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
34417786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
34427786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
34437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34447786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34457786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
34467786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
34477786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 4, i32 4>
34487786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
34497786266dSMatt Arsenault  ret void
34507786266dSMatt Arsenault}
34517786266dSMatt Arsenault
34527786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_4_4(ptr addrspace(1) inreg %ptr) {
34537786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_4_4:
34547786266dSMatt Arsenault; GFX900:       ; %bb.0:
34557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
34587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
34607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
34617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
34627786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
34637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
34647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34657786266dSMatt Arsenault;
34667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_4_4:
34677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
34717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
34737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
34747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
34757786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
34767786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
34777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34787786266dSMatt Arsenault;
34797786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_4_4:
34807786266dSMatt Arsenault; GFX940:       ; %bb.0:
34817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34837786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
34847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34857786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
34867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
34877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
34887786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
34897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
34907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34917786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
34927786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
34937786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 4, i32 4>
34947786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
34957786266dSMatt Arsenault  ret void
34967786266dSMatt Arsenault}
34977786266dSMatt Arsenault
34987786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_4(ptr addrspace(1) inreg %ptr) {
34997786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_4:
35007786266dSMatt Arsenault; GFX900:       ; %bb.0:
35017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35037786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
35047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35057786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
35067786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
35077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
35087786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
35097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
35107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35117786266dSMatt Arsenault;
35127786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_4:
35137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
35177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
35197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
35207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
35217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
35227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35247786266dSMatt Arsenault;
35257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_4:
35267786266dSMatt Arsenault; GFX940:       ; %bb.0:
35277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
35307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
35327786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
35337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
35347786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
35357786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35377786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
35387786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
35397786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 4>
35407786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
35417786266dSMatt Arsenault  ret void
35427786266dSMatt Arsenault}
35437786266dSMatt Arsenault
35447786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_4(ptr addrspace(1) inreg %ptr) {
35457786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_4:
35467786266dSMatt Arsenault; GFX900:       ; %bb.0:
35477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
35507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
35527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
35537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
35547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
35557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
35567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35577786266dSMatt Arsenault;
35587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_4:
35597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
35637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
35657786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
35667786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
35677786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
35687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
35697786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35707786266dSMatt Arsenault;
35717786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_4:
35727786266dSMatt Arsenault; GFX940:       ; %bb.0:
35737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35757786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
35767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
35787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
35797786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
35807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
35817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
35827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35837786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
35847786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
35857786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 4>
35867786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
35877786266dSMatt Arsenault  ret void
35887786266dSMatt Arsenault}
35897786266dSMatt Arsenault
35907786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_4(ptr addrspace(1) inreg %ptr) {
35917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_4:
35927786266dSMatt Arsenault; GFX900:       ; %bb.0:
35937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
35967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
35987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
36007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
36027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v2
36037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
36047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
36057786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36067786266dSMatt Arsenault;
36077786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_4:
36087786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36097786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36117786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
36127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v7, 0
36147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36157786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
36167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36177786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v0
36187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v3
36197786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v7, v[4:6], s[16:17]
36207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
36217786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36227786266dSMatt Arsenault;
36237786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_4:
36247786266dSMatt Arsenault; GFX940:       ; %bb.0:
36257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36277786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
36287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v7, 0
36307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36317786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
36327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36337786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v0
36347786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v3
36357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v7, v[4:6], s[0:1] sc0 sc1
36367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
36377786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36387786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
36397786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
36407786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 4>
36417786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
36427786266dSMatt Arsenault  ret void
36437786266dSMatt Arsenault}
36447786266dSMatt Arsenault
36457786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_4(ptr addrspace(1) inreg %ptr) {
36467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_4:
36477786266dSMatt Arsenault; GFX900:       ; %bb.0:
36487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36507786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
36517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
36537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
36547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
36567786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
36577786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
36587786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
36597786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
36607786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36617786266dSMatt Arsenault;
36627786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_4:
36637786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36647786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
36677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
36697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
36707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
36727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
36737786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v3
36747786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
36757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
36767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36777786266dSMatt Arsenault;
36787786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_4:
36797786266dSMatt Arsenault; GFX940:       ; %bb.0:
36807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36827786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
36837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36847786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
36857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
36867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
36877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36887786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
36897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
36907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v3
36917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
36927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
36937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36947786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
36957786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
36967786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 4>
36977786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
36987786266dSMatt Arsenault  ret void
36997786266dSMatt Arsenault}
37007786266dSMatt Arsenault
37017786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_4(ptr addrspace(1) inreg %ptr) {
37027786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_4:
37037786266dSMatt Arsenault; GFX900:       ; %bb.0:
37047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37067786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
37077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
37097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
37117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v5
37137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
37147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
37157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]
37167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
37177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37187786266dSMatt Arsenault;
37197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_4:
37207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
37247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
37267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37277786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
37287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
37307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
37317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v5
37327786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
37337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
37347786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37357786266dSMatt Arsenault;
37367786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_4:
37377786266dSMatt Arsenault; GFX940:       ; %bb.0:
37387786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37407786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
37417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37427786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
37437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37447786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
37457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
37477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
37487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v5
37497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
37507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
37517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37527786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
37537786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
37547786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 4>
37557786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
37567786266dSMatt Arsenault  ret void
37577786266dSMatt Arsenault}
37587786266dSMatt Arsenault
37597786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_4(ptr addrspace(1) inreg %ptr) {
37607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_4:
37617786266dSMatt Arsenault; GFX900:       ; %bb.0:
37627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37637786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
37647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
37667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v0
37687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v1
37697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
37707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
37717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37727786266dSMatt Arsenault;
37737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_4:
37747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
37777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
37797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
37817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v1
37827786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
37837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
37847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37857786266dSMatt Arsenault;
37867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_4:
37877786266dSMatt Arsenault; GFX940:       ; %bb.0:
37887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
37907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
37927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37937786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
37947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
37957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v1
37967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
37977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
37987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37997786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
38007786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
38017786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 4>
38027786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
38037786266dSMatt Arsenault  ret void
38047786266dSMatt Arsenault}
38057786266dSMatt Arsenault
38067786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__u_5_5(ptr addrspace(1) inreg %ptr) {
38077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_5_5:
38087786266dSMatt Arsenault; GFX900:       ; %bb.0:
38097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
38127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
38147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
38157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
38167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
38177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38187786266dSMatt Arsenault;
38197786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_5_5:
38207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38237786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
38247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
38267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
38277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
38287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
38297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38307786266dSMatt Arsenault;
38317786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__u_5_5:
38327786266dSMatt Arsenault; GFX940:       ; %bb.0:
38337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38357786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
38367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
38387786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
38397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
38407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
38417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38427786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
38437786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
38447786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>
38457786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
38467786266dSMatt Arsenault  ret void
38477786266dSMatt Arsenault}
38487786266dSMatt Arsenault
38497786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__0_5_5(ptr addrspace(1) inreg %ptr) {
38507786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_5_5:
38517786266dSMatt Arsenault; GFX900:       ; %bb.0:
38527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
38557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
38587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
38607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
38617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v3
38627786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]
38637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
38647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38657786266dSMatt Arsenault;
38667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_5_5:
38677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
38717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38737786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
38747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
38767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v4
38777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
38787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
38797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
38807786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38817786266dSMatt Arsenault;
38827786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__0_5_5:
38837786266dSMatt Arsenault; GFX940:       ; %bb.0:
38847786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38867786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
38877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
38897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38907786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
38917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38927786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
38937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v4
38947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
38957786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
38967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
38977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38987786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
38997786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
39007786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 5, i32 5>
39017786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
39027786266dSMatt Arsenault  ret void
39037786266dSMatt Arsenault}
39047786266dSMatt Arsenault
39057786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__1_5_5(ptr addrspace(1) inreg %ptr) {
39067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_5_5:
39077786266dSMatt Arsenault; GFX900:       ; %bb.0:
39087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
39117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39137786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
39147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
39167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v1
39177786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v4
39187786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
39197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
39207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39217786266dSMatt Arsenault;
39227786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_5_5:
39237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39267786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
39277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39297786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
39307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
39327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v1
39337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v4
39347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
39357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
39367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39377786266dSMatt Arsenault;
39387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__1_5_5:
39397786266dSMatt Arsenault; GFX940:       ; %bb.0:
39407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
39437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
39457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
39477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39487786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
39497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v1
39507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v4
39517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
39527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
39537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39547786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
39557786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
39567786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 5, i32 5>
39577786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
39587786266dSMatt Arsenault  ret void
39597786266dSMatt Arsenault}
39607786266dSMatt Arsenault
39617786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__2_5_5(ptr addrspace(1) inreg %ptr) {
39627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_5_5:
39637786266dSMatt Arsenault; GFX900:       ; %bb.0:
39647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
39677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
39697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39707786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
39717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
39737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v5
39747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
39757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
39767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39777786266dSMatt Arsenault;
39787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_5_5:
39797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
39837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
39857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39867786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
39877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
39897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v6
39907786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
39917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
39927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39937786266dSMatt Arsenault;
39947786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__2_5_5:
39957786266dSMatt Arsenault; GFX940:       ; %bb.0:
39967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39987786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
39997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40007786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
40017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40027786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
40037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v6
40057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
40067786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
40077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
40087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40097786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
40107786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
40117786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 5, i32 5>
40127786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
40137786266dSMatt Arsenault  ret void
40147786266dSMatt Arsenault}
40157786266dSMatt Arsenault
40167786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__3_5_5(ptr addrspace(1) inreg %ptr) {
40177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_5_5:
40187786266dSMatt Arsenault; GFX900:       ; %bb.0:
40197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
40227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
40247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
40257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
40267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
40277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40287786266dSMatt Arsenault;
40297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_5_5:
40307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40337786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
40347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
40367786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
40377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
40387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
40397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40407786266dSMatt Arsenault;
40417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__3_5_5:
40427786266dSMatt Arsenault; GFX940:       ; %bb.0:
40437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
40467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
40487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
40497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
40507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
40517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40527786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
40537786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
40547786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 5, i32 5>
40557786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
40567786266dSMatt Arsenault  ret void
40577786266dSMatt Arsenault}
40587786266dSMatt Arsenault
40597786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__4_5_5(ptr addrspace(1) inreg %ptr) {
40607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_5_5:
40617786266dSMatt Arsenault; GFX900:       ; %bb.0:
40627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
40657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
40677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v1
40687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v2
40697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
40707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
40717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40727786266dSMatt Arsenault;
40737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_5_5:
40747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40777786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
40787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
40807786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v1
40817786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v2
40827786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
40837786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
40847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40857786266dSMatt Arsenault;
40867786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__4_5_5:
40877786266dSMatt Arsenault; GFX940:       ; %bb.0:
40887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40907786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
40917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
40937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v1
40947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v2
40957786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
40967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
40977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40987786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
40997786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
41007786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 5, i32 5>
41017786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
41027786266dSMatt Arsenault  ret void
41037786266dSMatt Arsenault}
41047786266dSMatt Arsenault
41057786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_u_5(ptr addrspace(1) inreg %ptr) {
41067786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_5:
41077786266dSMatt Arsenault; GFX900:       ; %bb.0:
41087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41107786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
41117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
41137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
41147786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
41157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
41167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41177786266dSMatt Arsenault;
41187786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_5:
41197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
41237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41247786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
41257786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
41267786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
41277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
41287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41297786266dSMatt Arsenault;
41307786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_u_5:
41317786266dSMatt Arsenault; GFX940:       ; %bb.0:
41327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41347786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
41357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
41377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
41387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
41397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
41407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41417786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
41427786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
41437786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 5>
41447786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
41457786266dSMatt Arsenault  ret void
41467786266dSMatt Arsenault}
41477786266dSMatt Arsenault
41487786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_0_5(ptr addrspace(1) inreg %ptr) {
41497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_5:
41507786266dSMatt Arsenault; GFX900:       ; %bb.0:
41517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
41547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
41567786266dSMatt Arsenault; GFX900-NEXT:    ; def v[1:3]
41577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
41587786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
41597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
41607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
41617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]
41627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
41637786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
41647786266dSMatt Arsenault;
41657786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_5:
41667786266dSMatt Arsenault; GFX90A:       ; %bb.0:
41677786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41697786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
41707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
41727786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
41737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
41757786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
41767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v0
41777786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[2:4], s[16:17]
41787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
41797786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41807786266dSMatt Arsenault;
41817786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_0_5:
41827786266dSMatt Arsenault; GFX940:       ; %bb.0:
41837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
41867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
41887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41897786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
41907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41917786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
41927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
41937786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v0
41947786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[2:4], s[0:1] sc0 sc1
41957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
41967786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41977786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
41987786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
41997786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 5>
42007786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
42017786266dSMatt Arsenault  ret void
42027786266dSMatt Arsenault}
42037786266dSMatt Arsenault
42047786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_1_5(ptr addrspace(1) inreg %ptr) {
42057786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_5:
42067786266dSMatt Arsenault; GFX900:       ; %bb.0:
42077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42097786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
42107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:4]
42137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, 0
42157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
42167786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
42177786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
42187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
42197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42207786266dSMatt Arsenault;
42217786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_5:
42227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42257786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
42267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:4]
42297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, 0
42317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
42327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
42337786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v5, v[0:2], s[16:17]
42347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
42357786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42367786266dSMatt Arsenault;
42377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_1_5:
42387786266dSMatt Arsenault; GFX940:       ; %bb.0:
42397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
42427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, 0
42447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:4]
42467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42477786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
42487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
42497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
42507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v5, v[0:2], s[0:1] sc0 sc1
42517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
42527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42537786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
42547786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
42557786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 5>
42567786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
42577786266dSMatt Arsenault  ret void
42587786266dSMatt Arsenault}
42597786266dSMatt Arsenault
42607786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_2_5(ptr addrspace(1) inreg %ptr) {
42617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_5:
42627786266dSMatt Arsenault; GFX900:       ; %bb.0:
42637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42657786266dSMatt Arsenault; GFX900-NEXT:    ; def v[3:5]
42667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42677786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
42687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
42697786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
42707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
42727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
42737786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
42747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
42757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42767786266dSMatt Arsenault;
42777786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_5:
42787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:6]
42827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
42847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
42857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
42867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
42887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v2
42897786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
42907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
42917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42927786266dSMatt Arsenault;
42937786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_2_5:
42947786266dSMatt Arsenault; GFX940:       ; %bb.0:
42957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
42977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:6]
42987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
43007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
43027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43037786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
43047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v2
43057786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
43067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
43077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43087786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
43097786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
43107786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 5>
43117786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
43127786266dSMatt Arsenault  ret void
43137786266dSMatt Arsenault}
43147786266dSMatt Arsenault
43157786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_3_5(ptr addrspace(1) inreg %ptr) {
43167786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_5:
43177786266dSMatt Arsenault; GFX900:       ; %bb.0:
43187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
43207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43217786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
43227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
43237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v2
43247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
43257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v2
43267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v6, v[3:5], s[16:17]
43277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
43287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
43297786266dSMatt Arsenault;
43307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_5:
43317786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43327786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
43347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
43357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
43367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
43377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
43387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v0
43397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, v2
43407786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[4:6], s[16:17]
43417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
43427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
43437786266dSMatt Arsenault;
43447786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_3_5:
43457786266dSMatt Arsenault; GFX940:       ; %bb.0:
43467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
43487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43497786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
43507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43517786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
43527786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
43537786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v0
43547786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, v2
43557786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[4:6], s[0:1] sc0 sc1
43567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
43577786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
43587786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
43597786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
43607786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 5>
43617786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
43627786266dSMatt Arsenault  ret void
43637786266dSMatt Arsenault}
43647786266dSMatt Arsenault
43657786266dSMatt Arsenaultdefine void @v_shuffle_v3i32_v3i32__5_4_5(ptr addrspace(1) inreg %ptr) {
43667786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_5:
43677786266dSMatt Arsenault; GFX900:       ; %bb.0:
43687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
43707786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:2]
43717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
43727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, 0
43737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
43747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
43757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
43767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
43777786266dSMatt Arsenault;
43787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_5:
43797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
43807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
43827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:2]
43837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
43847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, 0
43857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
43867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]
43877786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
43887786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
43897786266dSMatt Arsenault;
43907786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3i32_v3i32__5_4_5:
43917786266dSMatt Arsenault; GFX940:       ; %bb.0:
43927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
43947786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:2]
43957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
43967786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, 0
43977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
43987786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1] sc0 sc1
43997786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
44007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44017786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=v"()
44027786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=v"()
44037786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 5>
44047786266dSMatt Arsenault  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16
44057786266dSMatt Arsenault  ret void
44067786266dSMatt Arsenault}
44077786266dSMatt Arsenault
44087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_u_u() {
4409*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_u_u:
4410*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4411*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4412*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4413*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
4414*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4415*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
44167786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
44177786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> poison
4418*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
44197786266dSMatt Arsenault  ret void
44207786266dSMatt Arsenault}
44217786266dSMatt Arsenault
44227786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_u_u() {
44237786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_u_u:
44247786266dSMatt Arsenault; GFX900:       ; %bb.0:
44257786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4427*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
44287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4430*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
44317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44337786266dSMatt Arsenault;
44347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_u_u:
44357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4438*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
44397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4441*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
44427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44447786266dSMatt Arsenault;
44457786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__0_u_u:
44467786266dSMatt Arsenault; GFX940:       ; %bb.0:
44477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4449*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
44507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44517786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
44527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4453*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
44547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44567786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
44577786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison>
4458*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
44597786266dSMatt Arsenault  ret void
44607786266dSMatt Arsenault}
44617786266dSMatt Arsenault
44627786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_u_u() {
44637786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_u_u:
44647786266dSMatt Arsenault; GFX900:       ; %bb.0:
44657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
44677786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
44687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4469*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
44707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4471*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
44727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
44737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
44747786266dSMatt Arsenault;
44757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_u_u:
44767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
44777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
44797786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
44807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4481*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
44827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4483*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
44847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
44857786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
44867786266dSMatt Arsenault;
44877786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_u_u:
44887786266dSMatt Arsenault; GFX940:       ; %bb.0:
44897786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
44907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
44917786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
44927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4493*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
44947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4495*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
44967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
44977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
44987786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
44997786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
4500*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
45017786266dSMatt Arsenault  ret void
45027786266dSMatt Arsenault}
45037786266dSMatt Arsenault
45047786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_u_u() {
45057786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_u_u:
45067786266dSMatt Arsenault; GFX900:       ; %bb.0:
45077786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45097786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
45107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4511*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
45127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4513*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
45147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45167786266dSMatt Arsenault;
45177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_u_u:
45187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45217786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
45227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4523*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
45247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4525*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
45267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45287786266dSMatt Arsenault;
45297786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_u_u:
45307786266dSMatt Arsenault; GFX940:       ; %bb.0:
45317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45337786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
45347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4535*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
45367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4537*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
45387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45397786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45407786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
45417786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
4542*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
45437786266dSMatt Arsenault  ret void
45447786266dSMatt Arsenault}
45457786266dSMatt Arsenault
45467786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_u_u() {
4547*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_u_u:
4548*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4549*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4550*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4551*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
4552*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4553*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
45547786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
45557786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 poison, i32 poison>
4556*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
45577786266dSMatt Arsenault  ret void
45587786266dSMatt Arsenault}
45597786266dSMatt Arsenault
45607786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_u_u() {
45617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_u_u:
45627786266dSMatt Arsenault; GFX900:       ; %bb.0:
45637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
45657786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
45667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4567*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
45687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4569*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
45707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
45717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
45727786266dSMatt Arsenault;
45737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_u_u:
45747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
45757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
45777786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
45787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4579*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
45807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4581*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
45827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
45837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
45847786266dSMatt Arsenault;
45857786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_u_u:
45867786266dSMatt Arsenault; GFX940:       ; %bb.0:
45877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
45897786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
45907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4591*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
45927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4593*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
45947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
45957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
45967786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
45977786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
45987786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 poison, i32 poison>
4599*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
46007786266dSMatt Arsenault  ret void
46017786266dSMatt Arsenault}
46027786266dSMatt Arsenault
46037786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_u() {
46047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_u:
46057786266dSMatt Arsenault; GFX900:       ; %bb.0:
46067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46087786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
46097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4610*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
46117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4612*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
46137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46147786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46157786266dSMatt Arsenault;
46167786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_u:
46177786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46187786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46207786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
46217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4622*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
46237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4624*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
46257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46277786266dSMatt Arsenault;
46287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_u:
46297786266dSMatt Arsenault; GFX940:       ; %bb.0:
46307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
46327786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
46337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4634*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
46357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4636*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
46377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46397786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
46407786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
46417786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>
4642*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
46437786266dSMatt Arsenault  ret void
46447786266dSMatt Arsenault}
46457786266dSMatt Arsenault
46467786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_u() {
46477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_u:
46487786266dSMatt Arsenault; GFX900:       ; %bb.0:
46497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46517786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
46527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46547786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
46557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46567786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
46577786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
46587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
46597786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
46607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
46617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
46627786266dSMatt Arsenault;
46637786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_u:
46647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
46657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46677786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
46687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46707786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
46717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46727786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
46737786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
46747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
46757786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
46767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
46777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
46787786266dSMatt Arsenault;
46797786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_u:
46807786266dSMatt Arsenault; GFX940:       ; %bb.0:
46817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
46837786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
46847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4686*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
4687*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4688*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4689*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
4690*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4691*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
46927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
46937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
46947786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
46957786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
46967786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 poison>
4697*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
46987786266dSMatt Arsenault  ret void
46997786266dSMatt Arsenault}
47007786266dSMatt Arsenault
47017786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_u() {
47027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_u:
47037786266dSMatt Arsenault; GFX900:       ; %bb.0:
47047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
47067786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
47077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4709*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
4710*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4711*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4712*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4713*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
47147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47167786266dSMatt Arsenault;
47177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_u:
47187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47217786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
47227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4724*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
4725*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4726*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4727*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4728*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
47297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47317786266dSMatt Arsenault;
47327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_u:
47337786266dSMatt Arsenault; GFX940:       ; %bb.0:
47347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4736*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
4737*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4738*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47397786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
47407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4741*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
47427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4743*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
47447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
47467786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
47477786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
47487786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 poison>
4749*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
47507786266dSMatt Arsenault  ret void
47517786266dSMatt Arsenault}
47527786266dSMatt Arsenault
47537786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_u() {
47547786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_u:
47557786266dSMatt Arsenault; GFX900:       ; %bb.0:
47567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
47587786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
47597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4761*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
4762*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4763*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
4764*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
4765*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4766*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
47677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
47687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
47697786266dSMatt Arsenault;
47707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_u:
47717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
47727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
47747786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
47757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4777*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
4778*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4779*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
4780*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
4781*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4782*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
47837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
47847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
47857786266dSMatt Arsenault;
47867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_u:
47877786266dSMatt Arsenault; GFX940:       ; %bb.0:
47887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
47897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47907786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
47917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
47927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
47937786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
47947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4795*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4796*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
47977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4798*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
47997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48007786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48017786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
48027786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
48037786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 poison>
4804*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
48057786266dSMatt Arsenault  ret void
48067786266dSMatt Arsenault}
48077786266dSMatt Arsenault
48087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_u() {
48097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_u:
48107786266dSMatt Arsenault; GFX900:       ; %bb.0:
48117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
48147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48157786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
48167786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
48177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48187786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
48197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48217786266dSMatt Arsenault;
48227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_u:
48237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48267786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
48277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48287786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
48297786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
48307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48317786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
48327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48347786266dSMatt Arsenault;
48357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_u:
48367786266dSMatt Arsenault; GFX940:       ; %bb.0:
48377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
48397786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
48407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4841*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4842*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
48437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4844*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
48457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
48467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
48477786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
48487786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
48497786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 poison>
4850*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
48517786266dSMatt Arsenault  ret void
48527786266dSMatt Arsenault}
48537786266dSMatt Arsenault
48547786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_u() {
4855*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_u:
4856*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
4857*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4858*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4859*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
4860*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4861*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
4862*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4863*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
4864*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4865*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
48667786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
48677786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
48687786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 poison>
4869*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
48707786266dSMatt Arsenault  ret void
48717786266dSMatt Arsenault}
48727786266dSMatt Arsenault
48737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_u() {
48747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_u:
48757786266dSMatt Arsenault; GFX900:       ; %bb.0:
48767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
48787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
48797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4880*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4881*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
48827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4883*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
48847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
48857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
48867786266dSMatt Arsenault;
48877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_u:
48887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
48897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
48917786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
48927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4893*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4894*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
48957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4896*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
48977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
48987786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
48997786266dSMatt Arsenault;
49007786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_u:
49017786266dSMatt Arsenault; GFX940:       ; %bb.0:
49027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
49047786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
49057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4906*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4907*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
49087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4909*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
49107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49127786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
49137786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
49147786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 poison>
4915*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
49167786266dSMatt Arsenault  ret void
49177786266dSMatt Arsenault}
49187786266dSMatt Arsenault
49197786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_0() {
49207786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_0:
49217786266dSMatt Arsenault; GFX900:       ; %bb.0:
49227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49247786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
49257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49277786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
49287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49297786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
49307786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
49317786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
49327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49337786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
49347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49367786266dSMatt Arsenault;
49377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_0:
49387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
49427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
49457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49467786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
49477786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
49487786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
49497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49507786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
49517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
49527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
49537786266dSMatt Arsenault;
49547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_0:
49557786266dSMatt Arsenault; GFX940:       ; %bb.0:
49567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
49587786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
49597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4961*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
4962*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4963*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4964*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s6
4965*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4966*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4967*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
49687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
49697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
49707786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
49717786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
49727786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 0>
4973*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
49747786266dSMatt Arsenault  ret void
49757786266dSMatt Arsenault}
49767786266dSMatt Arsenault
49777786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_1() {
49787786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_1:
49797786266dSMatt Arsenault; GFX900:       ; %bb.0:
49807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49827786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
49837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49857786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
49867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49877786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
49887786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
49897786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
49907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
49917786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
49927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
49937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
49947786266dSMatt Arsenault;
49957786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_1:
49967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
49977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
49987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
49997786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
50007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50027786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
50037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50047786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
50057786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
50067786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
50077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50087786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
50097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50107786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50117786266dSMatt Arsenault;
50127786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_1:
50137786266dSMatt Arsenault; GFX940:       ; %bb.0:
50147786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50167786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
50177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5019*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
5020*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5021*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
5022*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s6
5023*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
5024*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5025*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
50267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50287786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
50297786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
50307786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 1>
5031*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
50327786266dSMatt Arsenault  ret void
50337786266dSMatt Arsenault}
50347786266dSMatt Arsenault
50357786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_2() {
50367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_2:
50377786266dSMatt Arsenault; GFX900:       ; %bb.0:
50387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50407786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
50417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5043*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
5044*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5045*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5046*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
5047*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5048*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
50497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50507786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
50517786266dSMatt Arsenault;
50527786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_2:
50537786266dSMatt Arsenault; GFX90A:       ; %bb.0:
50547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
50567786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
50577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5059*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
5060*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5061*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5062*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
5063*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5064*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
50657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
50667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
50677786266dSMatt Arsenault;
50687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_2:
50697786266dSMatt Arsenault; GFX940:       ; %bb.0:
50707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5072*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
5073*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5074*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
50757786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
50767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5077*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5078*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
50797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5080*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
50817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
50827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
50837786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
50847786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
50857786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 2>
5086*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
50877786266dSMatt Arsenault  ret void
50887786266dSMatt Arsenault}
50897786266dSMatt Arsenault
50907786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_3() {
50917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_3:
50927786266dSMatt Arsenault; GFX900:       ; %bb.0:
50937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
50947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
50957786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
50967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
50977786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
50987786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
50997786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
51007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51017786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
51027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51037786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51047786266dSMatt Arsenault;
51057786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_3:
51067786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51097786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
51107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51117786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
51127786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
51137786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
51147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51157786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
51167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51187786266dSMatt Arsenault;
51197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_3:
51207786266dSMatt Arsenault; GFX940:       ; %bb.0:
51217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51237786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
51247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5125*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5126*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
5127*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
51287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5129*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
51307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51327786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
51337786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
51347786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 3>
5135*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
51367786266dSMatt Arsenault  ret void
51377786266dSMatt Arsenault}
51387786266dSMatt Arsenault
51397786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_4() {
51407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_4:
51417786266dSMatt Arsenault; GFX900:       ; %bb.0:
51427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51447786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
51457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51467786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
51477786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
51487786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
51497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
51507786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
51517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
51527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
51537786266dSMatt Arsenault;
51547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_4:
51557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
51567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
51597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51607786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
51617786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
51627786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
51637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
51647786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
51657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
51667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
51677786266dSMatt Arsenault;
51687786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_5_4:
51697786266dSMatt Arsenault; GFX940:       ; %bb.0:
51707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
51717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
51727786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
51737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5174*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5175*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
5176*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
51777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5178*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
51797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
51807786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
51817786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
51827786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
51837786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 4>
5184*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
51857786266dSMatt Arsenault  ret void
51867786266dSMatt Arsenault}
51877786266dSMatt Arsenault
51887786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_5_5() {
5189*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_5_5:
5190*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5191*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5192*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5193*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
5194*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5195*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
5196*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
5197*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5198*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
5199*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5200*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52017786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
52027786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
52037786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 5>
5204*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
52057786266dSMatt Arsenault  ret void
52067786266dSMatt Arsenault}
52077786266dSMatt Arsenault
52087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_0_0() {
52097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__u_0_0:
52107786266dSMatt Arsenault; GFX900:       ; %bb.0:
52117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
52147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5215*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
5216*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
52177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5218*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
52197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52217786266dSMatt Arsenault;
52227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__u_0_0:
52237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
52267786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
52277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5228*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
5229*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
52307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5231*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
52327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
52347786266dSMatt Arsenault;
52357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__u_0_0:
52367786266dSMatt Arsenault; GFX940:       ; %bb.0:
52377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
52397786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
52407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5241*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
5242*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
52437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5244*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
52457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
52467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
52477786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
52487786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0>
5249*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
52507786266dSMatt Arsenault  ret void
52517786266dSMatt Arsenault}
52527786266dSMatt Arsenault
52537786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_0_0() {
5254*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_0_0:
5255*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5256*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5257*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5258*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
5259*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5260*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s8
5261*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
5262*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5263*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
5264*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5265*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
52667786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
52677786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> zeroinitializer
5268*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
52697786266dSMatt Arsenault  ret void
52707786266dSMatt Arsenault}
52717786266dSMatt Arsenault
52727786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_0_0() {
52737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_0_0:
52747786266dSMatt Arsenault; GFX900:       ; %bb.0:
52757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52777786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
52787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52797786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
52807786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
52817786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
52827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
52837786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
52847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
52857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
52867786266dSMatt Arsenault;
52877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_0_0:
52887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
52897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
52907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
52917786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
52927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52937786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
52947786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
52957786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
52967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
52977786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
52987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
52997786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53007786266dSMatt Arsenault;
53017786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_0_0:
53027786266dSMatt Arsenault; GFX940:       ; %bb.0:
53037786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
53057786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
53067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5307*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
5308*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
5309*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
53107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5311*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
53127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53147786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
53157786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0>
5316*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
53177786266dSMatt Arsenault  ret void
53187786266dSMatt Arsenault}
53197786266dSMatt Arsenault
53207786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_0_0() {
53217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_0_0:
53227786266dSMatt Arsenault; GFX900:       ; %bb.0:
53237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53257786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
53267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53277786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
53287786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
53297786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
53307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53317786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
53327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53347786266dSMatt Arsenault;
53357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_0_0:
53367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53397786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
53407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53417786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
53427786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
53437786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
53447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53457786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
53467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53487786266dSMatt Arsenault;
53497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_0_0:
53507786266dSMatt Arsenault; GFX940:       ; %bb.0:
53517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
53537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
53547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5355*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
5356*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
5357*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
53587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5359*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
53607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
53617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
53627786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
53637786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0>
5364*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
53657786266dSMatt Arsenault  ret void
53667786266dSMatt Arsenault}
53677786266dSMatt Arsenault
53687786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_0_0() {
53697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__3_0_0:
53707786266dSMatt Arsenault; GFX900:       ; %bb.0:
53717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
53737786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
53747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5375*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
5376*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
53777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5378*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
53797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
53807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
53817786266dSMatt Arsenault;
53827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__3_0_0:
53837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
53847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
53867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
53877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5388*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
5389*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
53907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5391*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
53927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
53937786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
53947786266dSMatt Arsenault;
53957786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__3_0_0:
53967786266dSMatt Arsenault; GFX940:       ; %bb.0:
53977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
53987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
53997786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
54007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5401*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
5402*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
54037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5404*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
54057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54067786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54077786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
54087786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 0, i32 0>
5409*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
54107786266dSMatt Arsenault  ret void
54117786266dSMatt Arsenault}
54127786266dSMatt Arsenault
54137786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_0_0() {
54147786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_0_0:
54157786266dSMatt Arsenault; GFX900:       ; %bb.0:
54167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54187786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
54197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54207786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54217786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
54227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54237786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s9
54247786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
54257786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
54267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54277786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
54287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54307786266dSMatt Arsenault;
54317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_0_0:
54327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54357786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
54367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54387786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
54397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54407786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s9
54417786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
54427786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
54437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54447786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
54457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
54477786266dSMatt Arsenault;
54487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_0_0:
54497786266dSMatt Arsenault; GFX940:       ; %bb.0:
54507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
54527786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
54537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5455*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
5456*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5457*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s5
5458*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
5459*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
5460*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5461*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
54627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
54637786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
54647786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
54657786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
54667786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 0, i32 0>
5467*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
54687786266dSMatt Arsenault  ret void
54697786266dSMatt Arsenault}
54707786266dSMatt Arsenault
54717786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_0() {
54727786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_0:
54737786266dSMatt Arsenault; GFX900:       ; %bb.0:
54747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54767786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
54777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54797786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
54807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54817786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
54827786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
54837786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
54847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
54857786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
54867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
54877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
54887786266dSMatt Arsenault;
54897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_0:
54907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
54917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
54927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
54947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
54967786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
54977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
54987786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
54997786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
55007786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
55017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55027786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
55037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55047786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
55057786266dSMatt Arsenault;
55067786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_0:
55077786266dSMatt Arsenault; GFX940:       ; %bb.0:
55087786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
55107786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
55117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5513*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
5514*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5515*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
5516*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
5517*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
5518*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5519*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
55207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55227786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
55237786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
55247786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 0>
5525*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
55267786266dSMatt Arsenault  ret void
55277786266dSMatt Arsenault}
55287786266dSMatt Arsenault
55297786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_0() {
55307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_0:
55317786266dSMatt Arsenault; GFX900:       ; %bb.0:
55327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55347786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
55357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55377786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
55387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55397786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
55407786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
55417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55427786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
55437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
55457786266dSMatt Arsenault;
55467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_0:
55477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
55487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
55517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
55547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55557786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
55567786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
55577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
55587786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
55597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
55607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
55617786266dSMatt Arsenault;
55627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_0:
55637786266dSMatt Arsenault; GFX940:       ; %bb.0:
55647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
55667786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
55677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5569*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
5570*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5571*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
5572*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
5573*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5574*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
55757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
55767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
55777786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
55787786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
55797786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 0>
5580*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
55817786266dSMatt Arsenault  ret void
55827786266dSMatt Arsenault}
55837786266dSMatt Arsenault
55847786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_0() {
55857786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_0:
55867786266dSMatt Arsenault; GFX900:       ; %bb.0:
55877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
55887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55897786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
55907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55927786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
55937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
55947786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
55957786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
55967786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
55977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
55987786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
55997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56007786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56017786266dSMatt Arsenault;
56027786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_0:
56037786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56047786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56067786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
56077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56097786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
56107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56117786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
56127786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
56137786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
56147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56157786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
56167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56187786266dSMatt Arsenault;
56197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_0:
56207786266dSMatt Arsenault; GFX940:       ; %bb.0:
56217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
56237786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
56247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5626*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
5627*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5628*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
5629*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
5630*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
5631*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5632*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
56337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56347786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
56357786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
56367786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
56377786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 0>
5638*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
56397786266dSMatt Arsenault  ret void
56407786266dSMatt Arsenault}
56417786266dSMatt Arsenault
56427786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_0() {
56437786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_0:
56447786266dSMatt Arsenault; GFX900:       ; %bb.0:
56457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56477786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
56487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56507786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
56517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56527786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
56537786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
56547786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
56557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
56567786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
56577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
56587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
56597786266dSMatt Arsenault;
56607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_0:
56617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
56627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56647786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
56657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56677786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
56687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56697786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
56707786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
56717786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
56727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
56737786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
56747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
56757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
56767786266dSMatt Arsenault;
56777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_0:
56787786266dSMatt Arsenault; GFX940:       ; %bb.0:
56797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
56817786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
56827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5684*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
5685*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5686*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
5687*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
5688*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
5689*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5690*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
56917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
56927786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
56937786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
56947786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
56957786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 0>
5696*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
56977786266dSMatt Arsenault  ret void
56987786266dSMatt Arsenault}
56997786266dSMatt Arsenault
57007786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_0() {
57017786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_0:
57027786266dSMatt Arsenault; GFX900:       ; %bb.0:
57037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57057786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
57067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5708*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:14]
57097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5710*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
5711*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s12
5712*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
57137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5714*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
57157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57167786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
57177786266dSMatt Arsenault;
57187786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_0:
57197786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57207786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57227786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
57237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5725*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:14]
57267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5727*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
5728*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s12
5729*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
57307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5731*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
57327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
57347786266dSMatt Arsenault;
57357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_0:
57367786266dSMatt Arsenault; GFX940:       ; %bb.0:
57377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57397786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
57407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57427786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
57437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57447786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
57457786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s4
57467786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
57477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57487786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
57497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
57517786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
57527786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
57537786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 0>
5754*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
57557786266dSMatt Arsenault  ret void
57567786266dSMatt Arsenault}
57577786266dSMatt Arsenault
57587786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_0() {
57597786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_0:
57607786266dSMatt Arsenault; GFX900:       ; %bb.0:
57617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57637786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
57647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57667786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
57677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57687786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
57697786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
57707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
57717786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
57727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
57737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
57747786266dSMatt Arsenault;
57757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_0:
57767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
57777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57797786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
57807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57827786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
57837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57847786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
57857786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
57867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
57877786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
57887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
57897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
57907786266dSMatt Arsenault;
57917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_4_0:
57927786266dSMatt Arsenault; GFX940:       ; %bb.0:
57937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5795*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
57967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
57977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
57987786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
57997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5800*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
5801*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
58027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5803*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
58047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
58057786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
58067786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
58077786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
58087786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 0>
5809*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
58107786266dSMatt Arsenault  ret void
58117786266dSMatt Arsenault}
58127786266dSMatt Arsenault
58137786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_1_1() {
5814*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_1_1:
5815*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5816*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5817*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5818*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
5819*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5820*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5821*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5822*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
5823*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5824*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
58257786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
58267786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1>
5827*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
58287786266dSMatt Arsenault  ret void
58297786266dSMatt Arsenault}
58307786266dSMatt Arsenault
58317786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_1_1() {
5832*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_1_1:
5833*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5834*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5835*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5836*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
5837*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5838*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5839*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5840*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
5841*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5842*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
58437786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
58447786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1>
5845*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
58467786266dSMatt Arsenault  ret void
58477786266dSMatt Arsenault}
58487786266dSMatt Arsenault
58497786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_1_1() {
5850*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__1_1_1:
5851*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5852*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5853*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5854*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
5855*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5856*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
5857*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5858*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5859*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
5860*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5861*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
58627786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
58637786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1>
5864*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
58657786266dSMatt Arsenault  ret void
58667786266dSMatt Arsenault}
58677786266dSMatt Arsenault
58687786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_1_1() {
5869*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__2_1_1:
5870*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5871*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5872*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5873*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
5874*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5875*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
5876*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5877*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5878*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
5879*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5880*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
58817786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
58827786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1>
5883*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
58847786266dSMatt Arsenault  ret void
58857786266dSMatt Arsenault}
58867786266dSMatt Arsenault
58877786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_1_1() {
5888*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_1_1:
5889*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
5890*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5891*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5892*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
5893*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5894*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
5895*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
5896*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
5897*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
5898*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
58997786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
59007786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 1, i32 1>
5901*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
59027786266dSMatt Arsenault  ret void
59037786266dSMatt Arsenault}
59047786266dSMatt Arsenault
59057786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_1_1() {
59067786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_1_1:
59077786266dSMatt Arsenault; GFX900:       ; %bb.0:
59087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59107786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
59117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5913*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
5914*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5915*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
5916*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
5917*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5918*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
59197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59207786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59217786266dSMatt Arsenault;
59227786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_1_1:
59237786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59247786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59267786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
59277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5929*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
5930*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5931*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
5932*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
5933*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5934*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
59357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
59377786266dSMatt Arsenault;
59387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_1_1:
59397786266dSMatt Arsenault; GFX940:       ; %bb.0:
59407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5942*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
5943*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5944*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
59457786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
59467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5947*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
5948*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
59497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5950*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
59517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
59527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
59537786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
59547786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
59557786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 1, i32 1>
5956*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
59577786266dSMatt Arsenault  ret void
59587786266dSMatt Arsenault}
59597786266dSMatt Arsenault
59607786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_1() {
59617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_1:
59627786266dSMatt Arsenault; GFX900:       ; %bb.0:
59637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
59657786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
59667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5968*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
5969*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5970*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
5971*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
5972*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5973*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
59747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
59757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
59767786266dSMatt Arsenault;
59777786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_1:
59787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
59797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
59817786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
59827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5984*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
5985*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5986*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
5987*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
5988*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5989*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
59907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
59917786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
59927786266dSMatt Arsenault;
59937786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_1:
59947786266dSMatt Arsenault; GFX940:       ; %bb.0:
59957786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
59967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5997*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
5998*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5999*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
60007786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
60017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6002*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
6003*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
60047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6005*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
60067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60077786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
60087786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
60097786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
60107786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 1>
6011*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
60127786266dSMatt Arsenault  ret void
60137786266dSMatt Arsenault}
60147786266dSMatt Arsenault
60157786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_1() {
60167786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_1:
60177786266dSMatt Arsenault; GFX900:       ; %bb.0:
60187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60207786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
60217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6023*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
6024*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6025*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
6026*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
6027*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6028*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
60297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
60317786266dSMatt Arsenault;
60327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_1:
60337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
60347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60367786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
60377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6039*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
6040*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6041*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
6042*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
6043*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6044*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
60457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60467786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
60477786266dSMatt Arsenault;
60487786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_1:
60497786266dSMatt Arsenault; GFX940:       ; %bb.0:
60507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
60527786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
60537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
60557786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
60567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6057*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
6058*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
60597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6060*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
60617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
60627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
60637786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
60647786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
60657786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 1>
6066*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
60677786266dSMatt Arsenault  ret void
60687786266dSMatt Arsenault}
60697786266dSMatt Arsenault
60707786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_1() {
60717786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_1:
60727786266dSMatt Arsenault; GFX900:       ; %bb.0:
60737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60757786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
60767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
60797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60807786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
60817786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
60827786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
60837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
60847786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
60857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
60867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
60877786266dSMatt Arsenault;
60887786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_1:
60897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
60907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
60917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60927786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
60937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
60957786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
60967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
60977786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
60987786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
60997786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
61007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61017786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
61027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
61047786266dSMatt Arsenault;
61057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_1:
61067786266dSMatt Arsenault; GFX940:       ; %bb.0:
61077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61097786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
61107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6112*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
6113*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6114*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
6115*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
6116*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
6117*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6118*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
61197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
61217786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
61227786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
61237786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 1>
6124*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
61257786266dSMatt Arsenault  ret void
61267786266dSMatt Arsenault}
61277786266dSMatt Arsenault
61287786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_1() {
61297786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_1:
61307786266dSMatt Arsenault; GFX900:       ; %bb.0:
61317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61337786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
61347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61367786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
61377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61387786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
61397786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
61407786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
61417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61427786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
61437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
61457786266dSMatt Arsenault;
61467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_1:
61477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
61487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
61517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61537786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
61547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61557786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
61567786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
61577786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
61587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
61597786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
61607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
61617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
61627786266dSMatt Arsenault;
61637786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_1:
61647786266dSMatt Arsenault; GFX940:       ; %bb.0:
61657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
61677786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
61687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6170*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
6171*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6172*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
6173*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
6174*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
6175*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6176*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
61777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
61787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
61797786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
61807786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
61817786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 1>
6182*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
61837786266dSMatt Arsenault  ret void
61847786266dSMatt Arsenault}
61857786266dSMatt Arsenault
61867786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_1() {
61877786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_1:
61887786266dSMatt Arsenault; GFX900:       ; %bb.0:
61897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
61907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
61917786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
61927786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
61937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6194*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:14]
61957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6196*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
6197*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s12
6198*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
61997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6200*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
62017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
62037786266dSMatt Arsenault;
62047786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_1:
62057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
62067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62087786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
62097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6211*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:14]
62127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6213*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
6214*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s12
6215*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
62167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6217*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
62187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62197786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
62207786266dSMatt Arsenault;
62217786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_1:
62227786266dSMatt Arsenault; GFX940:       ; %bb.0:
62237786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62257786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
62267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62287786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
62297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62307786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
62317786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s4
62327786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
62337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62347786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
62357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62367786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
62377786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
62387786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
62397786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 1>
6240*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
62417786266dSMatt Arsenault  ret void
62427786266dSMatt Arsenault}
62437786266dSMatt Arsenault
62447786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_1() {
62457786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_1:
62467786266dSMatt Arsenault; GFX900:       ; %bb.0:
62477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62497786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
62507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62527786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
62537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62547786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
62557786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
62567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
62577786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
62587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
62597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
62607786266dSMatt Arsenault;
62617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_1:
62627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
62637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62657786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
62667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62687786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
62697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62707786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
62717786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
62727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
62737786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
62747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
62757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
62767786266dSMatt Arsenault;
62777786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_4_1:
62787786266dSMatt Arsenault; GFX940:       ; %bb.0:
62797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
62807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6281*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
62827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
62847786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
62857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6286*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
6287*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
62887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6289*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
62907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
62917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
62927786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
62937786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
62947786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 1>
6295*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
62967786266dSMatt Arsenault  ret void
62977786266dSMatt Arsenault}
62987786266dSMatt Arsenault
62997786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_2_2() {
6300*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_2_2:
6301*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6302*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6303*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6304*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
6305*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6306*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
6307*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6308*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
6309*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6310*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
63117786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
63127786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2>
6313*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
63147786266dSMatt Arsenault  ret void
63157786266dSMatt Arsenault}
63167786266dSMatt Arsenault
63177786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_2_2() {
6318*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_2_2:
6319*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6320*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6321*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6322*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
6323*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6324*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
6325*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6326*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
6327*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6328*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
63297786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
63307786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2>
6331*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
63327786266dSMatt Arsenault  ret void
63337786266dSMatt Arsenault}
63347786266dSMatt Arsenault
63357786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_2_2() {
6336*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__1_2_2:
6337*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6338*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6339*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6340*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
6341*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6342*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
6343*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
6344*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6345*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
6346*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6347*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
63487786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
63497786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2>
6350*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
63517786266dSMatt Arsenault  ret void
63527786266dSMatt Arsenault}
63537786266dSMatt Arsenault
63547786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_2_2() {
6355*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__2_2_2:
6356*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6357*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6358*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6359*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
6360*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6361*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
6362*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
6363*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6364*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
6365*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6366*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
63677786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
63687786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2>
6369*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
63707786266dSMatt Arsenault  ret void
63717786266dSMatt Arsenault}
63727786266dSMatt Arsenault
63737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_2_2() {
6374*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_2_2:
6375*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6376*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6377*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6378*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
6379*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6380*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
6381*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6382*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
6383*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6384*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
63857786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
63867786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 2, i32 2>
6387*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
63887786266dSMatt Arsenault  ret void
63897786266dSMatt Arsenault}
63907786266dSMatt Arsenault
63917786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_2_2() {
63927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_2_2:
63937786266dSMatt Arsenault; GFX900:       ; %bb.0:
63947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
63967786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
63977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
63987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6399*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
6400*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6401*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
6402*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
6403*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6404*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
64057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
64077786266dSMatt Arsenault;
64087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_2_2:
64097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
64107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64127786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
64137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6415*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
6416*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6417*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
6418*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
6419*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6420*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
64217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64227786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
64237786266dSMatt Arsenault;
64247786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_2_2:
64257786266dSMatt Arsenault; GFX940:       ; %bb.0:
64267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6428*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
6429*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6430*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64317786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
64327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6433*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
6434*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s10
64357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6436*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
64377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64387786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
64397786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
64407786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
64417786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 2, i32 2>
6442*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
64437786266dSMatt Arsenault  ret void
64447786266dSMatt Arsenault}
64457786266dSMatt Arsenault
64467786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_2() {
64477786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_2:
64487786266dSMatt Arsenault; GFX900:       ; %bb.0:
64497786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
64517786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
64527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6454*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
6455*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6456*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
6457*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
6458*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6459*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
64607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
64617786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
64627786266dSMatt Arsenault;
64637786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_2:
64647786266dSMatt Arsenault; GFX90A:       ; %bb.0:
64657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
64677786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
64687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6470*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
6471*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6472*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
6473*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
6474*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6475*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
64767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
64777786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
64787786266dSMatt Arsenault;
64797786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_2:
64807786266dSMatt Arsenault; GFX940:       ; %bb.0:
64817786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
64827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6483*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
6484*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6485*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
64867786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
64877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6488*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
6489*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s10
64907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6491*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
64927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
64937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
64947786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
64957786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
64967786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 2>
6497*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
64987786266dSMatt Arsenault  ret void
64997786266dSMatt Arsenault}
65007786266dSMatt Arsenault
65017786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_2() {
65027786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_2:
65037786266dSMatt Arsenault; GFX900:       ; %bb.0:
65047786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
65067786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
65077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6509*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
6510*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6511*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
6512*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6513*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
65147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
65167786266dSMatt Arsenault;
65177786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_2:
65187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
65197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65217786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
65227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6524*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
6525*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6526*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
6527*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6528*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
65297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65307786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
65317786266dSMatt Arsenault;
65327786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_2:
65337786266dSMatt Arsenault; GFX940:       ; %bb.0:
65347786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6536*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
6537*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6538*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
65397786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
65407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6541*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
65427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6543*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
65447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65457786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
65467786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
65477786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
65487786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 2>
6549*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
65507786266dSMatt Arsenault  ret void
65517786266dSMatt Arsenault}
65527786266dSMatt Arsenault
65537786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_2() {
65547786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_2:
65557786266dSMatt Arsenault; GFX900:       ; %bb.0:
65567786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
65587786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
65597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65607786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
65617786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
65627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65637786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
65647786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
65657786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
65667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
65677786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
65687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
65697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
65707786266dSMatt Arsenault;
65717786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_2:
65727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
65737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65757786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
65767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65787786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
65797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65807786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
65817786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
65827786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
65837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
65847786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
65857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
65867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
65877786266dSMatt Arsenault;
65887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_2:
65897786266dSMatt Arsenault; GFX940:       ; %bb.0:
65907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
65927786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
65937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
65947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6595*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
6596*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6597*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
6598*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
6599*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
6600*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6601*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
66027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
66047786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
66057786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
66067786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 2>
6607*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
66087786266dSMatt Arsenault  ret void
66097786266dSMatt Arsenault}
66107786266dSMatt Arsenault
66117786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_2() {
66127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_2:
66137786266dSMatt Arsenault; GFX900:       ; %bb.0:
66147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66167786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
66177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6619*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
6620*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6621*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
6622*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6623*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
66247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
66267786266dSMatt Arsenault;
66277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_2:
66287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
66297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66317786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
66327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6634*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
6635*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6636*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
6637*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6638*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
66397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66407786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
66417786266dSMatt Arsenault;
66427786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_2:
66437786266dSMatt Arsenault; GFX940:       ; %bb.0:
66447786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6646*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
6647*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6648*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
66497786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
66507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6651*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
66527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6653*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
66547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
66557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
66567786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
66577786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
66587786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 2>
6659*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
66607786266dSMatt Arsenault  ret void
66617786266dSMatt Arsenault}
66627786266dSMatt Arsenault
66637786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_2() {
66647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_2:
66657786266dSMatt Arsenault; GFX900:       ; %bb.0:
66667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
66687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
66697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6671*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
6672*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6673*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
6674*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
6675*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6676*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
66777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
66787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
66797786266dSMatt Arsenault;
66807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_2:
66817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
66827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
66847786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
66857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6687*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
6688*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6689*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
6690*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
6691*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6692*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
66937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
66947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
66957786266dSMatt Arsenault;
66967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_2:
66977786266dSMatt Arsenault; GFX940:       ; %bb.0:
66987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
66997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6700*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
6701*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6702*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67037786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
67047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6705*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
6706*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
67077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6708*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
67097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
67117786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
67127786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
67137786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 2>
6714*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
67157786266dSMatt Arsenault  ret void
67167786266dSMatt Arsenault}
67177786266dSMatt Arsenault
67187786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_2() {
67197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_2:
67207786266dSMatt Arsenault; GFX900:       ; %bb.0:
67217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67237786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
67247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67267786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
67277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67287786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
67297786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
67307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
67317786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
67327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
67347786266dSMatt Arsenault;
67357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_2:
67367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
67377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67397786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
67407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
67437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67447786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
67457786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
67467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
67477786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
67487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
67497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
67507786266dSMatt Arsenault;
67517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_4_2:
67527786266dSMatt Arsenault; GFX940:       ; %bb.0:
67537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6755*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
67567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
67587786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
67597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6760*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
6761*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
67627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6763*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
67647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
67657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
67667786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
67677786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
67687786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 2>
6769*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
67707786266dSMatt Arsenault  ret void
67717786266dSMatt Arsenault}
67727786266dSMatt Arsenault
67737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_3_3() {
6774*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_3_3:
6775*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6776*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6777*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6778*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
6779*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6780*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
67817786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
67827786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 3, i32 3>
6783*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
67847786266dSMatt Arsenault  ret void
67857786266dSMatt Arsenault}
67867786266dSMatt Arsenault
67877786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_3_3() {
67887786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_3_3:
67897786266dSMatt Arsenault; GFX900:       ; %bb.0:
67907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6792*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
67937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6795*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
67967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
67977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
67987786266dSMatt Arsenault;
67997786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_3_3:
68007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6803*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
68047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6806*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
68077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
68097786266dSMatt Arsenault;
68107786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__0_3_3:
68117786266dSMatt Arsenault; GFX940:       ; %bb.0:
68127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6814*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
68157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
68167786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
68177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6818*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
68197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
68207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
68217786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
68227786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 3, i32 3>
6823*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
68247786266dSMatt Arsenault  ret void
68257786266dSMatt Arsenault}
68267786266dSMatt Arsenault
68277786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_3_3() {
68287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_3_3:
68297786266dSMatt Arsenault; GFX900:       ; %bb.0:
68307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68327786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
68337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6834*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
68357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6836*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
68377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
68397786266dSMatt Arsenault;
68407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_3_3:
68417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
68457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6846*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
68477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6848*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
68497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
68517786266dSMatt Arsenault;
68527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_3_3:
68537786266dSMatt Arsenault; GFX940:       ; %bb.0:
68547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
68567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
68577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6858*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
68597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6860*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
68617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
68627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
68637786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
68647786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 3, i32 3>
6865*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
68667786266dSMatt Arsenault  ret void
68677786266dSMatt Arsenault}
68687786266dSMatt Arsenault
68697786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_3_3() {
68707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_3_3:
68717786266dSMatt Arsenault; GFX900:       ; %bb.0:
68727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
68747786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
68757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6876*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
68777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6878*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
68797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
68807786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
68817786266dSMatt Arsenault;
68827786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_3_3:
68837786266dSMatt Arsenault; GFX90A:       ; %bb.0:
68847786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
68867786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
68877786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6888*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
68897786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6890*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
68917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
68927786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
68937786266dSMatt Arsenault;
68947786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_3_3:
68957786266dSMatt Arsenault; GFX940:       ; %bb.0:
68967786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
68977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
68987786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
68997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6900*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
69017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6902*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
69037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
69057786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
69067786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 3, i32 3>
6907*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
69087786266dSMatt Arsenault  ret void
69097786266dSMatt Arsenault}
69107786266dSMatt Arsenault
69117786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_3_3() {
6912*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_3_3:
6913*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
6914*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6915*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
6916*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
6917*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
6918*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
69197786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
69207786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 3, i32 3>
6921*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
69227786266dSMatt Arsenault  ret void
69237786266dSMatt Arsenault}
69247786266dSMatt Arsenault
69257786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_3_3() {
69267786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_3_3:
69277786266dSMatt Arsenault; GFX900:       ; %bb.0:
69287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69307786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
69317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69327786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
69337786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
69347786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
69357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69367786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
69377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69387786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
69397786266dSMatt Arsenault;
69407786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_3_3:
69417786266dSMatt Arsenault; GFX90A:       ; %bb.0:
69427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69447786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
69457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69467786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
69477786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
69487786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
69497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69507786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
69517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
69537786266dSMatt Arsenault;
69547786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__4_3_3:
69557786266dSMatt Arsenault; GFX940:       ; %bb.0:
69567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
69587786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
69597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6960*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
6961*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
6962*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
69637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6964*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
69657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
69667786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
69677786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
69687786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
69697786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 3, i32 3>
6970*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
69717786266dSMatt Arsenault  ret void
69727786266dSMatt Arsenault}
69737786266dSMatt Arsenault
69747786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_3() {
69757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_3:
69767786266dSMatt Arsenault; GFX900:       ; %bb.0:
69777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69797786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
69807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69817786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
69827786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
69837786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
69847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
69857786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
69867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
69877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
69887786266dSMatt Arsenault;
69897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_3:
69907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
69917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
69927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
69947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
69957786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
69967786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
69977786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
69987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
69997786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
70007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
70017786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
70027786266dSMatt Arsenault;
70037786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_3:
70047786266dSMatt Arsenault; GFX940:       ; %bb.0:
70057786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70067786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
70077786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
70087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7009*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7010*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
7011*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
70127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7013*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
70147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
70157786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
70167786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
70177786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
70187786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 3>
7019*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
70207786266dSMatt Arsenault  ret void
70217786266dSMatt Arsenault}
70227786266dSMatt Arsenault
70237786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_3() {
70247786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_3:
70257786266dSMatt Arsenault; GFX900:       ; %bb.0:
70267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
70287786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
70297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
70307786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
70317786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
70327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
70337786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
70347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
70357786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
70367786266dSMatt Arsenault;
70377786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_3:
70387786266dSMatt Arsenault; GFX90A:       ; %bb.0:
70397786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
70417786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
70427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
70437786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
70447786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
70457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
70467786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
70477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
70487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
70497786266dSMatt Arsenault;
70507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_3:
70517786266dSMatt Arsenault; GFX940:       ; %bb.0:
70527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
70547786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
70557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7056*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7057*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
70587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7059*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
70607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
70617786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
70627786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
70637786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
70647786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 3>
7065*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
70667786266dSMatt Arsenault  ret void
70677786266dSMatt Arsenault}
70687786266dSMatt Arsenault
70697786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_3() {
70707786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_3:
70717786266dSMatt Arsenault; GFX900:       ; %bb.0:
70727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
70747786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
70757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
70767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7077*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:14]
70787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7079*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
7080*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
7081*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
70827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7083*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
70847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
70857786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
70867786266dSMatt Arsenault;
70877786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_3:
70887786266dSMatt Arsenault; GFX90A:       ; %bb.0:
70897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
70907786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
70917786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
70927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
70937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7094*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:14]
70957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7096*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
7097*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
7098*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
70997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7100*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
71017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
71027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
71037786266dSMatt Arsenault;
71047786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_3:
71057786266dSMatt Arsenault; GFX940:       ; %bb.0:
71067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
71087786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
71097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
71107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
71117786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
71127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
71137786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
71147786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
71157786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
71167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
71177786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
71187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
71197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
71207786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
71217786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
71227786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 3>
7123*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
71247786266dSMatt Arsenault  ret void
71257786266dSMatt Arsenault}
71267786266dSMatt Arsenault
71277786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_3() {
71287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_3:
71297786266dSMatt Arsenault; GFX900:       ; %bb.0:
71307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
71327786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
71337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
71347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7135*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
7136*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7137*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
7138*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
7139*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7140*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
71417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
71427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
71437786266dSMatt Arsenault;
71447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_3:
71457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
71467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
71487786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
71497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
71507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7151*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
7152*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7153*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
7154*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
7155*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7156*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
71577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
71587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
71597786266dSMatt Arsenault;
71607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_3:
71617786266dSMatt Arsenault; GFX940:       ; %bb.0:
71627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7164*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
7165*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7166*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
71677786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
71687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7169*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7170*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
71717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7172*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
71737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
71747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
71757786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
71767786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
71777786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 3>
7178*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
71797786266dSMatt Arsenault  ret void
71807786266dSMatt Arsenault}
71817786266dSMatt Arsenault
71827786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_3() {
71837786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_3:
71847786266dSMatt Arsenault; GFX900:       ; %bb.0:
71857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
71867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
71877786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
71887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
71897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7190*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:14]
71917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7192*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
7193*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
7194*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
71957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7196*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
71977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
71987786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
71997786266dSMatt Arsenault;
72007786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_3:
72017786266dSMatt Arsenault; GFX90A:       ; %bb.0:
72027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
72047786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
72057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
72067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7207*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:14]
72087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7209*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
7210*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
7211*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
72127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7213*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
72147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
72157786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
72167786266dSMatt Arsenault;
72177786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_3:
72187786266dSMatt Arsenault; GFX940:       ; %bb.0:
72197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
72217786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
72227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
72237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
72247786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
72257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7226*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
7227*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
7228*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
72297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7230*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
72317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
72327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
72337786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
72347786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
72357786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 3>
7236*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
72377786266dSMatt Arsenault  ret void
72387786266dSMatt Arsenault}
72397786266dSMatt Arsenault
72407786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_3() {
72417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_3:
72427786266dSMatt Arsenault; GFX900:       ; %bb.0:
72437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
72457786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
72467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
72477786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
72487786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
72497786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
72507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
72517786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
72527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
72537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
72547786266dSMatt Arsenault;
72557786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_3:
72567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
72577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
72597786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
72607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
72617786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
72627786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
72637786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
72647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
72657786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
72667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
72677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
72687786266dSMatt Arsenault;
72697786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_4_3:
72707786266dSMatt Arsenault; GFX940:       ; %bb.0:
72717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
72737786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
72747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7275*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7276*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
7277*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
72787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7279*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
72807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
72817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
72827786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
72837786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
72847786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 3>
7285*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
72867786266dSMatt Arsenault  ret void
72877786266dSMatt Arsenault}
72887786266dSMatt Arsenault
72897786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_4_4() {
7290*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_4_4:
7291*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
7292*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7293*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7294*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
7295*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7296*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
7297*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7298*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
7299*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7300*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
73017786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
73027786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
73037786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 4, i32 4>
7304*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
73057786266dSMatt Arsenault  ret void
73067786266dSMatt Arsenault}
73077786266dSMatt Arsenault
73087786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_4_4() {
73097786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_4_4:
73107786266dSMatt Arsenault; GFX900:       ; %bb.0:
73117786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
73137786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
73147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
73157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7316*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
7317*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7318*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s5
7319*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
7320*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7321*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
73227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
73237786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
73247786266dSMatt Arsenault;
73257786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_4_4:
73267786266dSMatt Arsenault; GFX90A:       ; %bb.0:
73277786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
73297786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
73307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
73317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7332*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
7333*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7334*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s5
7335*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
7336*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7337*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
73387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
73397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
73407786266dSMatt Arsenault;
73417786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__0_4_4:
73427786266dSMatt Arsenault; GFX940:       ; %bb.0:
73437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7345*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
7346*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7347*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
73487786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
73497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7350*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s1
7351*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
73527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7353*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
73547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
73557786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
73567786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
73577786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
73587786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 4, i32 4>
7359*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
73607786266dSMatt Arsenault  ret void
73617786266dSMatt Arsenault}
73627786266dSMatt Arsenault
73637786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_4_4() {
73647786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_4_4:
73657786266dSMatt Arsenault; GFX900:       ; %bb.0:
73667786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
73687786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
73697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
73707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
73717786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
73727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
73737786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
73747786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
73757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
73767786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
73777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
73787786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
73797786266dSMatt Arsenault;
73807786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_4_4:
73817786266dSMatt Arsenault; GFX90A:       ; %bb.0:
73827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
73847786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
73857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
73867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
73877786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
73887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
73897786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
73907786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
73917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
73927786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
73937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
73947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
73957786266dSMatt Arsenault;
73967786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_4_4:
73977786266dSMatt Arsenault; GFX940:       ; %bb.0:
73987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7400*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
74017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
74027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
74037786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
74047786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7405*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
7406*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
74077786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7408*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
74097786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
74107786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
74117786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
74127786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
74137786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 4, i32 4>
7414*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
74157786266dSMatt Arsenault  ret void
74167786266dSMatt Arsenault}
74177786266dSMatt Arsenault
74187786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_4_4() {
74197786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_4_4:
74207786266dSMatt Arsenault; GFX900:       ; %bb.0:
74217786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
74227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
74237786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
74247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
74257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
74267786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
74277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
74287786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
74297786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s9
74307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
74317786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
74327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
74337786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
74347786266dSMatt Arsenault;
74357786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_4_4:
74367786266dSMatt Arsenault; GFX90A:       ; %bb.0:
74377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
74387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
74397786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
74407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
74417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
74427786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
74437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
74447786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
74457786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s9
74467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
74477786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
74487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
74497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
74507786266dSMatt Arsenault;
74517786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_4_4:
74527786266dSMatt Arsenault; GFX940:       ; %bb.0:
74537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
74547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7455*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
74567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
74577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
74587786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
74597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7460*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7461*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s9
74627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7463*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
74647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
74657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
74667786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
74677786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
74687786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 4, i32 4>
7469*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
74707786266dSMatt Arsenault  ret void
74717786266dSMatt Arsenault}
74727786266dSMatt Arsenault
74737786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_4_4() {
7474*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_4_4:
7475*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
7476*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7477*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7478*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
7479*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7480*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
7481*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7482*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
7483*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7484*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
74857786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
74867786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
74877786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 4, i32 4>
7488*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
74897786266dSMatt Arsenault  ret void
74907786266dSMatt Arsenault}
74917786266dSMatt Arsenault
74927786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_4_4() {
7493*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__4_4_4:
7494*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
7495*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7496*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7497*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
7498*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7499*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
7500*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
7501*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7502*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
7503*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7504*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
75057786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
75067786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
75077786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 4, i32 4>
7508*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
75097786266dSMatt Arsenault  ret void
75107786266dSMatt Arsenault}
75117786266dSMatt Arsenault
75127786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_4() {
7513*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_4:
7514*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
7515*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7516*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7517*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
7518*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7519*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
7520*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s9
7521*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7522*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
7523*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7524*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
75257786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
75267786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
75277786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 4>
7528*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
75297786266dSMatt Arsenault  ret void
75307786266dSMatt Arsenault}
75317786266dSMatt Arsenault
75327786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_4() {
75337786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_4:
75347786266dSMatt Arsenault; GFX900:       ; %bb.0:
75357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
75367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
75377786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
75387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7539*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
7540*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
75417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7542*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
75437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
75447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
75457786266dSMatt Arsenault;
75467786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_4:
75477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
75487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
75497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
75507786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
75517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7552*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
7553*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
75547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7555*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
75567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
75577786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
75587786266dSMatt Arsenault;
75597786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_u_4:
75607786266dSMatt Arsenault; GFX940:       ; %bb.0:
75617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
75627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
75637786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
75647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7565*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7566*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
75677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7568*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
75697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
75707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
75717786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
75727786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
75737786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 4>
7574*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
75757786266dSMatt Arsenault  ret void
75767786266dSMatt Arsenault}
75777786266dSMatt Arsenault
75787786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_4() {
75797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_4:
75807786266dSMatt Arsenault; GFX900:       ; %bb.0:
75817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
75827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
75837786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
75847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
75857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7586*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:14]
75877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7588*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
7589*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
7590*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s13
75917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7592*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
75937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
75947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
75957786266dSMatt Arsenault;
75967786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_4:
75977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
75987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
75997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
76007786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
76017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
76027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7603*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:14]
76047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7605*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
7606*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
7607*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s13
76087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7609*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
76107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
76117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
76127786266dSMatt Arsenault;
76137786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_4:
76147786266dSMatt Arsenault; GFX940:       ; %bb.0:
76157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
76167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
76177786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
76187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
76197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
76207786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
76217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
76227786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
76237786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
76247786266dSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s5
76257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
76267786266dSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
76277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
76287786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
76297786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
76307786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
76317786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 4>
7632*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
76337786266dSMatt Arsenault  ret void
76347786266dSMatt Arsenault}
76357786266dSMatt Arsenault
76367786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_4() {
76377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_4:
76387786266dSMatt Arsenault; GFX900:       ; %bb.0:
76397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
76407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
76417786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
76427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
76437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7644*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
7645*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7646*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
7647*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
7648*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7649*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
76507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
76517786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
76527786266dSMatt Arsenault;
76537786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_4:
76547786266dSMatt Arsenault; GFX90A:       ; %bb.0:
76557786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
76567786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
76577786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
76587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
76597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7660*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
7661*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7662*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
7663*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
7664*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7665*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
76667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
76677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
76687786266dSMatt Arsenault;
76697786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_4:
76707786266dSMatt Arsenault; GFX940:       ; %bb.0:
76717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
76727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7673*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
7674*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7675*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
76767786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
76777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7678*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7679*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
76807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7681*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
76827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
76837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
76847786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
76857786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
76867786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 4>
7687*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
76887786266dSMatt Arsenault  ret void
76897786266dSMatt Arsenault}
76907786266dSMatt Arsenault
76917786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_4() {
76927786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_4:
76937786266dSMatt Arsenault; GFX900:       ; %bb.0:
76947786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
76957786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
76967786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
76977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
76987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7699*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[12:14]
77007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7701*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
7702*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
7703*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s13
77047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7705*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
77067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
77077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
77087786266dSMatt Arsenault;
77097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_4:
77107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
77117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
77127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
77137786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
77147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
77157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7716*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[12:14]
77177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7718*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
7719*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
7720*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s13
77217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7722*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
77237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
77247786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
77257786266dSMatt Arsenault;
77267786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_4:
77277786266dSMatt Arsenault; GFX940:       ; %bb.0:
77287786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
77297786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
77307786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
77317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
77327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
77337786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:6]
77347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7735*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
7736*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
7737*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s5
77387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7739*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
77407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
77417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
77427786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
77437786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
77447786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 4>
7745*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
77467786266dSMatt Arsenault  ret void
77477786266dSMatt Arsenault}
77487786266dSMatt Arsenault
77497786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_4() {
77507786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_4:
77517786266dSMatt Arsenault; GFX900:       ; %bb.0:
77527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
77537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
77547786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
77557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
77567786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
77577786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
77587786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s5
77597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
77607786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
77617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
77627786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
77637786266dSMatt Arsenault;
77647786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_4:
77657786266dSMatt Arsenault; GFX90A:       ; %bb.0:
77667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
77677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
77687786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
77697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
77707786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
77717786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
77727786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s5
77737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
77747786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
77757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
77767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
77777786266dSMatt Arsenault;
77787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_4:
77797786266dSMatt Arsenault; GFX940:       ; %bb.0:
77807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
77817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
77827786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
77837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7784*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7785*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
7786*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s1
77877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7788*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
77897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
77907786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
77917786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
77927786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
77937786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 4>
7794*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
77957786266dSMatt Arsenault  ret void
77967786266dSMatt Arsenault}
77977786266dSMatt Arsenault
77987786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__u_5_5() {
7799*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_5_5:
7800*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
7801*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7802*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7803*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
7804*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7805*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
7806*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7807*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
7808*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7809*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
78107786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
78117786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
78127786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>
7813*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
78147786266dSMatt Arsenault  ret void
78157786266dSMatt Arsenault}
78167786266dSMatt Arsenault
78177786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__0_5_5() {
78187786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_5_5:
78197786266dSMatt Arsenault; GFX900:       ; %bb.0:
78207786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
78217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
78227786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
78237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
78247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7825*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
7826*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7827*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
7828*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
7829*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7830*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
78317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
78327786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
78337786266dSMatt Arsenault;
78347786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_5_5:
78357786266dSMatt Arsenault; GFX90A:       ; %bb.0:
78367786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
78377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
78387786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
78397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
78407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7841*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
7842*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7843*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
7844*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
7845*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7846*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
78477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
78487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
78497786266dSMatt Arsenault;
78507786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__0_5_5:
78517786266dSMatt Arsenault; GFX940:       ; %bb.0:
78527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
78537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7854*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
7855*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7856*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
78577786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
78587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7859*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
7860*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
78617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7862*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
78637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
78647786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
78657786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
78667786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
78677786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 5, i32 5>
7868*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
78697786266dSMatt Arsenault  ret void
78707786266dSMatt Arsenault}
78717786266dSMatt Arsenault
78727786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__1_5_5() {
78737786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_5_5:
78747786266dSMatt Arsenault; GFX900:       ; %bb.0:
78757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
78767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
78777786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
78787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
78797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
78807786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
78817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
78827786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s5
78837786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
78847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
78857786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
78867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
78877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
78887786266dSMatt Arsenault;
78897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_5_5:
78907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
78917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
78927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
78937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
78947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
78957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
78967786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
78977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
78987786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s5
78997786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
79007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
79017786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
79027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
79037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
79047786266dSMatt Arsenault;
79057786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__1_5_5:
79067786266dSMatt Arsenault; GFX940:       ; %bb.0:
79077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
79087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7909*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
79107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
79117786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
79127786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
79137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7914*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s1
7915*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s10
79167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7917*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
79187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
79197786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
79207786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
79217786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
79227786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 5, i32 5>
7923*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
79247786266dSMatt Arsenault  ret void
79257786266dSMatt Arsenault}
79267786266dSMatt Arsenault
79277786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__2_5_5() {
79287786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_5_5:
79297786266dSMatt Arsenault; GFX900:       ; %bb.0:
79307786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
79317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
79327786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
79337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
79347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
79357786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
79367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
79377786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
79387786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s10
79397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
79407786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
79417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
79427786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
79437786266dSMatt Arsenault;
79447786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_5_5:
79457786266dSMatt Arsenault; GFX90A:       ; %bb.0:
79467786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
79477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
79487786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
79497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
79507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
79517786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
79527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
79537786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
79547786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s10
79557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
79567786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
79577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
79587786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
79597786266dSMatt Arsenault;
79607786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__2_5_5:
79617786266dSMatt Arsenault; GFX940:       ; %bb.0:
79627786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
79637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7964*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
79657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
79667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
79677786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
79687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7969*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
7970*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s10
79717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7972*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
79737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
79747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
79757786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
79767786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
79777786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 5, i32 5>
7978*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
79797786266dSMatt Arsenault  ret void
79807786266dSMatt Arsenault}
79817786266dSMatt Arsenault
79827786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__3_5_5() {
7983*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_5_5:
7984*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
7985*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7986*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7987*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
7988*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7989*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
7990*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
7991*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
7992*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
7993*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
79947786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
79957786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
79967786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 5, i32 5>
7997*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
79987786266dSMatt Arsenault  ret void
79997786266dSMatt Arsenault}
80007786266dSMatt Arsenault
80017786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__4_5_5() {
8002*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__4_5_5:
8003*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
8004*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8005*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
8006*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
8007*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
8008*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s9
8009*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s10
8010*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
8011*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
8012*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
8013*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
80147786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
80157786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
80167786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 5, i32 5>
8017*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
80187786266dSMatt Arsenault  ret void
80197786266dSMatt Arsenault}
80207786266dSMatt Arsenault
80217786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_u_5() {
8022*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_u_5:
8023*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
8024*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8025*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
8026*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
8027*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
8028*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
8029*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
8030*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
8031*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
8032*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
80337786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
80347786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
80357786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 5>
8036*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
80377786266dSMatt Arsenault  ret void
80387786266dSMatt Arsenault}
80397786266dSMatt Arsenault
80407786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_0_5() {
80417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_5:
80427786266dSMatt Arsenault; GFX900:       ; %bb.0:
80437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
80447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
80457786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
80467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
80477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
80487786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
80497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
80507786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
80517786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
80527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
80537786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
80547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
80557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
80567786266dSMatt Arsenault;
80577786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_5:
80587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
80597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
80607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
80617786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
80627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
80637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
80647786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
80657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
80667786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
80677786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
80687786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
80697786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
80707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
80717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
80727786266dSMatt Arsenault;
80737786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_0_5:
80747786266dSMatt Arsenault; GFX940:       ; %bb.0:
80757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
80767786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8077*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
80787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
80797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
80807786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
80817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8082*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
8083*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
80847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8085*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
80867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
80877786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
80887786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
80897786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
80907786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 5>
8091*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
80927786266dSMatt Arsenault  ret void
80937786266dSMatt Arsenault}
80947786266dSMatt Arsenault
80957786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_1_5() {
80967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_5:
80977786266dSMatt Arsenault; GFX900:       ; %bb.0:
80987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
80997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
81007786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
81017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
81027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8103*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
8104*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8105*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
8106*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
8107*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8108*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
81097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
81107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
81117786266dSMatt Arsenault;
81127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_5:
81137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
81147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
81157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
81167786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
81177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
81187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8119*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
8120*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8121*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
8122*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
8123*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8124*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
81257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
81267786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
81277786266dSMatt Arsenault;
81287786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_1_5:
81297786266dSMatt Arsenault; GFX940:       ; %bb.0:
81307786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
81317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8132*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
8133*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8134*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
81357786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
81367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8137*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
8138*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
81397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8140*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
81417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
81427786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
81437786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
81447786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
81457786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 5>
8146*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
81477786266dSMatt Arsenault  ret void
81487786266dSMatt Arsenault}
81497786266dSMatt Arsenault
81507786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_2_5() {
81517786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_5:
81527786266dSMatt Arsenault; GFX900:       ; %bb.0:
81537786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
81547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
81557786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:10]
81567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
81577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
81587786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
81597786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
81607786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
81617786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s6
81627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
81637786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
81647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
81657786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
81667786266dSMatt Arsenault;
81677786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_5:
81687786266dSMatt Arsenault; GFX90A:       ; %bb.0:
81697786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
81707786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
81717786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:10]
81727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
81737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
81747786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
81757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
81767786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
81777786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s6
81787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
81797786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
81807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
81817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
81827786266dSMatt Arsenault;
81837786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_2_5:
81847786266dSMatt Arsenault; GFX940:       ; %bb.0:
81857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
81867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8187*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:10]
81887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
81897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
81907786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
81917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8192*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
8193*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s2
81947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8195*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
81967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
81977786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
81987786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
81997786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
82007786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 5>
8201*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
82027786266dSMatt Arsenault  ret void
82037786266dSMatt Arsenault}
82047786266dSMatt Arsenault
82057786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_3_5() {
82067786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_5:
82077786266dSMatt Arsenault; GFX900:       ; %bb.0:
82087786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
82097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
82107786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:6]
82117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
82127786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
82137786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s4
82147786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
82157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
82167786266dSMatt Arsenault; GFX900-NEXT:    ; use s[8:10]
82177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
82187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
82197786266dSMatt Arsenault;
82207786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_5:
82217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
82227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
82237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
82247786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:6]
82257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
82267786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
82277786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s4
82287786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
82297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
82307786266dSMatt Arsenault; GFX90A-NEXT:    ; use s[8:10]
82317786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
82327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
82337786266dSMatt Arsenault;
82347786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3i32_v3i32__5_3_5:
82357786266dSMatt Arsenault; GFX940:       ; %bb.0:
82367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
82377786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
82387786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:2]
82397786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8240*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
8241*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s0
8242*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
82437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8244*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:10]
82457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
82467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
82477786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
82487786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
82497786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 5>
8250*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
82517786266dSMatt Arsenault  ret void
82527786266dSMatt Arsenault}
82537786266dSMatt Arsenault
82547786266dSMatt Arsenaultdefine void @s_shuffle_v3i32_v3i32__5_4_5() {
8255*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_5:
8256*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
8257*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8258*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
8259*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:10]
8260*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
8261*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
8262*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
8263*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:10]
8264*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
8265*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
82667786266dSMatt Arsenault  %vec0 = call <3 x i32> asm "; def $0", "=s"()
82677786266dSMatt Arsenault  %vec1 = call <3 x i32> asm "; def $0", "=s"()
82687786266dSMatt Arsenault  %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 5>
8269*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)
82707786266dSMatt Arsenault  ret void
82717786266dSMatt Arsenault}
82727786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
82737786266dSMatt Arsenault; GFX90APLUS: {{.*}}
8274