xref: /llvm-project/llvm/test/CodeGen/AMDGPU/shufflevector.v3p0.v2p0.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_v3p0_v2p0__u_u_u(ptr addrspace(1) inreg %ptr) {
87786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3p0_v2p0__u_u_u:
97786266dSMatt Arsenault; GFX9:       ; %bb.0:
107786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
117786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
127786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
137786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> poison
147786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
157786266dSMatt Arsenault  ret void
167786266dSMatt Arsenault}
177786266dSMatt Arsenault
187786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_u_u(ptr addrspace(1) inreg %ptr) {
197786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__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 v4, 0
237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
247786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
267786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
287786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
297786266dSMatt Arsenault;
307786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__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 v4, 0
347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
407786266dSMatt Arsenault;
417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__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 v4, 0
457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
507786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
517786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
527786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 poison, i32 poison>
537786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
547786266dSMatt Arsenault  ret void
557786266dSMatt Arsenault}
567786266dSMatt Arsenault
577786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_u_u(ptr addrspace(1) inreg %ptr) {
587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__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:3]
637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
657786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
667786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
707786266dSMatt Arsenault;
717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_u_u:
727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
757786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
797786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
827786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
837786266dSMatt Arsenault;
847786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_u_u:
857786266dSMatt Arsenault; GFX940:       ; %bb.0:
867786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
927786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
967786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
977786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
987786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
997786266dSMatt Arsenault  ret void
1007786266dSMatt Arsenault}
1017786266dSMatt Arsenault
1027786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_u_u(ptr addrspace(1) inreg %ptr) {
1037786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3p0_v2p0__2_u_u:
1047786266dSMatt Arsenault; GFX9:       ; %bb.0:
1057786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1067786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
1077786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
1087786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
1097786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
1107786266dSMatt Arsenault  ret void
1117786266dSMatt Arsenault}
1127786266dSMatt Arsenault
1137786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_u(ptr addrspace(1) inreg %ptr) {
1147786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_u:
1157786266dSMatt Arsenault; GFX900:       ; %bb.0:
1167786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1187786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
1217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
1227786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
1237786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1267786266dSMatt Arsenault;
1277786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_u:
1287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
1327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1337786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
1347786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
1357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
1367786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
1377786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1387786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1397786266dSMatt Arsenault;
1407786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_u:
1417786266dSMatt Arsenault; GFX940:       ; %bb.0:
1427786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
1447786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
1457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
1467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
1477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
1487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
1497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
1507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
1517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
1527786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
1537786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
1547786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>
1557786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
1567786266dSMatt Arsenault  ret void
1577786266dSMatt Arsenault}
1587786266dSMatt Arsenault
1597786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_u(ptr addrspace(1) inreg %ptr) {
1607786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_u:
1617786266dSMatt Arsenault; GFX900:       ; %bb.0:
1627786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
1657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
1677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
1687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
1697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
1707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
1717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
1727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
1737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
1747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
1757786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
1767786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
1777786266dSMatt Arsenault;
1787786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_u:
1797786266dSMatt Arsenault; GFX90A:       ; %bb.0:
1807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1827786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
1837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
1857786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
1867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
1877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
1887786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
1897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
1907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
1917786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
1927786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
1937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
1947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
1957786266dSMatt Arsenault;
1967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_u:
1977786266dSMatt Arsenault; GFX940:       ; %bb.0:
1987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
2017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
2037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
2057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2067786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
2087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
2097786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
2107786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
2117786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
2127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2137786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2147786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
2157786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
2167786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>
2177786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
2187786266dSMatt Arsenault  ret void
2197786266dSMatt Arsenault}
2207786266dSMatt Arsenault
2217786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_u(ptr addrspace(1) inreg %ptr) {
2227786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_u:
2237786266dSMatt Arsenault; GFX900:       ; %bb.0:
2247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2267786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
2277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2287786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
2297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2307786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
2317786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
2337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
2347786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2377786266dSMatt Arsenault;
2387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_u:
2397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
2457786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2467786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
2477786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2487786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
2497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
2507786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
2517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
2527786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
2537786266dSMatt Arsenault;
2547786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_u:
2557786266dSMatt Arsenault; GFX940:       ; %bb.0:
2567786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
2597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2607786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
2617786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2627786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
2637786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2647786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
2657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
2667786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
2677786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
2687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
2697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
2707786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
2717786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
2727786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>
2737786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
2747786266dSMatt Arsenault  ret void
2757786266dSMatt Arsenault}
2767786266dSMatt Arsenault
2777786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_u(ptr addrspace(1) inreg %ptr) {
2787786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_u:
2797786266dSMatt Arsenault; GFX900:       ; %bb.0:
2807786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
2827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2837786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
2847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
2867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
2877786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
2887786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
2897786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
2907786266dSMatt Arsenault;
2917786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_u:
2927786266dSMatt Arsenault; GFX90A:       ; %bb.0:
2937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2947786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
2957786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2967786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
2977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
2997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
3007786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
3017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3027786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3037786266dSMatt Arsenault;
3047786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_u:
3057786266dSMatt Arsenault; GFX940:       ; %bb.0:
3067786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
3087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
3107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3117786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
3127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
3137786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
3147786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
3157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3167786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3177786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
3187786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
3197786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>
3207786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
3217786266dSMatt Arsenault  ret void
3227786266dSMatt Arsenault}
3237786266dSMatt Arsenault
3247786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_u(ptr addrspace(1) inreg %ptr) {
3257786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_u:
3267786266dSMatt Arsenault; GFX900:       ; %bb.0:
3277786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3297786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
3307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3317786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
3327786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
3337786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
3347786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3377786266dSMatt Arsenault;
3387786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_u:
3397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3427786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
3437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
3457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
3467786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
3477786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
3487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
3497786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
3507786266dSMatt Arsenault;
3517786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_u:
3527786266dSMatt Arsenault; GFX940:       ; %bb.0:
3537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3557786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
3567786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
3587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
3597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
3607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
3617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
3627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
3637786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
3647786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
3657786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>
3667786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
3677786266dSMatt Arsenault  ret void
3687786266dSMatt Arsenault}
3697786266dSMatt Arsenault
3707786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_0(ptr addrspace(1) inreg %ptr) {
3717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_0:
3727786266dSMatt Arsenault; GFX900:       ; %bb.0:
3737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3757786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
3767786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3787786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
3797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3807786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
3817786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
3827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
3837786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
3847786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
3857786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
3867786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
3877786266dSMatt Arsenault;
3887786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_0:
3897786266dSMatt Arsenault; GFX90A:       ; %bb.0:
3907786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3917786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3927786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
3937786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
3967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3977786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
3987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
3997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
4007786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
4017786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
4027786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4037786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4047786266dSMatt Arsenault;
4057786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_0:
4067786266dSMatt Arsenault; GFX940:       ; %bb.0:
4077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4087786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4097786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4107786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4117786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
4127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4137786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
4147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4157786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1
4167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
4177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
4187786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
4197786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4207786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4217786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
4227786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
4237786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 0>
4247786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
4257786266dSMatt Arsenault  ret void
4267786266dSMatt Arsenault}
4277786266dSMatt Arsenault
4287786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_1(ptr addrspace(1) inreg %ptr) {
4297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_1:
4307786266dSMatt Arsenault; GFX900:       ; %bb.0:
4317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
4347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
4367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v6
4377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v7
4387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
4407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4417786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
4427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
4437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4447786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4457786266dSMatt Arsenault;
4467786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_1:
4477786266dSMatt Arsenault; GFX90A:       ; %bb.0:
4487786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4507786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
4517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4527786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
4537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v6
4547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v7
4557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4567786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
4577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
4597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
4607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
4617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4627786266dSMatt Arsenault;
4637786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_1:
4647786266dSMatt Arsenault; GFX940:       ; %bb.0:
4657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4677786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
4687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
4707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v6
4717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v7
4727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
4747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1
4767786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
4777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
4787786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4797786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
4807786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
4817786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 1>
4827786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
4837786266dSMatt Arsenault  ret void
4847786266dSMatt Arsenault}
4857786266dSMatt Arsenault
4867786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_2(ptr addrspace(1) inreg %ptr) {
4877786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_2:
4887786266dSMatt Arsenault; GFX900:       ; %bb.0:
4897786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
4917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4927786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
4937786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4947786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
4957786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
4967786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
4977786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
4987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
4997786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5007786266dSMatt Arsenault;
5017786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_2:
5027786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5037786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5057786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5067786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
5077786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
5097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
5107786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
5117786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5147786266dSMatt Arsenault;
5157786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_2:
5167786266dSMatt Arsenault; GFX940:       ; %bb.0:
5177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5207786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
5217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5227786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1
5237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
5247786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
5257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5267786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5287786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
5297786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
5307786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 2>
5317786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
5327786266dSMatt Arsenault  ret void
5337786266dSMatt Arsenault}
5347786266dSMatt Arsenault
5357786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_3_3(ptr addrspace(1) inreg %ptr) {
5367786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_3:
5377786266dSMatt Arsenault; GFX900:       ; %bb.0:
5387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5407786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5437786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
5447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
5457786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
5467786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5477786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5497786266dSMatt Arsenault;
5507786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_3:
5517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
5527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
5547786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
5557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
5567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
5577786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
5587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
5597786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
5607786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5617786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
5627786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
5637786266dSMatt Arsenault;
5647786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_3_3:
5657786266dSMatt Arsenault; GFX940:       ; %bb.0:
5667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
5687786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
5697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
5707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
5717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
5727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
5737786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1
5747786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
5757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
5767786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
5777786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
5787786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
5797786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 3>
5807786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
5817786266dSMatt Arsenault  ret void
5827786266dSMatt Arsenault}
5837786266dSMatt Arsenault
5847786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__u_0_0(ptr addrspace(1) inreg %ptr) {
5857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_0_0:
5867786266dSMatt Arsenault; GFX900:       ; %bb.0:
5877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
5897786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
5907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
5917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
5927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
5937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
5947786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
5957786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
5967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
5977786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
5987786266dSMatt Arsenault;
5997786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_0_0:
6007786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6017786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6037786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
6077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
6087786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
6097786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6117786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6127786266dSMatt Arsenault;
6137786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__u_0_0:
6147786266dSMatt Arsenault; GFX940:       ; %bb.0:
6157786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
6187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
6217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
6227786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1
6237786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6267786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
6277786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 0, i32 0>
6287786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
6297786266dSMatt Arsenault  ret void
6307786266dSMatt Arsenault}
6317786266dSMatt Arsenault
6327786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_0_0(ptr addrspace(1) inreg %ptr) {
6337786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_0_0:
6347786266dSMatt Arsenault; GFX900:       ; %bb.0:
6357786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6377786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
6387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6397786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
6407786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
6417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
6427786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
6437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6467786266dSMatt Arsenault;
6477786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_0_0:
6487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
6517786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
6527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
6537786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
6547786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
6557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
6567786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
6577786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
6587786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
6597786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
6607786266dSMatt Arsenault;
6617786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_0_0:
6627786266dSMatt Arsenault; GFX940:       ; %bb.0:
6637786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
6657786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
6667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
6677786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
6687786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
6697786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
6707786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1
6717786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
6727786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
6737786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
6747786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
6757786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> zeroinitializer
6767786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
6777786266dSMatt Arsenault  ret void
6787786266dSMatt Arsenault}
6797786266dSMatt Arsenault
6807786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_0_0(ptr addrspace(1) inreg %ptr) {
6817786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_0_0:
6827786266dSMatt Arsenault; GFX900:       ; %bb.0:
6837786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
6857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
6867786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
6877786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
6887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
6897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
6907786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
6917786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
6927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
6937786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
6947786266dSMatt Arsenault;
6957786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_0_0:
6967786266dSMatt Arsenault; GFX90A:       ; %bb.0:
6977786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6987786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
6997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
7017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
7037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
7047786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
7057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
7067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7087786266dSMatt Arsenault;
7097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_0_0:
7107786266dSMatt Arsenault; GFX940:       ; %bb.0:
7117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
7137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7167786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1
7177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
7187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
7197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
7207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7217786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7227786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
7237786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 0, i32 0>
7247786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
7257786266dSMatt Arsenault  ret void
7267786266dSMatt Arsenault}
7277786266dSMatt Arsenault
7287786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_0_0(ptr addrspace(1) inreg %ptr) {
7297786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_0_0:
7307786266dSMatt Arsenault; GFX900:       ; %bb.0:
7317786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7327786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7337786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7357786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
7367786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v0
7377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v1
7387786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
7397786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7407786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7417786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7427786266dSMatt Arsenault;
7437786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__2_0_0:
7447786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7457786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
7477786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
7487786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
7497786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
7507786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v0
7517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v1
7527786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
7537786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
7547786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
7557786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
7567786266dSMatt Arsenault;
7577786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__2_0_0:
7587786266dSMatt Arsenault; GFX940:       ; %bb.0:
7597786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
7617786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
7627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
7637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
7647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v0
7657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v1
7667786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1
7677786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
7687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
7697786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
7707786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
7717786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 0, i32 0>
7727786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
7737786266dSMatt Arsenault  ret void
7747786266dSMatt Arsenault}
7757786266dSMatt Arsenault
7767786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_0(ptr addrspace(1) inreg %ptr) {
7777786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_0:
7787786266dSMatt Arsenault; GFX900:       ; %bb.0:
7797786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7817786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
7827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
7847786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
7857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
7867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
7877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
7887786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
7897786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
7907786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
7917786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
7927786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
7937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
7947786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
7957786266dSMatt Arsenault;
7967786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_0:
7977786266dSMatt Arsenault; GFX90A:       ; %bb.0:
7987786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8007786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8037786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
8047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
8067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
8077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
8087786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
8097786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
8107786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
8117786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
8127786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8147786266dSMatt Arsenault;
8157786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_0:
8167786266dSMatt Arsenault; GFX940:       ; %bb.0:
8177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8197786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
8207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
8227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
8247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1
8267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
8277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
8287786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
8297786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
8307786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
8317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8337786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
8347786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
8357786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 0>
8367786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
8377786266dSMatt Arsenault  ret void
8387786266dSMatt Arsenault}
8397786266dSMatt Arsenault
8407786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_0(ptr addrspace(1) inreg %ptr) {
8417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_0:
8427786266dSMatt Arsenault; GFX900:       ; %bb.0:
8437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
8457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
8477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
8497786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
8507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
8517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
8527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
8537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
8547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
8557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
8567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
8577786266dSMatt Arsenault;
8587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_0:
8597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
8607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8617786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
8627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8637786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
8647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
8667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
8677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
8687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
8697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
8707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
8717786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
8727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
8737786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
8747786266dSMatt Arsenault;
8757786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_0:
8767786266dSMatt Arsenault; GFX940:       ; %bb.0:
8777786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
8797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8807786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
8817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8827786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1
8837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
8847786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
8857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
8867786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
8877786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
8887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
8897786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
8907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
8917786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
8927786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
8937786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
8947786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>
8957786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
8967786266dSMatt Arsenault  ret void
8977786266dSMatt Arsenault}
8987786266dSMatt Arsenault
8997786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_0(ptr addrspace(1) inreg %ptr) {
9007786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_0:
9017786266dSMatt Arsenault; GFX900:       ; %bb.0:
9027786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9037786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
9047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
9067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
9097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[0:1], s[16:17] offset:16
9117786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
9127786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
9137786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
9147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9157786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9167786266dSMatt Arsenault;
9177786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_0:
9187786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9197786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9207786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
9217786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9227786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
9237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9257786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
9267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9277786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[0:1], s[16:17] offset:16
9287786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
9297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
9307786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
9317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9327786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9337786266dSMatt Arsenault;
9347786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_0:
9357786266dSMatt Arsenault; GFX940:       ; %bb.0:
9367786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
9387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9397786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
9407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
9437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9447786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[0:1], s[0:1] offset:16 sc0 sc1
9457786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
9467786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
9477786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
9487786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
9497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
9507786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
9517786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
9527786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 0>
9537786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
9547786266dSMatt Arsenault  ret void
9557786266dSMatt Arsenault}
9567786266dSMatt Arsenault
9577786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_0(ptr addrspace(1) inreg %ptr) {
9587786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_0:
9597786266dSMatt Arsenault; GFX900:       ; %bb.0:
9607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9617786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
9627786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9637786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
9647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
9667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
9677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
9687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
9697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v4
9707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v5
9717786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
9727786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
9737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
9747786266dSMatt Arsenault;
9757786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_0:
9767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
9777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9787786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
9797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9807786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
9817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
9837786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
9847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
9857786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
9867786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v4
9877786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v5
9887786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
9897786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
9907786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
9917786266dSMatt Arsenault;
9927786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_0:
9937786266dSMatt Arsenault; GFX940:       ; %bb.0:
9947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
9967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
9977786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
9987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
9997786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1
10007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10017786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
10027786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10037786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
10047786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v4
10057786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v5
10067786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
10077786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10087786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10097786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
10107786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
10117786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 0>
10127786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
10137786266dSMatt Arsenault  ret void
10147786266dSMatt Arsenault}
10157786266dSMatt Arsenault
10167786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__u_1_1(ptr addrspace(1) inreg %ptr) {
10177786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_1_1:
10187786266dSMatt Arsenault; GFX900:       ; %bb.0:
10197786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10227786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
10237786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10247786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
10257786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10267786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10277786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10287786266dSMatt Arsenault;
10297786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_1_1:
10307786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10317786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
10357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10367786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
10377786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10387786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10397786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10407786266dSMatt Arsenault;
10417786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__u_1_1:
10427786266dSMatt Arsenault; GFX940:       ; %bb.0:
10437786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
10457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
10477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1
10497786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
10507786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10517786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10527786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
10537786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 1, i32 1>
10547786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
10557786266dSMatt Arsenault  ret void
10567786266dSMatt Arsenault}
10577786266dSMatt Arsenault
10587786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_1_1(ptr addrspace(1) inreg %ptr) {
10597786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_1_1:
10607786266dSMatt Arsenault; GFX900:       ; %bb.0:
10617786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10627786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
10637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
10647786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
10657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
10667786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
10677786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10687786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
10697786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
10707786266dSMatt Arsenault;
10717786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_1_1:
10727786266dSMatt Arsenault; GFX90A:       ; %bb.0:
10737786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10747786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
10757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
10767786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
10777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
10787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
10797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
10807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
10817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
10827786266dSMatt Arsenault;
10837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_1_1:
10847786266dSMatt Arsenault; GFX940:       ; %bb.0:
10857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10867786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
10877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
10887786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
10897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
10907786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1
10917786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
10927786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
10937786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
10947786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
10957786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 1, i32 1>
10967786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
10977786266dSMatt Arsenault  ret void
10987786266dSMatt Arsenault}
10997786266dSMatt Arsenault
11007786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_1_1(ptr addrspace(1) inreg %ptr) {
11017786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_1_1:
11027786266dSMatt Arsenault; GFX900:       ; %bb.0:
11037786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11057786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
11067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11077786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11087786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
11097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
11107786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
11117786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
11127786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
11137786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
11147786266dSMatt Arsenault;
11157786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_1_1:
11167786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11177786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11197786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
11207786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11217786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
11227786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
11237786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
11247786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
11257786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
11267786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11277786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11287786266dSMatt Arsenault;
11297786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_1_1:
11307786266dSMatt Arsenault; GFX940:       ; %bb.0:
11317786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
11347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11357786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
11367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
11377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
11387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1
11397786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
11407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11417786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11427786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
11437786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 1, i32 1>
11447786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
11457786266dSMatt Arsenault  ret void
11467786266dSMatt Arsenault}
11477786266dSMatt Arsenault
11487786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_1_1(ptr addrspace(1) inreg %ptr) {
11497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_1_1:
11507786266dSMatt Arsenault; GFX900:       ; %bb.0:
11517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
11537786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11547786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
11557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11567786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
11577786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0: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_v3p0_v2p0__2_1_1:
11627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
11637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
11657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
11667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
11677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
11687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
11697786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
11707786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
11717786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
11727786266dSMatt Arsenault;
11737786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__2_1_1:
11747786266dSMatt Arsenault; GFX940:       ; %bb.0:
11757786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11767786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
11777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
11787786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
11797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
11807786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1
11817786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
11827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
11837786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
11847786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
11857786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 1, i32 1>
11867786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
11877786266dSMatt Arsenault  ret void
11887786266dSMatt Arsenault}
11897786266dSMatt Arsenault
11907786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_1(ptr addrspace(1) inreg %ptr) {
11917786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_1:
11927786266dSMatt Arsenault; GFX900:       ; %bb.0:
11937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
11967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
11977786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
11987786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
11997786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
12007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12017786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
12027786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
12037786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
12047786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
12057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12077786266dSMatt Arsenault;
12087786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_1:
12097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12127786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
12137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12147786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
12157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12167786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
12177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12187786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
12197786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
12207786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
12217786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
12227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12237786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12247786266dSMatt Arsenault;
12257786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_1:
12267786266dSMatt Arsenault; GFX940:       ; %bb.0:
12277786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12297786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
12307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12317786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
12327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12337786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
12347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12357786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1
12367786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
12377786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
12387786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
12397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12407786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12417786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
12427786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
12437786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 1>
12447786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
12457786266dSMatt Arsenault  ret void
12467786266dSMatt Arsenault}
12477786266dSMatt Arsenault
12487786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_1(ptr addrspace(1) inreg %ptr) {
12497786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_1:
12507786266dSMatt Arsenault; GFX900:       ; %bb.0:
12517786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12537786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
12547786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12557786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
12567786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
12577786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
12587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
12597786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
12607786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
12617786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
12627786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
12637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
12647786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
12657786266dSMatt Arsenault;
12667786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_1:
12677786266dSMatt Arsenault; GFX90A:       ; %bb.0:
12687786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12707786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
12717786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
12737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
12747786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
12757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
12767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
12777786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
12787786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
12797786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
12807786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
12817786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
12827786266dSMatt Arsenault;
12837786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_1:
12847786266dSMatt Arsenault; GFX940:       ; %bb.0:
12857786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12877786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
12887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
12907786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
12917786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
12927786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
12937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1
12947786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
12957786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
12967786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
12977786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
12987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
12997786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
13007786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
13017786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>
13027786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
13037786266dSMatt Arsenault  ret void
13047786266dSMatt Arsenault}
13057786266dSMatt Arsenault
13067786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_1(ptr addrspace(1) inreg %ptr) {
13077786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_1:
13087786266dSMatt Arsenault; GFX900:       ; %bb.0:
13097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13107786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
13117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13127786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
13137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13147786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13157786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
13167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13177786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
13187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v6
13197786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v7
13207786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
13217786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
13227786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
13237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13247786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13257786266dSMatt Arsenault;
13267786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_1:
13277786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13287786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13297786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
13307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13317786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
13327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13347786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
13357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13367786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
13377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v6
13387786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v7
13397786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
13407786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
13417786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]
13427786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
13437786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
13447786266dSMatt Arsenault;
13457786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_1:
13467786266dSMatt Arsenault; GFX940:       ; %bb.0:
13477786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
13497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13507786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
13517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
13537786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
13547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
13557786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1
13567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v6
13577786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v7
13587786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
13597786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
13607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] sc0 sc1
13617786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
13627786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
13637786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
13647786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
13657786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 1>
13667786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
13677786266dSMatt Arsenault  ret void
13687786266dSMatt Arsenault}
13697786266dSMatt Arsenault
13707786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_1(ptr addrspace(1) inreg %ptr) {
13717786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_1:
13727786266dSMatt Arsenault; GFX900:       ; %bb.0:
13737786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13747786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
13757786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13767786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
13777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
13797786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
13807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
13817786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
13827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
13837786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
13847786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
13857786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
13867786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
13877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
13887786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
13897786266dSMatt Arsenault;
13907786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_1:
13917786266dSMatt Arsenault; GFX90A:       ; %bb.0:
13927786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13937786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
13947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13957786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
13967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
13977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
13987786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
13997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14007786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:16
14017786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
14027786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
14037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
14047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
14057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
14067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14087786266dSMatt Arsenault;
14097786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_1:
14107786266dSMatt Arsenault; GFX940:       ; %bb.0:
14117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14127786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
14137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
14157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14177786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
14187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14197786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] offset:16 sc0 sc1
14207786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
14217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
14227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
14237786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
14247786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
14257786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14267786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14277786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
14287786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
14297786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 1>
14307786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
14317786266dSMatt Arsenault  ret void
14327786266dSMatt Arsenault}
14337786266dSMatt Arsenault
14347786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__u_2_2(ptr addrspace(1) inreg %ptr) {
14357786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3p0_v2p0__u_2_2:
14367786266dSMatt Arsenault; GFX9:       ; %bb.0:
14377786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14387786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
14397786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
14407786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 2, i32 2>
14417786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
14427786266dSMatt Arsenault  ret void
14437786266dSMatt Arsenault}
14447786266dSMatt Arsenault
14457786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_2_2(ptr addrspace(1) inreg %ptr) {
14467786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_2_2:
14477786266dSMatt Arsenault; GFX900:       ; %bb.0:
14487786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14507786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14517786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
14527786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14537786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14557786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14567786266dSMatt Arsenault;
14577786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_2_2:
14587786266dSMatt Arsenault; GFX90A:       ; %bb.0:
14597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14607786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
14617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
14627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
14637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
14647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14657786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
14667786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
14677786266dSMatt Arsenault;
14687786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_2_2:
14697786266dSMatt Arsenault; GFX940:       ; %bb.0:
14707786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
14727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
14737786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
14747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
14757786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
14767786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
14777786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
14787786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
14797786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 2, i32 2>
14807786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
14817786266dSMatt Arsenault  ret void
14827786266dSMatt Arsenault}
14837786266dSMatt Arsenault
14847786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_2_2(ptr addrspace(1) inreg %ptr) {
14857786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_2_2:
14867786266dSMatt Arsenault; GFX900:       ; %bb.0:
14877786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14887786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
14897786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
14907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
14917786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
14927786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
14937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
14947786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
14957786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
14967786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
14977786266dSMatt Arsenault;
14987786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_2_2:
14997786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15007786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15017786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15027786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
15037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
15057786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
15067786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
15077786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], 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_v3p0_v2p0__1_2_2:
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:3]
15167786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15177786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
15187786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
15197786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
15207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
15217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15237786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
15247786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 2, i32 2>
15257786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
15267786266dSMatt Arsenault  ret void
15277786266dSMatt Arsenault}
15287786266dSMatt Arsenault
15297786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_2_2(ptr addrspace(1) inreg %ptr) {
15307786266dSMatt Arsenault; GFX9-LABEL: v_shuffle_v3p0_v2p0__2_2_2:
15317786266dSMatt Arsenault; GFX9:       ; %bb.0:
15327786266dSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15337786266dSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
15347786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
15357786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 2, i32 2>
15367786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
15377786266dSMatt Arsenault  ret void
15387786266dSMatt Arsenault}
15397786266dSMatt Arsenault
15407786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_2(ptr addrspace(1) inreg %ptr) {
15417786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_2:
15427786266dSMatt Arsenault; GFX900:       ; %bb.0:
15437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15447786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
15457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15467786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
15477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15487786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
15497786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
15507786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
15517786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
15527786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
15537786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
15547786266dSMatt Arsenault;
15557786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_2:
15567786266dSMatt Arsenault; GFX90A:       ; %bb.0:
15577786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15587786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
15597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
15607786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
15617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
15627786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
15637786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
15647786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16
15657786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
15667786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
15677786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
15687786266dSMatt Arsenault;
15697786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_2:
15707786266dSMatt Arsenault; GFX940:       ; %bb.0:
15717786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15727786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
15737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
15747786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
15757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
15767786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:16 sc0 sc1
15777786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
15787786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
15797786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
15807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
15817786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
15827786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
15837786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
15847786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 2>
15857786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
15867786266dSMatt Arsenault  ret void
15877786266dSMatt Arsenault}
15887786266dSMatt Arsenault
15897786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_2(ptr addrspace(1) inreg %ptr) {
15907786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_2:
15917786266dSMatt Arsenault; GFX900:       ; %bb.0:
15927786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15937786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
15947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
15957786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
15967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
15977786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
15987786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
15997786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
16007786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16017786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16027786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16037786266dSMatt Arsenault;
16047786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_2:
16057786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16067786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16077786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
16087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16097786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
16107786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16117786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16
16127786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
16137786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
16147786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
16157786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16167786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16177786266dSMatt Arsenault;
16187786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_2:
16197786266dSMatt Arsenault; GFX940:       ; %bb.0:
16207786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
16227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16237786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
16247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16257786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] offset:16 sc0 sc1
16267786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
16277786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
16287786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
16297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16307786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16317786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
16327786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
16337786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>
16347786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
16357786266dSMatt Arsenault  ret void
16367786266dSMatt Arsenault}
16377786266dSMatt Arsenault
16387786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_2(ptr addrspace(1) inreg %ptr) {
16397786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_2:
16407786266dSMatt Arsenault; GFX900:       ; %bb.0:
16417786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16437786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
16447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16457786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
16467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
16477786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
16487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
16497786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:16
16507786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
16517786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
16527786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
16537786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
16547786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
16557786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
16567786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
16577786266dSMatt Arsenault;
16587786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_2:
16597786266dSMatt Arsenault; GFX90A:       ; %bb.0:
16607786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16617786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16627786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
16637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16647786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
16657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
16667786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
16677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
16687786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:16
16697786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
16707786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
16717786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
16727786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
16737786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
16747786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
16757786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
16767786266dSMatt Arsenault;
16777786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_2:
16787786266dSMatt Arsenault; GFX940:       ; %bb.0:
16797786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16817786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
16827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16837786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
16847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
16857786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
16867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
16877786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[2:3], s[0:1] offset:16 sc0 sc1
16887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
16897786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
16907786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
16917786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
16927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
16937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
16947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
16957786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
16967786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
16977786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 2>
16987786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
16997786266dSMatt Arsenault  ret void
17007786266dSMatt Arsenault}
17017786266dSMatt Arsenault
17027786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_2(ptr addrspace(1) inreg %ptr) {
17037786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_2:
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:3]
17087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17097786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
17107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
17127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
17147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
17157786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16
17167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
17177786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17187786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17197786266dSMatt Arsenault;
17207786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_2:
17217786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17227786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17237786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17247786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
17257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17267786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
17277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
17297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
17317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
17327786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16
17337786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
17347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17357786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17367786266dSMatt Arsenault;
17377786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_2:
17387786266dSMatt Arsenault; GFX940:       ; %bb.0:
17397786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17417786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
17427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17437786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
17447786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17457786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
17467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17477786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[4:5], s[0:1] offset:16 sc0 sc1
17487786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
17497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
17507786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
17517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17527786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17537786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
17547786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
17557786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 2>
17567786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
17577786266dSMatt Arsenault  ret void
17587786266dSMatt Arsenault}
17597786266dSMatt Arsenault
17607786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__u_3_3(ptr addrspace(1) inreg %ptr) {
17617786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_3_3:
17627786266dSMatt Arsenault; GFX900:       ; %bb.0:
17637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17647786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
17657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
17667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
17677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
17687786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
17697786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17707786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
17717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
17727786266dSMatt Arsenault;
17737786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_3_3:
17747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
17757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17767786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
17777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
17787786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
17797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
17807786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
17817786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
17827786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
17837786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
17847786266dSMatt Arsenault;
17857786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__u_3_3:
17867786266dSMatt Arsenault; GFX940:       ; %bb.0:
17877786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17887786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
17897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
17907786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
17917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
17927786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1
17937786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
17947786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
17957786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
17967786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
17977786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
17987786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>
17997786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
18007786266dSMatt Arsenault  ret void
18017786266dSMatt Arsenault}
18027786266dSMatt Arsenault
18037786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__0_3_3(ptr addrspace(1) inreg %ptr) {
18047786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_3_3:
18057786266dSMatt Arsenault; GFX900:       ; %bb.0:
18067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18087786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
18097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18117786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
18127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18137786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
18147786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
18157786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
18167786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:16
18177786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
18187786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18207786266dSMatt Arsenault;
18217786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_3_3:
18227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18257786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
18267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18287786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
18297786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18307786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
18317786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
18327786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
18337786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:16
18347786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]
18357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18377786266dSMatt Arsenault;
18387786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__0_3_3:
18397786266dSMatt Arsenault; GFX940:       ; %bb.0:
18407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18427786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
18437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18447786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
18457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
18467786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
18477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
18487786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] offset:16 sc0 sc1
18497786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
18507786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
18517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] sc0 sc1
18527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
18537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
18547786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
18557786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
18567786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 0, i32 3, i32 3>
18577786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
18587786266dSMatt Arsenault  ret void
18597786266dSMatt Arsenault}
18607786266dSMatt Arsenault
18617786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__1_3_3(ptr addrspace(1) inreg %ptr) {
18627786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_3_3:
18637786266dSMatt Arsenault; GFX900:       ; %bb.0:
18647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18667786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
18677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18687786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
18697786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
18707786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
18717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
18727786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v2
18737786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v3
18747786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17] offset:16
18757786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
18767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
18777786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
18787786266dSMatt Arsenault;
18797786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_3_3:
18807786266dSMatt Arsenault; GFX90A:       ; %bb.0:
18817786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18837786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
18847786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
18867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
18877786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
18887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
18897786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v2
18907786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v3
18917786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17] offset:16
18927786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]
18937786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
18947786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
18957786266dSMatt Arsenault;
18967786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__1_3_3:
18977786266dSMatt Arsenault; GFX940:       ; %bb.0:
18987786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18997786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19007786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
19017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19027786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
19037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19047786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
19057786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19067786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[6:7], s[0:1] offset:16 sc0 sc1
19077786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v2
19087786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v3
19097786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] sc0 sc1
19107786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19117786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19127786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
19137786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
19147786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 1, i32 3, i32 3>
19157786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
19167786266dSMatt Arsenault  ret void
19177786266dSMatt Arsenault}
19187786266dSMatt Arsenault
19197786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__2_3_3(ptr addrspace(1) inreg %ptr) {
19207786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_3_3:
19217786266dSMatt Arsenault; GFX900:       ; %bb.0:
19227786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
19247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19257786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
19267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
19287786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19297786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19317786266dSMatt Arsenault;
19327786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__2_3_3:
19337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19357786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
19367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19377786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
19387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19397786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
19407786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19417786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19437786266dSMatt Arsenault;
19447786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__2_3_3:
19457786266dSMatt Arsenault; GFX940:       ; %bb.0:
19467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19477786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19497786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
19507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19517786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1
19527786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
19537786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
19547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
19557786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
19567786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
19577786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 2, i32 3, i32 3>
19587786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
19597786266dSMatt Arsenault  ret void
19607786266dSMatt Arsenault}
19617786266dSMatt Arsenault
19627786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_u_3(ptr addrspace(1) inreg %ptr) {
19637786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_3:
19647786266dSMatt Arsenault; GFX900:       ; %bb.0:
19657786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
19677786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
19687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
19697786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, 0
19707786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v2
19717786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v3
19727786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
19737786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19747786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
19757786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
19767786266dSMatt Arsenault;
19777786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_3:
19787786266dSMatt Arsenault; GFX90A:       ; %bb.0:
19797786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
19817786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
19827786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
19837786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, 0
19847786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v2
19857786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v3
19867786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16
19877786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]
19887786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
19897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
19907786266dSMatt Arsenault;
19917786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_u_3:
19927786266dSMatt Arsenault; GFX940:       ; %bb.0:
19937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
19957786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
19967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
19977786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, 0
19987786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v2
19997786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v3
20007786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16 sc0 sc1
20017786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] sc0 sc1
20027786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20037786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20047786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
20057786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
20067786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>
20077786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
20087786266dSMatt Arsenault  ret void
20097786266dSMatt Arsenault}
20107786266dSMatt Arsenault
20117786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_0_3(ptr addrspace(1) inreg %ptr) {
20127786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_3:
20137786266dSMatt Arsenault; GFX900:       ; %bb.0:
20147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20167786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
20177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20187786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
20197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20207786266dSMatt Arsenault; GFX900-NEXT:    ; def v[2:5]
20217786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20227786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:16
20237786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v2, v4
20247786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v3, v5
20257786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
20267786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
20277786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
20287786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20307786266dSMatt Arsenault;
20317786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_3:
20327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20357786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
20367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20377786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
20387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20397786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[2:5]
20407786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20417786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:16
20427786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v2, v4
20437786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v3, v5
20447786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
20457786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
20467786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
20477786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
20487786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
20497786266dSMatt Arsenault;
20507786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_0_3:
20517786266dSMatt Arsenault; GFX940:       ; %bb.0:
20527786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20547786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
20557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20567786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
20577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
20587786266dSMatt Arsenault; GFX940-NEXT:    ; def v[2:5]
20597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
20607786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] offset:16 sc0 sc1
20617786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v2, v4
20627786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v3, v5
20637786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
20647786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
20657786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
20667786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
20677786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
20687786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
20697786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
20707786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 3>
20717786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
20727786266dSMatt Arsenault  ret void
20737786266dSMatt Arsenault}
20747786266dSMatt Arsenault
20757786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_1_3(ptr addrspace(1) inreg %ptr) {
20767786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_3:
20777786266dSMatt Arsenault; GFX900:       ; %bb.0:
20787786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20807786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
20817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20827786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v8, 0
20837786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
20847786266dSMatt Arsenault; GFX900-NEXT:    ; def v[4:7]
20857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
20867786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v0, v6
20877786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v1, v7
20887786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17] offset:16
20897786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
20907786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
20917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
20927786266dSMatt Arsenault;
20937786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_3:
20947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
20957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
20977786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
20987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
20997786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v8, 0
21007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21017786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[4:7]
21027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21037786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v0, v6
21047786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v1, v7
21057786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17] offset:16
21067786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]
21077786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21087786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21097786266dSMatt Arsenault;
21107786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_1_3:
21117786266dSMatt Arsenault; GFX940:       ; %bb.0:
21127786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21137786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21147786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
21157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21167786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v8, 0
21177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21187786266dSMatt Arsenault; GFX940-NEXT:    ; def v[4:7]
21197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21207786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v8, v[6:7], s[0:1] offset:16 sc0 sc1
21217786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v0, v6
21227786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v1, v7
21237786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] sc0 sc1
21247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21257786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21267786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
21277786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
21287786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 3>
21297786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
21307786266dSMatt Arsenault  ret void
21317786266dSMatt Arsenault}
21327786266dSMatt Arsenault
21337786266dSMatt Arsenaultdefine void @v_shuffle_v3p0_v2p0__3_2_3(ptr addrspace(1) inreg %ptr) {
21347786266dSMatt Arsenault; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_3:
21357786266dSMatt Arsenault; GFX900:       ; %bb.0:
21367786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21377786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v6, 0
21387786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
21397786266dSMatt Arsenault; GFX900-NEXT:    ; def v[0:3]
21407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
21417786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v4, v0
21427786266dSMatt Arsenault; GFX900-NEXT:    v_mov_b32_e32 v5, v1
21437786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:16
21447786266dSMatt Arsenault; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
21457786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0)
21467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
21477786266dSMatt Arsenault;
21487786266dSMatt Arsenault; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_3:
21497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
21507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21517786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v6, 0
21527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
21537786266dSMatt Arsenault; GFX90A-NEXT:    ; def v[0:3]
21547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
21557786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v4, v0
21567786266dSMatt Arsenault; GFX90A-NEXT:    v_mov_b32_e32 v5, v1
21577786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:16
21587786266dSMatt Arsenault; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]
21597786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0)
21607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
21617786266dSMatt Arsenault;
21627786266dSMatt Arsenault; GFX940-LABEL: v_shuffle_v3p0_v2p0__3_2_3:
21637786266dSMatt Arsenault; GFX940:       ; %bb.0:
21647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21657786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v6, 0
21667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
21677786266dSMatt Arsenault; GFX940-NEXT:    ; def v[0:3]
21687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
21697786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx2 v6, v[2:3], s[0:1] offset:16 sc0 sc1
21707786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v4, v0
21717786266dSMatt Arsenault; GFX940-NEXT:    v_mov_b32_e32 v5, v1
21727786266dSMatt Arsenault; GFX940-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] sc0 sc1
21737786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0)
21747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
21757786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=v"()
21767786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=v"()
21777786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 3>
21787786266dSMatt Arsenault  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32
21797786266dSMatt Arsenault  ret void
21807786266dSMatt Arsenault}
21817786266dSMatt Arsenault
21827786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_u_u() {
2183*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_u_u:
2184*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2185*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2186*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2187*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
2188*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2189*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
21907786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
21917786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> poison
2192*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
21937786266dSMatt Arsenault  ret void
21947786266dSMatt Arsenault}
21957786266dSMatt Arsenault
21967786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_u_u() {
21977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_u_u:
21987786266dSMatt Arsenault; GFX900:       ; %bb.0:
21997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2201*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
22027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22037786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2204*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
22057786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22067786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22077786266dSMatt Arsenault;
22087786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_u_u:
22097786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22107786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2212*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
22137786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2215*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
22167786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22177786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22187786266dSMatt Arsenault;
22197786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__0_u_u:
22207786266dSMatt Arsenault; GFX940:       ; %bb.0:
22217786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22227786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2223*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
22247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22257786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
22267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2227*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
22287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22297786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22307786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
22317786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 poison, i32 poison>
2232*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
22337786266dSMatt Arsenault  ret void
22347786266dSMatt Arsenault}
22357786266dSMatt Arsenault
22367786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_u_u() {
22377786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_u_u:
22387786266dSMatt Arsenault; GFX900:       ; %bb.0:
22397786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22407786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
22417786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
22427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2243*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2244*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
22457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2246*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
22477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
22487786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
22497786266dSMatt Arsenault;
22507786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_u_u:
22517786266dSMatt Arsenault; GFX90A:       ; %bb.0:
22527786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
22547786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
22557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2256*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2257*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
22587786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2259*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
22607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
22617786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
22627786266dSMatt Arsenault;
22637786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__1_u_u:
22647786266dSMatt Arsenault; GFX940:       ; %bb.0:
22657786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22667786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
22677786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
22687786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2269*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2270*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
22717786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2272*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
22737786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
22747786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
22757786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
22767786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 poison, i32 poison>
2277*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
22787786266dSMatt Arsenault  ret void
22797786266dSMatt Arsenault}
22807786266dSMatt Arsenault
22817786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_u_u() {
2282*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_u_u:
2283*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2284*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2285*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2286*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
2287*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2288*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
22897786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
22907786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 poison, i32 poison>
2291*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
22927786266dSMatt Arsenault  ret void
22937786266dSMatt Arsenault}
22947786266dSMatt Arsenault
22957786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_u() {
22967786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_u:
22977786266dSMatt Arsenault; GFX900:       ; %bb.0:
22987786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
22997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23007786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
23017786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2302*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2303*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
23047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2305*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
23067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23087786266dSMatt Arsenault;
23097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_u:
23107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23137786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
23147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2315*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2316*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
23177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2318*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
23197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23207786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23217786266dSMatt Arsenault;
23227786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_u:
23237786266dSMatt Arsenault; GFX940:       ; %bb.0:
23247786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23257786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23267786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
23277786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2328*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2329*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
23307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2331*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
23327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23337786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23347786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
23357786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
23367786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>
2337*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
23387786266dSMatt Arsenault  ret void
23397786266dSMatt Arsenault}
23407786266dSMatt Arsenault
23417786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_u() {
23427786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_u:
23437786266dSMatt Arsenault; GFX900:       ; %bb.0:
23447786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
23467786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
23477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23487786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2349*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
2350*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2351*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
2352*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
2353*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
2354*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
2355*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2356*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
23577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
23587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
23597786266dSMatt Arsenault;
23607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_u:
23617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
23627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
23647786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
23657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2367*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
2368*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2369*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
2370*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
2371*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
2372*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
2373*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2374*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
23757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
23767786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
23777786266dSMatt Arsenault;
23787786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_u:
23797786266dSMatt Arsenault; GFX940:       ; %bb.0:
23807786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
23817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23827786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
23837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
23857786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
23867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2387*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
2388*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
2389*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2390*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
23917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2392*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
23937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
23947786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
23957786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
23967786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
23977786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>
2398*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
23997786266dSMatt Arsenault  ret void
24007786266dSMatt Arsenault}
24017786266dSMatt Arsenault
24027786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_u() {
24037786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_u:
24047786266dSMatt Arsenault; GFX900:       ; %bb.0:
24057786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
24077786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
24087786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2410*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
2411*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2412*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2413*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
2414*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2415*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
24167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24177786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24187786266dSMatt Arsenault;
24197786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_u:
24207786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24217786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
24237786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
24247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24257786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2426*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
2427*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2428*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2429*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
2430*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2431*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
24327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24337786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24347786266dSMatt Arsenault;
24357786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_u:
24367786266dSMatt Arsenault; GFX940:       ; %bb.0:
24377786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2439*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
2440*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2441*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
24427786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
24437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2444*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2445*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
24467786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2447*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
24487786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
24497786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
24507786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
24517786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
24527786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>
2453*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
24547786266dSMatt Arsenault  ret void
24557786266dSMatt Arsenault}
24567786266dSMatt Arsenault
24577786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_u() {
24587786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_u:
24597786266dSMatt Arsenault; GFX900:       ; %bb.0:
24607786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24617786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2462*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
24637786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2464*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2465*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
2466*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
2467*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
24687786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2469*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
24707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
24717786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
24727786266dSMatt Arsenault;
24737786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_u:
24747786266dSMatt Arsenault; GFX90A:       ; %bb.0:
24757786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24767786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2477*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
24787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2479*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2480*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
2481*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
2482*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
24837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2484*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
24857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
24867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
24877786266dSMatt Arsenault;
24887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_u:
24897786266dSMatt Arsenault; GFX940:       ; %bb.0:
24907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
24917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2492*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
24937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2494*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2495*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
2496*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2497*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
24987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2499*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
25007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25027786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
25037786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
25047786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>
2505*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
25067786266dSMatt Arsenault  ret void
25077786266dSMatt Arsenault}
25087786266dSMatt Arsenault
25097786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_u() {
2510*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_3_u:
2511*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2512*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2513*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2514*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
2515*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2516*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
2517*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
2518*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2519*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
2520*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2521*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
25227786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
25237786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
25247786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>
2525*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
25267786266dSMatt Arsenault  ret void
25277786266dSMatt Arsenault}
25287786266dSMatt Arsenault
25297786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_0() {
25307786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_3_0:
25317786266dSMatt Arsenault; GFX900:       ; %bb.0:
25327786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25347786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
25357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2537*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
2538*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2539*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
2540*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
2541*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
2542*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
2543*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2544*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
25457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25467786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
25477786266dSMatt Arsenault;
25487786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_3_0:
25497786266dSMatt Arsenault; GFX90A:       ; %bb.0:
25507786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25517786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
25527786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
25537786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2555*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
2556*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2557*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
2558*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
2559*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
2560*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
2561*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2562*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
25637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
25647786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
25657786266dSMatt Arsenault;
25667786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_3_0:
25677786266dSMatt Arsenault; GFX940:       ; %bb.0:
25687786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2570*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
2571*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2572*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
25737786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
25747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2575*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
2576*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
2577*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
2578*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
25797786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2580*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
25817786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
25827786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
25837786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
25847786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
25857786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 0>
2586*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
25877786266dSMatt Arsenault  ret void
25887786266dSMatt Arsenault}
25897786266dSMatt Arsenault
25907786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_1() {
25917786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_3_1:
25927786266dSMatt Arsenault; GFX900:       ; %bb.0:
25937786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25957786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
25967786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
25977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
25987786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
25997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26007786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
26017786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
2602*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
2603*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
26047786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2605*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
26067786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26077786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26087786266dSMatt Arsenault;
26097786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_3_1:
26107786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26117786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26137786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
26147786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
26167786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
26177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26187786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
26197786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
2620*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
2621*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
26227786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2623*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
26247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26257786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26267786266dSMatt Arsenault;
26277786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_3_1:
26287786266dSMatt Arsenault; GFX940:       ; %bb.0:
26297786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2631*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
26327786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
26347786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
26357786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2636*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s10
2637*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s11
2638*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
2639*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
26407786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2641*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
26427786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
26437786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
26447786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
26457786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
26467786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 1>
2647*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
26487786266dSMatt Arsenault  ret void
26497786266dSMatt Arsenault}
26507786266dSMatt Arsenault
26517786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_2() {
26527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_3_2:
26537786266dSMatt Arsenault; GFX900:       ; %bb.0:
26547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2656*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
26577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2658*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2659*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
2660*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
2661*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s7
2662*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
2663*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
26647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2665*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
26667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
26677786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
26687786266dSMatt Arsenault;
26697786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_3_2:
26707786266dSMatt Arsenault; GFX90A:       ; %bb.0:
26717786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26727786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2673*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
26747786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2675*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2676*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
2677*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
2678*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s7
2679*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
2680*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
26817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2682*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
26837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
26847786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
26857786266dSMatt Arsenault;
26867786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_3_2:
26877786266dSMatt Arsenault; GFX940:       ; %bb.0:
26887786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
26897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2690*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
26917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2692*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2693*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
2694*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
2695*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
2696*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
2697*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
26987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2699*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
27007786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27017786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27027786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
27037786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
27047786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 2>
2705*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
27067786266dSMatt Arsenault  ret void
27077786266dSMatt Arsenault}
27087786266dSMatt Arsenault
27097786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_3_3() {
2710*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_3_3:
2711*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2712*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2713*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2714*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
2715*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2716*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
2717*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
2718*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
2719*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
2720*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2721*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
2722*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2723*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
27247786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
27257786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
27267786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 3>
2727*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
27287786266dSMatt Arsenault  ret void
27297786266dSMatt Arsenault}
27307786266dSMatt Arsenault
27317786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_0_0() {
27327786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__u_0_0:
27337786266dSMatt Arsenault; GFX900:       ; %bb.0:
27347786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
27367786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
27377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2738*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
2739*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
2740*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
2741*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
27427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2743*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
27447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
27457786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
27467786266dSMatt Arsenault;
27477786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__u_0_0:
27487786266dSMatt Arsenault; GFX90A:       ; %bb.0:
27497786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
27517786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
27527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2753*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
2754*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
2755*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
2756*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
27577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2758*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
27597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
27607786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
27617786266dSMatt Arsenault;
27627786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__u_0_0:
27637786266dSMatt Arsenault; GFX940:       ; %bb.0:
27647786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
27657786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
27667786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
27677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2768*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2769*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
2770*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
2771*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
27727786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2773*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
27747786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
27757786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
27767786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
27777786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 0, i32 0>
2778*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
27797786266dSMatt Arsenault  ret void
27807786266dSMatt Arsenault}
27817786266dSMatt Arsenault
27827786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_0_0() {
2783*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__0_0_0:
2784*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
2785*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2786*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2787*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
2788*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2789*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s10, s8
2790*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s11, s9
2791*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s8
2792*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s9
2793*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
2794*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
2795*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
2796*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
27977786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
27987786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> zeroinitializer
2799*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
28007786266dSMatt Arsenault  ret void
28017786266dSMatt Arsenault}
28027786266dSMatt Arsenault
28037786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_0_0() {
28047786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_0_0:
28057786266dSMatt Arsenault; GFX900:       ; %bb.0:
28067786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28077786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2808*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
28097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2810*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
2811*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
2812*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
2813*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
2814*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
2815*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
28167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2817*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
28187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28197786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28207786266dSMatt Arsenault;
28217786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_0_0:
28227786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28237786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28247786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2825*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
28267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2827*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
2828*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
2829*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
2830*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
2831*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
2832*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
28337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2834*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
28357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28367786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28377786266dSMatt Arsenault;
28387786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__1_0_0:
28397786266dSMatt Arsenault; GFX940:       ; %bb.0:
28407786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28417786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2842*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
28437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2844*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
2845*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
2846*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2847*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
2848*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
2849*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
28507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2851*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
28527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
28537786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
28547786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
28557786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 0, i32 0>
2856*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
28577786266dSMatt Arsenault  ret void
28587786266dSMatt Arsenault}
28597786266dSMatt Arsenault
28607786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_0_0() {
28617786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__2_0_0:
28627786266dSMatt Arsenault; GFX900:       ; %bb.0:
28637786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28647786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
28657786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
28667786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2867*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
2868*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
2869*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
2870*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
28717786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2872*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
28737786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
28747786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
28757786266dSMatt Arsenault;
28767786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__2_0_0:
28777786266dSMatt Arsenault; GFX90A:       ; %bb.0:
28787786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28797786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
28807786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
28817786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2882*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
2883*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
2884*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
2885*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
28867786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2887*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
28887786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
28897786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
28907786266dSMatt Arsenault;
28917786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__2_0_0:
28927786266dSMatt Arsenault; GFX940:       ; %bb.0:
28937786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28947786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
28957786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
28967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2897*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2898*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
2899*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
2900*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
29017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2902*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
29037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29057786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
29067786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 0, i32 0>
2907*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
29087786266dSMatt Arsenault  ret void
29097786266dSMatt Arsenault}
29107786266dSMatt Arsenault
29117786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_0() {
29127786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_0:
29137786266dSMatt Arsenault; GFX900:       ; %bb.0:
29147786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29157786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29167786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
29177786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2919*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
2920*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2921*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
2922*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
2923*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
2924*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
2925*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
2926*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
2927*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2928*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
29297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29317786266dSMatt Arsenault;
29327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_0:
29337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
29367786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
29377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2939*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
2940*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
2941*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
2942*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
2943*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
2944*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
2945*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
2946*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
2947*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
2948*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
29497786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
29507786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
29517786266dSMatt Arsenault;
29527786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_0:
29537786266dSMatt Arsenault; GFX940:       ; %bb.0:
29547786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
29577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
29597786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
29607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
2961*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
2962*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
2963*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
2964*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
2965*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
2966*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
29677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
2968*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
29697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
29707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
29717786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
29727786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
29737786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 0>
2974*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
29757786266dSMatt Arsenault  ret void
29767786266dSMatt Arsenault}
29777786266dSMatt Arsenault
29787786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_0() {
29797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_0:
29807786266dSMatt Arsenault; GFX900:       ; %bb.0:
29817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
29827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
29837786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
29847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29857786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2986*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
2987*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
2988*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
2989*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
2990*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
2991*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
2992*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
2993*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
29947786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
29957786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
29967786266dSMatt Arsenault;
29977786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_0:
29987786266dSMatt Arsenault; GFX90A:       ; %bb.0:
29997786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30017786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
30027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30037786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3004*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3005*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3006*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
3007*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
3008*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
3009*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
3010*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3011*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
30127786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30137786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30147786266dSMatt Arsenault;
30157786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_0:
30167786266dSMatt Arsenault; GFX940:       ; %bb.0:
30177786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30187786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30197786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
30207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30227786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
30237786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3024*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3025*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
3026*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
3027*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
30287786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3029*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
30307786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30317786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30327786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
30337786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
30347786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>
3035*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
30367786266dSMatt Arsenault  ret void
30377786266dSMatt Arsenault}
30387786266dSMatt Arsenault
30397786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_0() {
30407786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_0:
30417786266dSMatt Arsenault; GFX900:       ; %bb.0:
30427786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30437786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
30447786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
30457786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3047*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3048*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3049*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
3050*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
3051*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
3052*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s7
3053*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
3054*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
3055*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3056*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
30577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
30587786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
30597786266dSMatt Arsenault;
30607786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_0:
30617786266dSMatt Arsenault; GFX90A:       ; %bb.0:
30627786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30637786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
30647786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
30657786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3067*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3068*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3069*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
3070*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
3071*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
3072*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s7
3073*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
3074*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
3075*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3076*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
30777786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
30787786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
30797786266dSMatt Arsenault;
30807786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_0:
30817786266dSMatt Arsenault; GFX940:       ; %bb.0:
30827786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
30837786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30847786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
30857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30867786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
30877786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
30887786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3089*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3090*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
3091*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
3092*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
3093*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
3094*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
30957786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3096*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
30977786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
30987786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
30997786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
31007786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
31017786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 0>
3102*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
31037786266dSMatt Arsenault  ret void
31047786266dSMatt Arsenault}
31057786266dSMatt Arsenault
31067786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_0() {
31077786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_0:
31087786266dSMatt Arsenault; GFX900:       ; %bb.0:
31097786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31107786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
31117786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
31127786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31137786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3114*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3115*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3116*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
3117*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
3118*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
3119*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
3120*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
3121*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
3122*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3123*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
31247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
31257786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
31267786266dSMatt Arsenault;
31277786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_0:
31287786266dSMatt Arsenault; GFX90A:       ; %bb.0:
31297786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31307786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
31317786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
31327786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31337786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3134*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3135*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3136*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
3137*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
3138*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
3139*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
3140*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
3141*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
3142*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3143*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
31447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
31457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
31467786266dSMatt Arsenault;
31477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_0:
31487786266dSMatt Arsenault; GFX940:       ; %bb.0:
31497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
31507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3151*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
3152*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3153*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
31547786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
31557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3156*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3157*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
3158*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3159*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
3160*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
3161*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
31627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3163*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
31647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
31657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
31667786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
31677786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
31687786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 0>
3169*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
31707786266dSMatt Arsenault  ret void
31717786266dSMatt Arsenault}
31727786266dSMatt Arsenault
31737786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_1_1() {
3174*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_1_1:
3175*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3176*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3177*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3178*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
3179*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3180*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
3181*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
3182*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3183*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
3184*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3185*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
31867786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
31877786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 1, i32 1>
3188*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
31897786266dSMatt Arsenault  ret void
31907786266dSMatt Arsenault}
31917786266dSMatt Arsenault
31927786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_1_1() {
3193*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__0_1_1:
3194*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3195*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3196*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3197*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
3198*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3199*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
3200*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
3201*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3202*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
3203*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3204*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
32057786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
32067786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 1, i32 1>
3207*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
32087786266dSMatt Arsenault  ret void
32097786266dSMatt Arsenault}
32107786266dSMatt Arsenault
32117786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_1_1() {
3212*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__1_1_1:
3213*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3214*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3215*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3216*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
3217*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3218*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s8, s10
3219*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s9, s11
3220*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
3221*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
3222*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3223*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
3224*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3225*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
32267786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
32277786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 1, i32 1>
3228*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
32297786266dSMatt Arsenault  ret void
32307786266dSMatt Arsenault}
32317786266dSMatt Arsenault
32327786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_1_1() {
3233*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_1_1:
3234*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3235*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3236*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3237*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
3238*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3239*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
3240*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
3241*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3242*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
3243*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3244*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
32457786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
32467786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 1, i32 1>
3247*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
32487786266dSMatt Arsenault  ret void
32497786266dSMatt Arsenault}
32507786266dSMatt Arsenault
32517786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_1() {
32527786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_1:
32537786266dSMatt Arsenault; GFX900:       ; %bb.0:
32547786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32557786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
32567786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
32577786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3258*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3259*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3260*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32617786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
32627786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3263*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s10
3264*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s11
32657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3266*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
32677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
32687786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
32697786266dSMatt Arsenault;
32707786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_1:
32717786266dSMatt Arsenault; GFX90A:       ; %bb.0:
32727786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32737786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
32747786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
32757786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3276*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3277*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3278*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32797786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
32807786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3281*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s10
3282*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s11
32837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3284*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
32857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
32867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
32877786266dSMatt Arsenault;
32887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_1:
32897786266dSMatt Arsenault; GFX940:       ; %bb.0:
32907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
32917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3292*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
3293*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3294*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
32957786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
32967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3297*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3298*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
3299*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s10
3300*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s11
33017786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3302*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
33037786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33047786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33057786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
33067786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
33077786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 1>
3308*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
33097786266dSMatt Arsenault  ret void
33107786266dSMatt Arsenault}
33117786266dSMatt Arsenault
33127786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_1() {
33137786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_1:
33147786266dSMatt Arsenault; GFX900:       ; %bb.0:
33157786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33167786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33177786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
33187786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33197786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3320*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3321*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3322*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
3323*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
3324*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
3325*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
3326*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3327*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
33287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33297786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33307786266dSMatt Arsenault;
33317786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_1:
33327786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33337786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33347786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33357786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
33367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3338*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3339*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3340*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
3341*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
3342*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
3343*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
3344*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3345*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
33467786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
33477786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
33487786266dSMatt Arsenault;
33497786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_1:
33507786266dSMatt Arsenault; GFX940:       ; %bb.0:
33517786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33537786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
33547786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33557786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
33567786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
33577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3358*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3359*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
3360*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
3361*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
33627786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3363*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
33647786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
33657786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
33667786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
33677786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
33687786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>
3369*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
33707786266dSMatt Arsenault  ret void
33717786266dSMatt Arsenault}
33727786266dSMatt Arsenault
33737786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_1() {
33747786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_1:
33757786266dSMatt Arsenault; GFX900:       ; %bb.0:
33767786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33777786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33787786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
33797786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
33817786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
33827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33837786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s10
33847786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s11
3385*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
3386*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
3387*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
3388*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
33897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3390*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
33917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
33927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
33937786266dSMatt Arsenault;
33947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_1:
33957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
33967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
33977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
33987786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
33997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34007786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34017786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
34027786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34037786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s10
34047786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s11
3405*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
3406*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
3407*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
3408*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
34097786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3410*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
34117786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34127786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34137786266dSMatt Arsenault;
34147786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_1:
34157786266dSMatt Arsenault; GFX940:       ; %bb.0:
34167786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34187786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
34197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34207786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3421*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
3422*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3423*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3424*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
3425*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
3426*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
3427*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
3428*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
3429*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3430*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
34317786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34327786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
34337786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
34347786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
34357786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 1>
3436*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
34377786266dSMatt Arsenault  ret void
34387786266dSMatt Arsenault}
34397786266dSMatt Arsenault
34407786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_1() {
34417786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_1:
34427786266dSMatt Arsenault; GFX900:       ; %bb.0:
34437786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
34457786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
34467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34477786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3448*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3449*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3450*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
3451*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
3452*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s12
3453*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s13
3454*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
3455*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
3456*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3457*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
34587786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
34597786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
34607786266dSMatt Arsenault;
34617786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_1:
34627786266dSMatt Arsenault; GFX90A:       ; %bb.0:
34637786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
34657786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
34667786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3468*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3469*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3470*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
3471*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
3472*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s12
3473*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s13
3474*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
3475*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
3476*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3477*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
34787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
34797786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
34807786266dSMatt Arsenault;
34817786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_1:
34827786266dSMatt Arsenault; GFX940:       ; %bb.0:
34837786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
34847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3485*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
3486*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3487*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
34887786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
34897786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3490*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3491*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
3492*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s4
3493*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s5
3494*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
3495*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
34967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3497*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
34987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
34997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35007786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
35017786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
35027786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 1>
3503*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
35047786266dSMatt Arsenault  ret void
35057786266dSMatt Arsenault}
35067786266dSMatt Arsenault
35077786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_2_2() {
3508*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_2_2:
3509*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3510*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3511*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3512*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
3513*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3514*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
35157786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
35167786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 2, i32 2>
3517*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
35187786266dSMatt Arsenault  ret void
35197786266dSMatt Arsenault}
35207786266dSMatt Arsenault
35217786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_2_2() {
35227786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_2_2:
35237786266dSMatt Arsenault; GFX900:       ; %bb.0:
35247786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35257786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3526*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
35277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35287786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3529*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
35307786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35317786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35327786266dSMatt Arsenault;
35337786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_2_2:
35347786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35357786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35367786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3537*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
35387786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35397786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3540*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
35417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35427786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35437786266dSMatt Arsenault;
35447786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__0_2_2:
35457786266dSMatt Arsenault; GFX940:       ; %bb.0:
35467786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35477786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3548*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
35497786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35507786266dSMatt Arsenault; GFX940-NEXT:    s_nop 0
35517786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3552*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
35537786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35547786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
35557786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
35567786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 2, i32 2>
3557*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
35587786266dSMatt Arsenault  ret void
35597786266dSMatt Arsenault}
35607786266dSMatt Arsenault
35617786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_2_2() {
35627786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_2_2:
35637786266dSMatt Arsenault; GFX900:       ; %bb.0:
35647786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35657786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
35667786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
35677786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3568*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3569*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
35707786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3571*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
35727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
35737786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
35747786266dSMatt Arsenault;
35757786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_2_2:
35767786266dSMatt Arsenault; GFX90A:       ; %bb.0:
35777786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35787786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
35797786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
35807786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3581*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3582*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
35837786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3584*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
35857786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
35867786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
35877786266dSMatt Arsenault;
35887786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__1_2_2:
35897786266dSMatt Arsenault; GFX940:       ; %bb.0:
35907786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35917786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
35927786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
35937786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3594*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3595*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
35967786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3597*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
35987786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
35997786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36007786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
36017786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 2, i32 2>
3602*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
36037786266dSMatt Arsenault  ret void
36047786266dSMatt Arsenault}
36057786266dSMatt Arsenault
36067786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_2_2() {
3607*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_2_2:
3608*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3609*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3610*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3611*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
3612*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3613*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
36147786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
36157786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 2, i32 2>
3616*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
36177786266dSMatt Arsenault  ret void
36187786266dSMatt Arsenault}
36197786266dSMatt Arsenault
36207786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_2() {
36217786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_2:
36227786266dSMatt Arsenault; GFX900:       ; %bb.0:
36237786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36247786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3625*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
36267786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3627*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3628*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3629*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
3630*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
3631*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
3632*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
36337786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3634*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
36357786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36367786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36377786266dSMatt Arsenault;
36387786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_2:
36397786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36407786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36417786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3642*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
36437786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3644*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3645*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3646*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
3647*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
3648*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
3649*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
36507786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3651*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
36527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
36537786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
36547786266dSMatt Arsenault;
36557786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_2:
36567786266dSMatt Arsenault; GFX940:       ; %bb.0:
36577786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36587786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3659*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
36607786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3661*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3662*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
3663*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
3664*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
3665*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
3666*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
36677786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3668*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
36697786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
36707786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
36717786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
36727786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
36737786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 2>
3674*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
36757786266dSMatt Arsenault  ret void
36767786266dSMatt Arsenault}
36777786266dSMatt Arsenault
36787786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_2() {
36797786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_2:
36807786266dSMatt Arsenault; GFX900:       ; %bb.0:
36817786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36827786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3683*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
36847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3685*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3686*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3687*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
3688*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
36897786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3690*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
36917786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
36927786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
36937786266dSMatt Arsenault;
36947786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_2:
36957786266dSMatt Arsenault; GFX90A:       ; %bb.0:
36967786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
36977786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3698*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
36997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3700*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3701*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3702*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
3703*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
37047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3705*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
37067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37087786266dSMatt Arsenault;
37097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_2:
37107786266dSMatt Arsenault; GFX940:       ; %bb.0:
37117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3713*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
37147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3715*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3716*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
3717*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
3718*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
37197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3720*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
37217786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37227786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37237786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
37247786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
37257786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>
3726*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
37277786266dSMatt Arsenault  ret void
37287786266dSMatt Arsenault}
37297786266dSMatt Arsenault
37307786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_2() {
37317786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_2:
37327786266dSMatt Arsenault; GFX900:       ; %bb.0:
37337786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37347786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3735*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
37367786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37377786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37387786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
37397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3740*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
3741*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
3742*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
3743*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
37447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3745*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
37467786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
37477786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
37487786266dSMatt Arsenault;
37497786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_2:
37507786266dSMatt Arsenault; GFX90A:       ; %bb.0:
37517786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37527786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3753*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
37547786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37557786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
37567786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
37577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3758*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
3759*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
3760*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
3761*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
37627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3763*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
37647786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
37657786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
37667786266dSMatt Arsenault;
37677786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_2:
37687786266dSMatt Arsenault; GFX940:       ; %bb.0:
37697786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37707786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3771*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
3772*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3773*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
37747786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
37757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3776*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
3777*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
3778*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
3779*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
3780*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s4
3781*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s5
37827786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3783*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
37847786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
37857786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
37867786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
37877786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
37887786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 2>
3789*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
37907786266dSMatt Arsenault  ret void
37917786266dSMatt Arsenault}
37927786266dSMatt Arsenault
37937786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_2() {
37947786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_2:
37957786266dSMatt Arsenault; GFX900:       ; %bb.0:
37967786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
37977786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
37987786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
37997786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3801*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3802*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3803*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
3804*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3805*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s4
3806*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s5
3807*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3808*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
38097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38107786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38117786266dSMatt Arsenault;
38127786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_2:
38137786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38147786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38157786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38167786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
38177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38187786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3819*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3820*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3821*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
3822*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3823*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s4
3824*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s5
3825*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3826*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
38277786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38287786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
38297786266dSMatt Arsenault;
38307786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_2:
38317786266dSMatt Arsenault; GFX940:       ; %bb.0:
38327786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38337786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3834*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
3835*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3836*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
38377786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
38387786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3839*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3840*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
3841*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s0
3842*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s1
38437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3844*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
38457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
38467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
38477786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
38487786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
38497786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 2>
3850*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
38517786266dSMatt Arsenault  ret void
38527786266dSMatt Arsenault}
38537786266dSMatt Arsenault
38547786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__u_3_3() {
3855*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_3_3:
3856*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3857*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3858*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3859*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
3860*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3861*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
3862*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
3863*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
3864*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
3865*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
3866*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
38677786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
38687786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
38697786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>
3870*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
38717786266dSMatt Arsenault  ret void
38727786266dSMatt Arsenault}
38737786266dSMatt Arsenault
38747786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__0_3_3() {
38757786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_3_3:
38767786266dSMatt Arsenault; GFX900:       ; %bb.0:
38777786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38787786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
38797786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
38807786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38817786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3882*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
3883*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
3884*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s6
3885*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s7
3886*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
3887*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
3888*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3889*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
38907786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
38917786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
38927786266dSMatt Arsenault;
38937786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_3_3:
38947786266dSMatt Arsenault; GFX90A:       ; %bb.0:
38957786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
38967786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
38977786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
38987786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
38997786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3900*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
3901*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
3902*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s6
3903*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s7
3904*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
3905*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
3906*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3907*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
39087786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39097786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39107786266dSMatt Arsenault;
39117786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__0_3_3:
39127786266dSMatt Arsenault; GFX940:       ; %bb.0:
39137786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3915*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
3916*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3917*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39187786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
39197786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3920*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s2
3921*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s3
3922*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
3923*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
39247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3925*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
39267786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39277786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39287786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
39297786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
39307786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 0, i32 3, i32 3>
3931*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
39327786266dSMatt Arsenault  ret void
39337786266dSMatt Arsenault}
39347786266dSMatt Arsenault
39357786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__1_3_3() {
39367786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_3_3:
39377786266dSMatt Arsenault; GFX900:       ; %bb.0:
39387786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39397786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39407786266dSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
39417786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39427786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
39437786266dSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
39447786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39457786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
39467786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
3947*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s10
3948*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s11
39497786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
3950*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
39517786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
39527786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
39537786266dSMatt Arsenault;
39547786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_3_3:
39557786266dSMatt Arsenault; GFX90A:       ; %bb.0:
39567786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39577786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39587786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
39597786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39607786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
39617786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
39627786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39637786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
39647786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
3965*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s10
3966*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s11
39677786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
3968*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
39697786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
39707786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
39717786266dSMatt Arsenault;
39727786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__1_3_3:
39737786266dSMatt Arsenault; GFX940:       ; %bb.0:
39747786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
39757786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3976*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
39777786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39787786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
39797786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
39807786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
3981*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
3982*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
3983*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s10
3984*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s11
39857786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
3986*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
39877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
39887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
39897786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
39907786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
39917786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 1, i32 3, i32 3>
3992*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
39937786266dSMatt Arsenault  ret void
39947786266dSMatt Arsenault}
39957786266dSMatt Arsenault
39967786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__2_3_3() {
3997*585858aeSMatt Arsenault; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_3_3:
3998*585858aeSMatt Arsenault; GFX9:       ; %bb.0:
3999*585858aeSMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4000*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4001*585858aeSMatt Arsenault; GFX9-NEXT:    ; def s[8:11]
4002*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4003*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s12, s10
4004*585858aeSMatt Arsenault; GFX9-NEXT:    s_mov_b32 s13, s11
4005*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMSTART
4006*585858aeSMatt Arsenault; GFX9-NEXT:    ; use s[8:13]
4007*585858aeSMatt Arsenault; GFX9-NEXT:    ;;#ASMEND
4008*585858aeSMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31]
40097786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
40107786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
40117786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 2, i32 3, i32 3>
4012*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
40137786266dSMatt Arsenault  ret void
40147786266dSMatt Arsenault}
40157786266dSMatt Arsenault
40167786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_u_3() {
40177786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_3:
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 s[4:7]
40227786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40237786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
40247786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4025*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
4026*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
40277786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4028*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
40297786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40307786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40317786266dSMatt Arsenault;
40327786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_3:
40337786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40347786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40357786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40367786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
40377786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40387786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
40397786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4040*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
4041*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
40427786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4043*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
40447786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40457786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
40467786266dSMatt Arsenault;
40477786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_u_3:
40487786266dSMatt Arsenault; GFX940:       ; %bb.0:
40497786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40507786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
40517786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
40527786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4053*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4054*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4055*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
4056*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
40577786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4058*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
40597786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
40607786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
40617786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
40627786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
40637786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>
4064*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
40657786266dSMatt Arsenault  ret void
40667786266dSMatt Arsenault}
40677786266dSMatt Arsenault
40687786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_0_3() {
40697786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_3:
40707786266dSMatt Arsenault; GFX900:       ; %bb.0:
40717786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40727786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
40737786266dSMatt Arsenault; GFX900-NEXT:    ; def s[12:15]
40747786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4075*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4076*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4077*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40787786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s14
40797786266dSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s15
4080*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
4081*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
4082*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s14
4083*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s15
40847786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4085*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
40867786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
40877786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
40887786266dSMatt Arsenault;
40897786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_3:
40907786266dSMatt Arsenault; GFX90A:       ; %bb.0:
40917786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
40927786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
40937786266dSMatt Arsenault; GFX90A-NEXT:    ; def s[12:15]
40947786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4095*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4096*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
4097*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
40987786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s14
40997786266dSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s15
4100*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
4101*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
4102*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s14
4103*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s15
41047786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4105*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
41067786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
41077786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
41087786266dSMatt Arsenault;
41097786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_0_3:
41107786266dSMatt Arsenault; GFX940:       ; %bb.0:
41117786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41127786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41137786266dSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
41147786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41157786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
41167786266dSMatt Arsenault; GFX940-NEXT:    ; def s[4:7]
41177786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4118*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s6
4119*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s7
4120*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4121*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
4122*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s6
4123*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s7
41247786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4125*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
4126*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4127*585858aeSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
4128*585858aeSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
4129*585858aeSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
4130*585858aeSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 3>
4131*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
4132*585858aeSMatt Arsenault  ret void
4133*585858aeSMatt Arsenault}
4134*585858aeSMatt Arsenault
4135*585858aeSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_1_3() {
4136*585858aeSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_3:
4137*585858aeSMatt Arsenault; GFX900:       ; %bb.0:
4138*585858aeSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4139*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4140*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[8:11]
4141*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4142*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4143*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
4144*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4145*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4146*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4147*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
4148*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
4149*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4150*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
4151*585858aeSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4152*585858aeSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
4153*585858aeSMatt Arsenault;
4154*585858aeSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_3:
4155*585858aeSMatt Arsenault; GFX90A:       ; %bb.0:
4156*585858aeSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4157*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4158*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[8:11]
4159*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4160*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4161*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
4162*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4163*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4164*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4165*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
4166*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
4167*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4168*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
4169*585858aeSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4170*585858aeSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
4171*585858aeSMatt Arsenault;
4172*585858aeSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_1_3:
4173*585858aeSMatt Arsenault; GFX940:       ; %bb.0:
4174*585858aeSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4175*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4176*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[8:11]
4177*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4178*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4179*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
4180*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4181*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4182*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4183*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
4184*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
4185*585858aeSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4186*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
41877786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
41887786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
41897786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
41907786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
41917786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 3>
4192*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
41937786266dSMatt Arsenault  ret void
41947786266dSMatt Arsenault}
41957786266dSMatt Arsenault
41967786266dSMatt Arsenaultdefine void @s_shuffle_v3p0_v2p0__3_2_3() {
41977786266dSMatt Arsenault; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_3:
41987786266dSMatt Arsenault; GFX900:       ; %bb.0:
41997786266dSMatt Arsenault; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42007786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4201*585858aeSMatt Arsenault; GFX900-NEXT:    ; def s[4:7]
42027786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
4203*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s8, s6
4204*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s9, s7
4205*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s10, s4
4206*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s11, s5
4207*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s12, s6
4208*585858aeSMatt Arsenault; GFX900-NEXT:    s_mov_b32 s13, s7
42097786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMSTART
4210*585858aeSMatt Arsenault; GFX900-NEXT:    ; use s[8:13]
42117786266dSMatt Arsenault; GFX900-NEXT:    ;;#ASMEND
42127786266dSMatt Arsenault; GFX900-NEXT:    s_setpc_b64 s[30:31]
42137786266dSMatt Arsenault;
42147786266dSMatt Arsenault; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_3:
42157786266dSMatt Arsenault; GFX90A:       ; %bb.0:
42167786266dSMatt Arsenault; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42177786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4218*585858aeSMatt Arsenault; GFX90A-NEXT:    ; def s[4:7]
42197786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
4220*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s8, s6
4221*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s9, s7
4222*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s10, s4
4223*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s11, s5
4224*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s12, s6
4225*585858aeSMatt Arsenault; GFX90A-NEXT:    s_mov_b32 s13, s7
42267786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMSTART
4227*585858aeSMatt Arsenault; GFX90A-NEXT:    ; use s[8:13]
42287786266dSMatt Arsenault; GFX90A-NEXT:    ;;#ASMEND
42297786266dSMatt Arsenault; GFX90A-NEXT:    s_setpc_b64 s[30:31]
42307786266dSMatt Arsenault;
42317786266dSMatt Arsenault; GFX940-LABEL: s_shuffle_v3p0_v2p0__3_2_3:
42327786266dSMatt Arsenault; GFX940:       ; %bb.0:
42337786266dSMatt Arsenault; GFX940-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42347786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4235*585858aeSMatt Arsenault; GFX940-NEXT:    ; def s[0:3]
42367786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
4237*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s8, s2
4238*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s9, s3
4239*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s10, s0
4240*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s11, s1
4241*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s12, s2
4242*585858aeSMatt Arsenault; GFX940-NEXT:    s_mov_b32 s13, s3
42437786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMSTART
4244*585858aeSMatt Arsenault; GFX940-NEXT:    ; use s[8:13]
42457786266dSMatt Arsenault; GFX940-NEXT:    ;;#ASMEND
42467786266dSMatt Arsenault; GFX940-NEXT:    s_setpc_b64 s[30:31]
42477786266dSMatt Arsenault  %vec0 = call <2 x ptr> asm "; def $0", "=s"()
42487786266dSMatt Arsenault  %vec1 = call <2 x ptr> asm "; def $0", "=s"()
42497786266dSMatt Arsenault  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 3>
4250*585858aeSMatt Arsenault  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)
42517786266dSMatt Arsenault  ret void
42527786266dSMatt Arsenault}
42537786266dSMatt Arsenault;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
42547786266dSMatt Arsenault; GFX90APLUS: {{.*}}
4255